six-updater-web 0.10.8 → 0.11.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (742) hide show
  1. data/Rakefile +8 -6
  2. data/bin/six-updater-web +1 -1
  3. data/lib/README +243 -0
  4. data/lib/Rakefile +10 -0
  5. data/lib/app/controllers/actions_controller.rb +23 -0
  6. data/lib/app/controllers/application_controller.rb +20 -0
  7. data/lib/app/controllers/appsettings_controller.rb +40 -0
  8. data/lib/app/controllers/logs_controller.rb +5 -0
  9. data/lib/app/controllers/logsessions_controller.rb +5 -0
  10. data/lib/app/controllers/logviews_controller.rb +52 -0
  11. data/lib/app/controllers/main_controller.rb +432 -0
  12. data/lib/app/controllers/mods_controller.rb +48 -0
  13. data/lib/app/controllers/queryservers_controller.rb +42 -0
  14. data/lib/app/controllers/repositories_controller.rb +16 -0
  15. data/lib/app/controllers/servers_controller.rb +34 -0
  16. data/lib/app/controllers/sixconfigs_controller.rb +33 -0
  17. data/lib/app/controllers/system_settings_controller.rb +5 -0
  18. data/lib/app/helpers/actions_helper.rb +2 -0
  19. data/lib/app/helpers/application_helper.rb +13 -0
  20. data/lib/app/helpers/appsettings_helper.rb +17 -0
  21. data/lib/app/helpers/logs_helper.rb +2 -0
  22. data/lib/app/helpers/logsessions_helper.rb +2 -0
  23. data/lib/app/helpers/logviews_helper.rb +5 -0
  24. data/lib/app/helpers/main_helper.rb +2 -0
  25. data/lib/app/helpers/mods_helper.rb +5 -0
  26. data/lib/app/helpers/queryservers_helper.rb +8 -0
  27. data/lib/app/helpers/repositories_helper.rb +2 -0
  28. data/lib/app/helpers/servers_helper.rb +13 -0
  29. data/lib/app/helpers/sixconfigs_helper.rb +5 -0
  30. data/lib/app/helpers/system_settings_helper.rb +2 -0
  31. data/lib/app/models/action.rb +5 -0
  32. data/lib/app/models/appsetting.rb +18 -0
  33. data/lib/app/models/log.rb +3 -0
  34. data/lib/app/models/log_observer.rb +23 -0
  35. data/lib/app/models/logsession.rb +3 -0
  36. data/lib/app/models/mod.rb +96 -0
  37. data/lib/app/models/queryserver.rb +167 -0
  38. data/lib/app/models/repository.rb +11 -0
  39. data/lib/app/models/server.rb +25 -0
  40. data/lib/app/models/sixconfig.rb +185 -0
  41. data/lib/app/models/system_setting.rb +77 -0
  42. data/lib/app/views/Repositories/imp.erb +1 -0
  43. data/lib/app/views/appsettings/manage.erb +4 -0
  44. data/lib/app/views/layouts/application.haml +48 -0
  45. data/lib/app/views/layouts/empty.haml +2 -0
  46. data/lib/app/views/logviews/_logs.erb +1 -0
  47. data/lib/app/views/logviews/upd.rjs +1 -0
  48. data/lib/app/views/main/_check.haml +18 -0
  49. data/lib/app/views/main/execute.haml +24 -0
  50. data/lib/app/views/main/fetch.haml +2 -0
  51. data/lib/app/views/main/index.haml +100 -0
  52. data/lib/app/views/main/logoutput.erb +6 -0
  53. data/lib/app/views/main/modlogs.erb +5 -0
  54. data/lib/app/views/main/reset.erb +40 -0
  55. data/lib/app/views/main/reset_act.haml +1 -0
  56. data/lib/app/views/mods/imp.haml +1 -0
  57. data/lib/app/views/servers/imp.erb +1 -0
  58. data/lib/config/GeoIP.dat +0 -0
  59. data/lib/config/boot.rb +110 -0
  60. data/lib/config/database.yml +34 -0
  61. data/lib/config/database.yml.sample +34 -0
  62. data/lib/config/environment.rb +59 -0
  63. data/lib/config/environments/development.rb +17 -0
  64. data/lib/config/environments/production.rb +28 -0
  65. data/lib/config/environments/test.rb +28 -0
  66. data/lib/config/gslist.cfg +3229 -0
  67. data/lib/config/initializers/backtrace_silencers.rb +7 -0
  68. data/lib/config/initializers/inflections.rb +10 -0
  69. data/lib/config/initializers/mime_types.rb +5 -0
  70. data/lib/config/initializers/new_rails_defaults.rb +19 -0
  71. data/lib/config/initializers/session_store.rb +15 -0
  72. data/lib/config/locales/en.yml +5 -0
  73. data/lib/config/routes.rb +43 -0
  74. data/lib/config/six-updater-web.rb +221 -0
  75. data/lib/db/migrate/20090826185820_create_repositories.rb +18 -0
  76. data/lib/db/migrate/20090826185836_create_mods.rb +23 -0
  77. data/lib/db/migrate/20090826185847_create_servers.rb +22 -0
  78. data/lib/db/migrate/20090826185930_create_appsettings.rb +21 -0
  79. data/lib/db/migrate/20090826190008_create_sixconfigs.rb +16 -0
  80. data/lib/db/migrate/20090829165545_create_actions.rb +18 -0
  81. data/lib/db/migrate/20090829165546_add_logpath_to_appsetting.rb +9 -0
  82. data/lib/db/migrate/20090829165547_change_columns_appsettings.rb +10 -0
  83. data/lib/db/migrate/20090916174120_create_logs.rb +14 -0
  84. data/lib/db/migrate/20090916174333_create_logsessions.rb +13 -0
  85. data/lib/db/migrate/20090921092253_create_sessions.rb +16 -0
  86. data/lib/db/migrate/20090921165547_change_columns.rb +46 -0
  87. data/lib/db/migrate/20090928163554_create_system_settings.rb +14 -0
  88. data/lib/db/migrate/20090928163555_change_columns_mods.rb +11 -0
  89. data/lib/db/migrate/20090928163556_change2_columns_mods.rb +11 -0
  90. data/lib/db/migrate/20090928163558_change_columns_repositories.rb +11 -0
  91. data/lib/db/migrate/20090928163559_change_columns_system_settings.rb +9 -0
  92. data/lib/db/migrate/20090928163560_change2_columns_system_settings.rb +9 -0
  93. data/lib/db/migrate/20090928163561_change2_columns.rb +46 -0
  94. data/lib/db/migrate/20090928163562_change3_columns_system_settings.rb +17 -0
  95. data/lib/db/migrate/20090928163563_change2_columns_appsettings.rb +9 -0
  96. data/lib/db/migrate/20100327164004_create_queryservers.rb +18 -0
  97. data/lib/db/migrate/20100404150547_add_fields_to_queryservers.rb +35 -0
  98. data/lib/db/migrate/20100404152436_create_mods_queryservers.rb +11 -0
  99. data/lib/db/migrate/20100405142958_add_saved_password_to_queryservers.rb +9 -0
  100. data/lib/db/migrate/20100405142959_change_mods_queryservers_id.rb +9 -0
  101. data/lib/db/migrate/20100405142960_add_gamespied_at_to_system_settings.rb +9 -0
  102. data/lib/db/migrate/20100409114653_add_priority_and_path_to_mods.rb +11 -0
  103. data/lib/db/schema.rb +289 -0
  104. data/lib/doc/README_FOR_APP +2 -0
  105. data/lib/init.rb +74 -0
  106. data/lib/lib/tasks/fixtures.rake +33 -0
  107. data/lib/lib/tasks/sync.rake +51 -0
  108. data/lib/log/production.log +1 -0
  109. data/lib/public/404.html +30 -0
  110. data/lib/public/422.html +30 -0
  111. data/lib/public/500.html +30 -0
  112. data/lib/public/blank.html +33 -0
  113. data/lib/public/favicon.ico +0 -0
  114. data/lib/public/goldberg/images/action.png +0 -0
  115. data/lib/public/goldberg/images/add.png +0 -0
  116. data/lib/public/goldberg/images/blockquote-bg.gif +0 -0
  117. data/lib/public/goldberg/images/body-bg.jpg +0 -0
  118. data/lib/public/goldberg/images/centerColumn-bg.jpg +0 -0
  119. data/lib/public/goldberg/images/daddy_leftarrow.gif +0 -0
  120. data/lib/public/goldberg/images/delete.png +0 -0
  121. data/lib/public/goldberg/images/down.png +0 -0
  122. data/lib/public/goldberg/images/h2-bg.gif +0 -0
  123. data/lib/public/goldberg/images/h3-bg.gif +0 -0
  124. data/lib/public/goldberg/images/header-bg.jpg +0 -0
  125. data/lib/public/goldberg/images/hr-bg.jpg +0 -0
  126. data/lib/public/goldberg/images/logo.jpg +0 -0
  127. data/lib/public/goldberg/images/page.png +0 -0
  128. data/lib/public/goldberg/images/permission.png +0 -0
  129. data/lib/public/goldberg/images/role.png +0 -0
  130. data/lib/public/goldberg/images/up.png +0 -0
  131. data/lib/public/goldberg/javascripts/suckerfish.js +12 -0
  132. data/lib/public/goldberg/stylesheets/goldberg.css +142 -0
  133. data/lib/public/goldberg/stylesheets/layout.css +433 -0
  134. data/lib/public/goldberg/stylesheets/suckerfish.css +124 -0
  135. data/lib/public/images/active_scaffold/DO_NOT_EDIT +2 -0
  136. data/lib/public/images/active_scaffold/default/add.gif +0 -0
  137. data/lib/public/images/active_scaffold/default/arrow_down.gif +0 -0
  138. data/lib/public/images/active_scaffold/default/arrow_refresh.png +0 -0
  139. data/lib/public/images/active_scaffold/default/arrow_up.gif +0 -0
  140. data/lib/public/images/active_scaffold/default/close.gif +0 -0
  141. data/lib/public/images/active_scaffold/default/cross.png +0 -0
  142. data/lib/public/images/active_scaffold/default/customize_tool.png +0 -0
  143. data/lib/public/images/active_scaffold/default/export_tool.png +0 -0
  144. data/lib/public/images/active_scaffold/default/indicator-small.gif +0 -0
  145. data/lib/public/images/active_scaffold/default/indicator.gif +0 -0
  146. data/lib/public/images/active_scaffold/default/magnifier.png +0 -0
  147. data/lib/public/images/active_scaffold/default/printer_tool.png +0 -0
  148. data/lib/public/images/rails.png +0 -0
  149. data/lib/public/images/record_select/cross.gif +0 -0
  150. data/lib/public/images/record_select/next.gif +0 -0
  151. data/lib/public/images/record_select/previous.gif +0 -0
  152. data/lib/public/images/top.png +0 -0
  153. data/lib/public/javascripts/active_scaffold/DO_NOT_EDIT +2 -0
  154. data/lib/public/javascripts/active_scaffold/default/active_scaffold.js +517 -0
  155. data/lib/public/javascripts/active_scaffold/default/advanced_search.js +54 -0
  156. data/lib/public/javascripts/active_scaffold/default/dhtml_history.js +867 -0
  157. data/lib/public/javascripts/active_scaffold/default/form_enhancements.js +117 -0
  158. data/lib/public/javascripts/active_scaffold/default/number_formats.js +167 -0
  159. data/lib/public/javascripts/active_scaffold/default/rico_corner.js +370 -0
  160. data/lib/public/javascripts/application.js +2 -0
  161. data/lib/public/javascripts/controls.js +963 -0
  162. data/lib/public/javascripts/dragdrop.js +973 -0
  163. data/lib/public/javascripts/effects.js +1128 -0
  164. data/lib/public/javascripts/prototype.js +4320 -0
  165. data/lib/public/javascripts/record_select/record_select.js +352 -0
  166. data/lib/public/robots.txt +5 -0
  167. data/lib/public/stylesheets/active_scaffold/DO_NOT_EDIT +2 -0
  168. data/lib/public/stylesheets/active_scaffold/default/advanced_search.css +11 -0
  169. data/lib/public/stylesheets/active_scaffold/default/stylesheet-ie.css +50 -0
  170. data/lib/public/stylesheets/active_scaffold/default/stylesheet.css +1059 -0
  171. data/lib/public/stylesheets/active_scaffold/default/tools-left-handed-stylesheet-ie.css +11 -0
  172. data/lib/public/stylesheets/active_scaffold/default/tools-left-handed-stylesheet.css +68 -0
  173. data/lib/public/stylesheets/record_select/record_select.css +129 -0
  174. data/lib/script/about +4 -0
  175. data/lib/script/console +3 -0
  176. data/lib/script/dbconsole +3 -0
  177. data/lib/script/destroy +3 -0
  178. data/lib/script/generate +3 -0
  179. data/lib/script/performance/benchmarker +3 -0
  180. data/lib/script/performance/profiler +3 -0
  181. data/lib/script/plugin +3 -0
  182. data/lib/script/runner +3 -0
  183. data/lib/script/server +3 -0
  184. data/lib/test/functional/actions_controller_test.rb +8 -0
  185. data/lib/test/functional/configs_controller_test.rb +8 -0
  186. data/lib/test/functional/logs_controller_test.rb +8 -0
  187. data/lib/test/functional/logsessions_controller_test.rb +8 -0
  188. data/lib/test/functional/logviews_controller_test.rb +8 -0
  189. data/lib/test/functional/main_controller_test.rb +8 -0
  190. data/lib/test/functional/mods_controller_test.rb +8 -0
  191. data/lib/test/functional/queryservers_controller_test.rb +8 -0
  192. data/lib/test/functional/repositories_controller_test.rb +8 -0
  193. data/lib/test/functional/servers_controller_test.rb +8 -0
  194. data/lib/test/functional/settings_controller_test.rb +8 -0
  195. data/lib/test/functional/system_settings_controller_test.rb +8 -0
  196. data/lib/test/performance/browsing_test.rb +9 -0
  197. data/lib/test/test_helper.rb +38 -0
  198. data/lib/test/unit/action_test.rb +8 -0
  199. data/lib/test/unit/config_test.rb +8 -0
  200. data/lib/test/unit/helpers/actions_helper_test.rb +4 -0
  201. data/lib/test/unit/helpers/configs_helper_test.rb +4 -0
  202. data/lib/test/unit/helpers/logs_helper_test.rb +4 -0
  203. data/lib/test/unit/helpers/logsessions_helper_test.rb +4 -0
  204. data/lib/test/unit/helpers/logviews_helper_test.rb +4 -0
  205. data/lib/test/unit/helpers/main_helper_test.rb +4 -0
  206. data/lib/test/unit/helpers/mods_helper_test.rb +4 -0
  207. data/lib/test/unit/helpers/queryservers_helper_test.rb +4 -0
  208. data/lib/test/unit/helpers/repositories_helper_test.rb +4 -0
  209. data/lib/test/unit/helpers/servers_helper_test.rb +4 -0
  210. data/lib/test/unit/helpers/settings_helper_test.rb +4 -0
  211. data/lib/test/unit/helpers/system_settings_helper_test.rb +4 -0
  212. data/lib/test/unit/log_test.rb +8 -0
  213. data/lib/test/unit/logsession_test.rb +8 -0
  214. data/lib/test/unit/mod_test.rb +8 -0
  215. data/lib/test/unit/queryserver_test.rb +8 -0
  216. data/lib/test/unit/repository_test.rb +8 -0
  217. data/lib/test/unit/server_test.rb +8 -0
  218. data/lib/test/unit/setting_test.rb +8 -0
  219. data/lib/test/unit/system_setting_test.rb +8 -0
  220. data/lib/vendor/plugins/active_scaffold/CHANGELOG +152 -0
  221. data/lib/vendor/plugins/active_scaffold/MIT-LICENSE +20 -0
  222. data/lib/vendor/plugins/active_scaffold/README +128 -0
  223. data/lib/vendor/plugins/active_scaffold/Rakefile +24 -0
  224. data/lib/vendor/plugins/active_scaffold/environment.rb +20 -0
  225. data/lib/vendor/plugins/active_scaffold/frontends/default/images/add.gif +0 -0
  226. data/lib/vendor/plugins/active_scaffold/frontends/default/images/arrow_down.gif +0 -0
  227. data/lib/vendor/plugins/active_scaffold/frontends/default/images/arrow_refresh.png +0 -0
  228. data/lib/vendor/plugins/active_scaffold/frontends/default/images/arrow_up.gif +0 -0
  229. data/lib/vendor/plugins/active_scaffold/frontends/default/images/close.gif +0 -0
  230. data/lib/vendor/plugins/active_scaffold/frontends/default/images/cross.png +0 -0
  231. data/lib/vendor/plugins/active_scaffold/frontends/default/images/customize_tool.png +0 -0
  232. data/lib/vendor/plugins/active_scaffold/frontends/default/images/export_tool.png +0 -0
  233. data/lib/vendor/plugins/active_scaffold/frontends/default/images/indicator-small.gif +0 -0
  234. data/lib/vendor/plugins/active_scaffold/frontends/default/images/indicator.gif +0 -0
  235. data/lib/vendor/plugins/active_scaffold/frontends/default/images/magnifier.png +0 -0
  236. data/lib/vendor/plugins/active_scaffold/frontends/default/images/printer_tool.png +0 -0
  237. data/lib/vendor/plugins/active_scaffold/frontends/default/javascripts/active_scaffold.js +517 -0
  238. data/lib/vendor/plugins/active_scaffold/frontends/default/javascripts/dhtml_history.js +867 -0
  239. data/lib/vendor/plugins/active_scaffold/frontends/default/javascripts/form_enhancements.js +117 -0
  240. data/lib/vendor/plugins/active_scaffold/frontends/default/javascripts/number_formats.js +167 -0
  241. data/lib/vendor/plugins/active_scaffold/frontends/default/javascripts/rico_corner.js +370 -0
  242. data/lib/vendor/plugins/active_scaffold/frontends/default/stylesheets/stylesheet-ie.css +50 -0
  243. data/lib/vendor/plugins/active_scaffold/frontends/default/stylesheets/stylesheet.css +1059 -0
  244. data/lib/vendor/plugins/active_scaffold/frontends/default/stylesheets/tools-left-handed-stylesheet-ie.css +11 -0
  245. data/lib/vendor/plugins/active_scaffold/frontends/default/stylesheets/tools-left-handed-stylesheet.css +68 -0
  246. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_add_existing_form.html.erb +36 -0
  247. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_create_form.html.erb +57 -0
  248. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_create_form_on_list.html.erb +45 -0
  249. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_create_form_submit.html.erb +2 -0
  250. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_export_csv.html.erb +20 -0
  251. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_field_search.html.erb +58 -0
  252. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_form.html.erb +23 -0
  253. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_form_association.html.erb +12 -0
  254. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_form_association_footer.html.erb +43 -0
  255. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_form_attribute.html.erb +24 -0
  256. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_form_hidden_attribute.html.erb +1 -0
  257. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_form_messages.html.erb +5 -0
  258. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_horizontal_subform.html.erb +19 -0
  259. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_horizontal_subform_header.html.erb +10 -0
  260. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_horizontal_subform_record.html.erb +29 -0
  261. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list.html.erb +43 -0
  262. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_actions.html.erb +29 -0
  263. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_calculations.html.erb +43 -0
  264. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_column_headings.html.erb +64 -0
  265. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_header.html.erb +29 -0
  266. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_inline_adapter.html.erb +11 -0
  267. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_pagination_links.html.erb +30 -0
  268. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_record.html.erb +32 -0
  269. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_record_actions.html.erb +5 -0
  270. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_list_record_columns.html.erb +20 -0
  271. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_live_search.html.erb +23 -0
  272. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_messages.html.erb +10 -0
  273. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_nested.html.erb +45 -0
  274. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_print_list.html.erb +22 -0
  275. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_revision.html.erb +11 -0
  276. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_revision_columns.html.erb +62 -0
  277. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_search.html.erb +21 -0
  278. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_show.html.erb +8 -0
  279. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_show_columns.html.erb +19 -0
  280. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_show_customize.html.erb +27 -0
  281. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_show_export_tool.html.erb +17 -0
  282. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_update_actions.html.erb +9 -0
  283. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_update_form.html.erb +61 -0
  284. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_update_form_submit.html.erb +2 -0
  285. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_vertical_subform.html.erb +12 -0
  286. data/lib/vendor/plugins/active_scaffold/frontends/default/views/_vertical_subform_record.html.erb +31 -0
  287. data/lib/vendor/plugins/active_scaffold/frontends/default/views/add_existing.js.rjs +16 -0
  288. data/lib/vendor/plugins/active_scaffold/frontends/default/views/add_existing_form.html.erb +5 -0
  289. data/lib/vendor/plugins/active_scaffold/frontends/default/views/copy.rjs +4 -0
  290. data/lib/vendor/plugins/active_scaffold/frontends/default/views/create.html.erb +5 -0
  291. data/lib/vendor/plugins/active_scaffold/frontends/default/views/delete.html.erb +13 -0
  292. data/lib/vendor/plugins/active_scaffold/frontends/default/views/destroy.js.rjs +10 -0
  293. data/lib/vendor/plugins/active_scaffold/frontends/default/views/edit_associated.js.rjs +14 -0
  294. data/lib/vendor/plugins/active_scaffold/frontends/default/views/field_search.html.erb +5 -0
  295. data/lib/vendor/plugins/active_scaffold/frontends/default/views/form_messages.js.rjs +1 -0
  296. data/lib/vendor/plugins/active_scaffold/frontends/default/views/form_messages_on_save.js.rjs +10 -0
  297. data/lib/vendor/plugins/active_scaffold/frontends/default/views/latest.rjs +2 -0
  298. data/lib/vendor/plugins/active_scaffold/frontends/default/views/list.html.erb +48 -0
  299. data/lib/vendor/plugins/active_scaffold/frontends/default/views/on_create.js.rjs +25 -0
  300. data/lib/vendor/plugins/active_scaffold/frontends/default/views/on_update.js.rjs +11 -0
  301. data/lib/vendor/plugins/active_scaffold/frontends/default/views/print_list.prawn +26 -0
  302. data/lib/vendor/plugins/active_scaffold/frontends/default/views/refresh_list.js.rjs +6 -0
  303. data/lib/vendor/plugins/active_scaffold/frontends/default/views/refresh_record.js.rjs +2 -0
  304. data/lib/vendor/plugins/active_scaffold/frontends/default/views/render_field.js.rjs +9 -0
  305. data/lib/vendor/plugins/active_scaffold/frontends/default/views/revision.html.erb +5 -0
  306. data/lib/vendor/plugins/active_scaffold/frontends/default/views/search.html.erb +5 -0
  307. data/lib/vendor/plugins/active_scaffold/frontends/default/views/show.html.erb +5 -0
  308. data/lib/vendor/plugins/active_scaffold/frontends/default/views/show_customize.html.erb +5 -0
  309. data/lib/vendor/plugins/active_scaffold/frontends/default/views/show_export_tool.html.erb +5 -0
  310. data/lib/vendor/plugins/active_scaffold/frontends/default/views/update.html.erb +8 -0
  311. data/lib/vendor/plugins/active_scaffold/frontends/default/views/update_column.js.rjs +12 -0
  312. data/lib/vendor/plugins/active_scaffold/init.rb +18 -0
  313. data/lib/vendor/plugins/active_scaffold/install.rb +39 -0
  314. data/lib/vendor/plugins/active_scaffold/install_assets.rb +36 -0
  315. data/lib/vendor/plugins/active_scaffold/lib/active_record_permissions.rb +136 -0
  316. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold.rb +215 -0
  317. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/core.rb +142 -0
  318. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/create.rb +160 -0
  319. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/customize.rb +59 -0
  320. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/delete.rb +72 -0
  321. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/export_tool.rb +49 -0
  322. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/field_search.rb +82 -0
  323. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/list.rb +119 -0
  324. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/live_search.rb +59 -0
  325. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/nested.rb +219 -0
  326. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/print_base.rb +23 -0
  327. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/print_list.rb +44 -0
  328. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/refresh.rb +31 -0
  329. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/revision.rb +51 -0
  330. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/search.rb +50 -0
  331. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/show.rb +54 -0
  332. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/subform.rb +17 -0
  333. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/actions/update.rb +128 -0
  334. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/attribute_params.rb +196 -0
  335. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/base.rb +45 -0
  336. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/core.rb +263 -0
  337. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/create.rb +43 -0
  338. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/customize.rb +34 -0
  339. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/delete.rb +25 -0
  340. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/export_tool.rb +52 -0
  341. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/field_search.rb +53 -0
  342. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/form.rb +49 -0
  343. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/list.rb +142 -0
  344. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/live_search.rb +52 -0
  345. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/nested.rb +34 -0
  346. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/print_base.rb +40 -0
  347. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/print_list.rb +52 -0
  348. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/refresh.rb +22 -0
  349. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/revision.rb +39 -0
  350. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/search.rb +52 -0
  351. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/show.rb +36 -0
  352. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/subform.rb +40 -0
  353. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/config/update.rb +32 -0
  354. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/configurable.rb +29 -0
  355. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/constraints.rb +181 -0
  356. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/action_columns.rb +97 -0
  357. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/action_link.rb +140 -0
  358. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/action_links.rb +47 -0
  359. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/actions.rb +45 -0
  360. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/column.rb +343 -0
  361. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/columns.rb +75 -0
  362. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/error_message.rb +24 -0
  363. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/set.rb +62 -0
  364. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/data_structures/sorting.rb +159 -0
  365. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/finder.rb +331 -0
  366. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/active_scaffold_generator.rb +348 -0
  367. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/controller_methods.rb +36 -0
  368. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/controller_scaffolding.rhtml +10 -0
  369. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/fixtures.yml +5 -0
  370. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/form.rhtml +3 -0
  371. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/form_scaffolding.rhtml +1 -0
  372. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/functional_test.rb +45 -0
  373. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/helper.rb +2 -0
  374. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/model.rb +3 -0
  375. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/model_scaffolding.rhtml +90 -0
  376. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/show.rhtml +8 -0
  377. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/show_scaffolding.rhtml +1 -0
  378. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/generators/active_scaffold/templates/unit_test.rb +5 -0
  379. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/association_helpers.rb +40 -0
  380. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/controller_helpers.rb +41 -0
  381. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/country_helpers.rb +365 -0
  382. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/form_column_helpers.rb +484 -0
  383. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/id_helpers.rb +152 -0
  384. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/list_column_helpers.rb +397 -0
  385. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/number_helpers.rb +143 -0
  386. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/pagination_helpers.rb +39 -0
  387. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/search_column_helpers.rb +279 -0
  388. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/show_column_helpers.rb +46 -0
  389. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/helpers/view_helpers.rb +227 -0
  390. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/locale/en-countries.yml +247 -0
  391. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/locale/en.rb +68 -0
  392. data/lib/vendor/plugins/active_scaffold/lib/active_scaffold/search.rb +21 -0
  393. data/lib/vendor/plugins/active_scaffold/lib/bridges/bridge.rb +52 -0
  394. data/lib/vendor/plugins/active_scaffold/lib/bridges/calendar_date_select/bridge.rb +11 -0
  395. data/lib/vendor/plugins/active_scaffold/lib/bridges/calendar_date_select/lib/as_cds_bridge.rb +135 -0
  396. data/lib/vendor/plugins/active_scaffold/lib/bridges/checkbox.rb +21 -0
  397. data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/bridge.rb +12 -0
  398. data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/as_file_column_bridge.rb +75 -0
  399. data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/file_column_helpers.rb +51 -0
  400. data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/form_ui.rb +33 -0
  401. data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/lib/list_ui.rb +42 -0
  402. data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/test/functional/file_column_keep_test.rb +43 -0
  403. data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/test/mock_model.rb +9 -0
  404. data/lib/vendor/plugins/active_scaffold/lib/bridges/file_column/test/test_helper.rb +15 -0
  405. data/lib/vendor/plugins/active_scaffold/lib/bridges/tiny_mce/bridge.rb +5 -0
  406. data/lib/vendor/plugins/active_scaffold/lib/bridges/tiny_mce/lib/tiny_mce_bridge.rb +45 -0
  407. data/lib/vendor/plugins/active_scaffold/lib/dhtml_confirm.rb +54 -0
  408. data/lib/vendor/plugins/active_scaffold/lib/extensions/action_controller_rendering.rb +20 -0
  409. data/lib/vendor/plugins/active_scaffold/lib/extensions/action_view_rendering.rb +88 -0
  410. data/lib/vendor/plugins/active_scaffold/lib/extensions/array.rb +7 -0
  411. data/lib/vendor/plugins/active_scaffold/lib/extensions/component_response_with_namespacing.rb +17 -0
  412. data/lib/vendor/plugins/active_scaffold/lib/extensions/generic_view_paths.rb +33 -0
  413. data/lib/vendor/plugins/active_scaffold/lib/extensions/java_script_macros_helper.rb +152 -0
  414. data/lib/vendor/plugins/active_scaffold/lib/extensions/localize.rb +11 -0
  415. data/lib/vendor/plugins/active_scaffold/lib/extensions/name_option_for_datetime.rb +12 -0
  416. data/lib/vendor/plugins/active_scaffold/lib/extensions/nil_id_in_url_params.rb +7 -0
  417. data/lib/vendor/plugins/active_scaffold/lib/extensions/resources.rb +27 -0
  418. data/lib/vendor/plugins/active_scaffold/lib/extensions/reverse_associations.rb +56 -0
  419. data/lib/vendor/plugins/active_scaffold/lib/extensions/schema_definitions.rb +15 -0
  420. data/lib/vendor/plugins/active_scaffold/lib/extensions/to_label.rb +8 -0
  421. data/lib/vendor/plugins/active_scaffold/lib/extensions/unsaved_associated.rb +61 -0
  422. data/lib/vendor/plugins/active_scaffold/lib/extensions/unsaved_record.rb +20 -0
  423. data/lib/vendor/plugins/active_scaffold/lib/extensions/usa_state.rb +46 -0
  424. data/lib/vendor/plugins/active_scaffold/lib/paginator.rb +136 -0
  425. data/lib/vendor/plugins/active_scaffold/lib/responds_to_parent.rb +68 -0
  426. data/lib/vendor/plugins/active_scaffold/public/blank.html +33 -0
  427. data/lib/vendor/plugins/active_scaffold/test/bridges/bridge_test.rb +47 -0
  428. data/lib/vendor/plugins/active_scaffold/test/config/create_test.rb +55 -0
  429. data/lib/vendor/plugins/active_scaffold/test/config/list_test.rb +74 -0
  430. data/lib/vendor/plugins/active_scaffold/test/config/update_test.rb +17 -0
  431. data/lib/vendor/plugins/active_scaffold/test/const_mocker.rb +36 -0
  432. data/lib/vendor/plugins/active_scaffold/test/data_structures/action_columns_test.rb +119 -0
  433. data/lib/vendor/plugins/active_scaffold/test/data_structures/action_link_test.rb +78 -0
  434. data/lib/vendor/plugins/active_scaffold/test/data_structures/action_links_test.rb +78 -0
  435. data/lib/vendor/plugins/active_scaffold/test/data_structures/actions_test.rb +25 -0
  436. data/lib/vendor/plugins/active_scaffold/test/data_structures/association_column_test.rb +41 -0
  437. data/lib/vendor/plugins/active_scaffold/test/data_structures/column_test.rb +161 -0
  438. data/lib/vendor/plugins/active_scaffold/test/data_structures/columns_test.rb +69 -0
  439. data/lib/vendor/plugins/active_scaffold/test/data_structures/error_message_test.rb +28 -0
  440. data/lib/vendor/plugins/active_scaffold/test/data_structures/set_test.rb +86 -0
  441. data/lib/vendor/plugins/active_scaffold/test/data_structures/sorting_test.rb +96 -0
  442. data/lib/vendor/plugins/active_scaffold/test/data_structures/standard_column_test.rb +34 -0
  443. data/lib/vendor/plugins/active_scaffold/test/data_structures/virtual_column_test.rb +34 -0
  444. data/lib/vendor/plugins/active_scaffold/test/extensions/active_record_test.rb +45 -0
  445. data/lib/vendor/plugins/active_scaffold/test/extensions/array.rb +12 -0
  446. data/lib/vendor/plugins/active_scaffold/test/misc/active_record_permissions.rb +154 -0
  447. data/lib/vendor/plugins/active_scaffold/test/misc/configurable_test.rb +96 -0
  448. data/lib/vendor/plugins/active_scaffold/test/misc/constraints_test.rb +175 -0
  449. data/lib/vendor/plugins/active_scaffold/test/misc/finder_test.rb +70 -0
  450. data/lib/vendor/plugins/active_scaffold/test/misc/lang_test.rb +12 -0
  451. data/lib/vendor/plugins/active_scaffold/test/model_stub.rb +39 -0
  452. data/lib/vendor/plugins/active_scaffold/test/render_component/abstract_unit.rb +8 -0
  453. data/lib/vendor/plugins/active_scaffold/test/render_component/components_test.rb +140 -0
  454. data/lib/vendor/plugins/active_scaffold/test/run_all.rb +8 -0
  455. data/lib/vendor/plugins/active_scaffold/test/test_helper.rb +13 -0
  456. data/lib/vendor/plugins/active_scaffold/things.todo +55 -0
  457. data/lib/vendor/plugins/active_scaffold/uninstall.rb +13 -0
  458. data/lib/vendor/plugins/activescaffold_advanced_search/README +1 -0
  459. data/lib/vendor/plugins/activescaffold_advanced_search/README.markdown +39 -0
  460. data/lib/vendor/plugins/activescaffold_advanced_search/app/views/active_scaffold_overrides/_advanced_search.rhtml +41 -0
  461. data/lib/vendor/plugins/activescaffold_advanced_search/frontends/default/javascripts/advanced_search.js +54 -0
  462. data/lib/vendor/plugins/activescaffold_advanced_search/frontends/default/stylesheets/advanced_search.css +11 -0
  463. data/lib/vendor/plugins/activescaffold_advanced_search/init.rb +22 -0
  464. data/lib/vendor/plugins/activescaffold_advanced_search/install.rb +50 -0
  465. data/lib/vendor/plugins/activescaffold_advanced_search/lib/actions/advanced_search.rb +62 -0
  466. data/lib/vendor/plugins/activescaffold_advanced_search/lib/advanced_finder.rb +101 -0
  467. data/lib/vendor/plugins/activescaffold_advanced_search/lib/config/advanced_search.rb +48 -0
  468. data/lib/vendor/plugins/activescaffold_advanced_search/lib/config/core.rb +23 -0
  469. data/lib/vendor/plugins/activescaffold_advanced_search/lib/helpers/advanced_search_helpers.rb +19 -0
  470. data/lib/vendor/plugins/activescaffold_advanced_search/lib/helpers/view_helpers.rb +20 -0
  471. data/lib/vendor/plugins/activescaffold_advanced_search/uninstall.rb.rb +2 -0
  472. data/lib/vendor/plugins/goldberg/README.rdoc +36 -0
  473. data/lib/vendor/plugins/goldberg/app/controllers/goldberg/auth_controller.rb +97 -0
  474. data/lib/vendor/plugins/goldberg/app/controllers/goldberg/content_pages_controller.rb +197 -0
  475. data/lib/vendor/plugins/goldberg/app/controllers/goldberg/controller_actions_controller.rb +130 -0
  476. data/lib/vendor/plugins/goldberg/app/controllers/goldberg/menu_items_controller.rb +184 -0
  477. data/lib/vendor/plugins/goldberg/app/controllers/goldberg/permissions_controller.rb +60 -0
  478. data/lib/vendor/plugins/goldberg/app/controllers/goldberg/roles_controller.rb +85 -0
  479. data/lib/vendor/plugins/goldberg/app/controllers/goldberg/roles_permissions_controller.rb +65 -0
  480. data/lib/vendor/plugins/goldberg/app/controllers/goldberg/site_controllers_controller.rb +157 -0
  481. data/lib/vendor/plugins/goldberg/app/controllers/goldberg/system_settings_controller.rb +75 -0
  482. data/lib/vendor/plugins/goldberg/app/controllers/goldberg/users_controller.rb +293 -0
  483. data/lib/vendor/plugins/goldberg/app/helpers/goldberg/auth_helper.rb +4 -0
  484. data/lib/vendor/plugins/goldberg/app/helpers/goldberg/content_pages_helper.rb +23 -0
  485. data/lib/vendor/plugins/goldberg/app/helpers/goldberg/controller_actions_helper.rb +5 -0
  486. data/lib/vendor/plugins/goldberg/app/helpers/goldberg/menu_items_helper.rb +4 -0
  487. data/lib/vendor/plugins/goldberg/app/helpers/goldberg/permissions_helper.rb +4 -0
  488. data/lib/vendor/plugins/goldberg/app/helpers/goldberg/roles_helper.rb +4 -0
  489. data/lib/vendor/plugins/goldberg/app/helpers/goldberg/roles_permissions_helper.rb +4 -0
  490. data/lib/vendor/plugins/goldberg/app/helpers/goldberg/site_controllers_helper.rb +4 -0
  491. data/lib/vendor/plugins/goldberg/app/helpers/goldberg/system_settings_helper.rb +4 -0
  492. data/lib/vendor/plugins/goldberg/app/helpers/goldberg/users_helper.rb +4 -0
  493. data/lib/vendor/plugins/goldberg/app/models/goldberg/content_page.rb +134 -0
  494. data/lib/vendor/plugins/goldberg/app/models/goldberg/controller_action.rb +86 -0
  495. data/lib/vendor/plugins/goldberg/app/models/goldberg/credentials.rb +128 -0
  496. data/lib/vendor/plugins/goldberg/app/models/goldberg/menu.rb +198 -0
  497. data/lib/vendor/plugins/goldberg/app/models/goldberg/menu_item.rb +127 -0
  498. data/lib/vendor/plugins/goldberg/app/models/goldberg/permission.rb +37 -0
  499. data/lib/vendor/plugins/goldberg/app/models/goldberg/role.rb +68 -0
  500. data/lib/vendor/plugins/goldberg/app/models/goldberg/roles_permission.rb +18 -0
  501. data/lib/vendor/plugins/goldberg/app/models/goldberg/site_controller.rb +60 -0
  502. data/lib/vendor/plugins/goldberg/app/models/goldberg/system_settings.rb +112 -0
  503. data/lib/vendor/plugins/goldberg/app/models/goldberg/user.rb +69 -0
  504. data/lib/vendor/plugins/goldberg/app/models/goldberg/user_mailer.rb +43 -0
  505. data/lib/vendor/plugins/goldberg/app/views/goldberg/auth/_login.rhtml +15 -0
  506. data/lib/vendor/plugins/goldberg/app/views/goldberg/auth/login.rhtml +22 -0
  507. data/lib/vendor/plugins/goldberg/app/views/goldberg/auth/logout.rhtml +2 -0
  508. data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/_fck_create_folder.rxml +6 -0
  509. data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/_fck_files.rxml +19 -0
  510. data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/_form.rhtml +32 -0
  511. data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/edit.rhtml +10 -0
  512. data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/fck_speller_pages.rhtml +58 -0
  513. data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/list.rhtml +22 -0
  514. data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/new.rhtml +8 -0
  515. data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/show.rhtml +57 -0
  516. data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/view.rhtml +1 -0
  517. data/lib/vendor/plugins/goldberg/app/views/goldberg/content_pages/view_default.rhtml +1 -0
  518. data/lib/vendor/plugins/goldberg/app/views/goldberg/controller_actions/_form.rhtml +53 -0
  519. data/lib/vendor/plugins/goldberg/app/views/goldberg/controller_actions/edit.rhtml +9 -0
  520. data/lib/vendor/plugins/goldberg/app/views/goldberg/controller_actions/list.rhtml +27 -0
  521. data/lib/vendor/plugins/goldberg/app/views/goldberg/controller_actions/new.rhtml +10 -0
  522. data/lib/vendor/plugins/goldberg/app/views/goldberg/controller_actions/show.rhtml +13 -0
  523. data/lib/vendor/plugins/goldberg/app/views/goldberg/layouts/_tabpanel_js.rhtml +52 -0
  524. data/lib/vendor/plugins/goldberg/app/views/goldberg/layouts/_tabpanel_list.rhtml +7 -0
  525. data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/_breadcrumbs.rhtml +5 -0
  526. data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/_form.rhtml +42 -0
  527. data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/_item_list.rhtml +52 -0
  528. data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/_item_parent_list.rhtml +15 -0
  529. data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/_menubar.rhtml +21 -0
  530. data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/_suckerfish.rhtml +14 -0
  531. data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/edit.rhtml +10 -0
  532. data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/list-original.rhtml +27 -0
  533. data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/list.rhtml +16 -0
  534. data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/new.rhtml +9 -0
  535. data/lib/vendor/plugins/goldberg/app/views/goldberg/menu_items/show.rhtml +8 -0
  536. data/lib/vendor/plugins/goldberg/app/views/goldberg/permissions/_form.rhtml +7 -0
  537. data/lib/vendor/plugins/goldberg/app/views/goldberg/permissions/edit.rhtml +9 -0
  538. data/lib/vendor/plugins/goldberg/app/views/goldberg/permissions/list.rhtml +14 -0
  539. data/lib/vendor/plugins/goldberg/app/views/goldberg/permissions/new.rhtml +8 -0
  540. data/lib/vendor/plugins/goldberg/app/views/goldberg/permissions/show.rhtml +38 -0
  541. data/lib/vendor/plugins/goldberg/app/views/goldberg/roles/_form.rhtml +18 -0
  542. data/lib/vendor/plugins/goldberg/app/views/goldberg/roles/edit.rhtml +9 -0
  543. data/lib/vendor/plugins/goldberg/app/views/goldberg/roles/list.rhtml +21 -0
  544. data/lib/vendor/plugins/goldberg/app/views/goldberg/roles/new.rhtml +8 -0
  545. data/lib/vendor/plugins/goldberg/app/views/goldberg/roles/show.rhtml +79 -0
  546. data/lib/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/_form.rhtml +13 -0
  547. data/lib/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/edit.rhtml +9 -0
  548. data/lib/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/list.rhtml +24 -0
  549. data/lib/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/new.rhtml +8 -0
  550. data/lib/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/new_permission_for_role.rhtml +8 -0
  551. data/lib/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/show.rhtml +8 -0
  552. data/lib/vendor/plugins/goldberg/app/views/goldberg/site_controllers/_form.rhtml +15 -0
  553. data/lib/vendor/plugins/goldberg/app/views/goldberg/site_controllers/_list.rhtml +26 -0
  554. data/lib/vendor/plugins/goldberg/app/views/goldberg/site_controllers/edit.rhtml +9 -0
  555. data/lib/vendor/plugins/goldberg/app/views/goldberg/site_controllers/list.rhtml +107 -0
  556. data/lib/vendor/plugins/goldberg/app/views/goldberg/site_controllers/new.rhtml +8 -0
  557. data/lib/vendor/plugins/goldberg/app/views/goldberg/site_controllers/show.rhtml +38 -0
  558. data/lib/vendor/plugins/goldberg/app/views/goldberg/system_settings/_form.rhtml +71 -0
  559. data/lib/vendor/plugins/goldberg/app/views/goldberg/system_settings/edit.rhtml +9 -0
  560. data/lib/vendor/plugins/goldberg/app/views/goldberg/system_settings/list.rhtml +27 -0
  561. data/lib/vendor/plugins/goldberg/app/views/goldberg/system_settings/new.rhtml +8 -0
  562. data/lib/vendor/plugins/goldberg/app/views/goldberg/system_settings/show.rhtml +189 -0
  563. data/lib/vendor/plugins/goldberg/app/views/goldberg/user_mailer/confirmation_request.rhtml +19 -0
  564. data/lib/vendor/plugins/goldberg/app/views/goldberg/user_mailer/reset_password.rhtml +17 -0
  565. data/lib/vendor/plugins/goldberg/app/views/goldberg/user_mailer/reset_password_request.rhtml +23 -0
  566. data/lib/vendor/plugins/goldberg/app/views/goldberg/users/_form.rhtml +53 -0
  567. data/lib/vendor/plugins/goldberg/app/views/goldberg/users/confirm_registration.rhtml +26 -0
  568. data/lib/vendor/plugins/goldberg/app/views/goldberg/users/confirm_registration_submit.rhtml +4 -0
  569. data/lib/vendor/plugins/goldberg/app/views/goldberg/users/create.rhtml +19 -0
  570. data/lib/vendor/plugins/goldberg/app/views/goldberg/users/edit.rhtml +11 -0
  571. data/lib/vendor/plugins/goldberg/app/views/goldberg/users/forgot_password.rhtml +27 -0
  572. data/lib/vendor/plugins/goldberg/app/views/goldberg/users/forgot_password_submit.rhtml +4 -0
  573. data/lib/vendor/plugins/goldberg/app/views/goldberg/users/list.rhtml +18 -0
  574. data/lib/vendor/plugins/goldberg/app/views/goldberg/users/new.rhtml +19 -0
  575. data/lib/vendor/plugins/goldberg/app/views/goldberg/users/reset_password.rhtml +11 -0
  576. data/lib/vendor/plugins/goldberg/app/views/goldberg/users/reset_password_submit.rhtml +3 -0
  577. data/lib/vendor/plugins/goldberg/app/views/goldberg/users/show.rhtml +33 -0
  578. data/lib/vendor/plugins/goldberg/db/ContentPage.yml +466 -0
  579. data/lib/vendor/plugins/goldberg/db/ControllerAction.yml +162 -0
  580. data/lib/vendor/plugins/goldberg/db/MenuItem.yml +109 -0
  581. data/lib/vendor/plugins/goldberg/db/Permission.yml +21 -0
  582. data/lib/vendor/plugins/goldberg/db/Role.yml +493 -0
  583. data/lib/vendor/plugins/goldberg/db/RolesPermission.yml +26 -0
  584. data/lib/vendor/plugins/goldberg/db/SiteController.yml +61 -0
  585. data/lib/vendor/plugins/goldberg/db/SystemSettings.yml +21 -0
  586. data/lib/vendor/plugins/goldberg/db/User.yml +15 -0
  587. data/lib/vendor/plugins/goldberg/db/migrate/001_initial_setup.rb +128 -0
  588. data/lib/vendor/plugins/goldberg/db/migrate/002_menu_rest_items_users_cached_content_pages.rb +26 -0
  589. data/lib/vendor/plugins/goldberg/db/migrate/003_self_registration.rb +54 -0
  590. data/lib/vendor/plugins/goldberg/db/migrate/004_column_fixes.rb +119 -0
  591. data/lib/vendor/plugins/goldberg/goldberg.txt +1 -0
  592. data/lib/vendor/plugins/goldberg/init.rb +15 -0
  593. data/lib/vendor/plugins/goldberg/lib/goldberg.rb +37 -0
  594. data/lib/vendor/plugins/goldberg/lib/goldberg/controller.rb +10 -0
  595. data/lib/vendor/plugins/goldberg/lib/goldberg/filters.rb +197 -0
  596. data/lib/vendor/plugins/goldberg/lib/goldberg/helper.rb +66 -0
  597. data/lib/vendor/plugins/goldberg/lib/goldberg/migration.rb +113 -0
  598. data/lib/vendor/plugins/goldberg/lib/goldberg/migrator.rb +133 -0
  599. data/lib/vendor/plugins/goldberg/lib/goldberg/model.rb +127 -0
  600. data/lib/vendor/plugins/goldberg/lib/goldberg/routes.rb +49 -0
  601. data/lib/vendor/plugins/goldberg/lib/goldberg/test_helper.rb +82 -0
  602. data/lib/vendor/plugins/goldberg/tasks/goldberg_tasks.rake +81 -0
  603. data/lib/vendor/plugins/goldberg/test/functional/content_pages_controller_test.rb +31 -0
  604. data/lib/vendor/plugins/goldberg/test/integration/security_test.rb +95 -0
  605. data/lib/vendor/plugins/goldberg/test/test_helper.rb +40 -0
  606. data/lib/vendor/plugins/goldberg/test/unit/content_page_test.rb +87 -0
  607. data/lib/vendor/plugins/goldberg/test/unit/controller_action_test.rb +85 -0
  608. data/lib/vendor/plugins/goldberg/test/unit/menu_item_test.rb +46 -0
  609. data/lib/vendor/plugins/goldberg/test/unit/permission_test.rb +35 -0
  610. data/lib/vendor/plugins/goldberg/test/unit/site_controller_test.rb +53 -0
  611. data/lib/vendor/plugins/goldberg/test/unit/system_settings_test.rb +71 -0
  612. data/lib/vendor/plugins/goldberg/test/unit/user_test.rb +104 -0
  613. data/lib/vendor/plugins/goldberg/themes/common/public/images/action.png +0 -0
  614. data/lib/vendor/plugins/goldberg/themes/common/public/images/add.png +0 -0
  615. data/lib/vendor/plugins/goldberg/themes/common/public/images/delete.png +0 -0
  616. data/lib/vendor/plugins/goldberg/themes/common/public/images/down.png +0 -0
  617. data/lib/vendor/plugins/goldberg/themes/common/public/images/page.png +0 -0
  618. data/lib/vendor/plugins/goldberg/themes/common/public/images/permission.png +0 -0
  619. data/lib/vendor/plugins/goldberg/themes/common/public/images/role.png +0 -0
  620. data/lib/vendor/plugins/goldberg/themes/common/public/images/up.png +0 -0
  621. data/lib/vendor/plugins/goldberg/themes/common/public/javascripts/suckerfish.js +12 -0
  622. data/lib/vendor/plugins/goldberg/themes/common/public/stylesheets/goldberg.css +142 -0
  623. data/lib/vendor/plugins/goldberg/themes/common/public/stylesheets/suckerfish.css +124 -0
  624. data/lib/vendor/plugins/goldberg/themes/ewnf/app/views/layouts/application.html.erb +74 -0
  625. data/lib/vendor/plugins/goldberg/themes/ewnf/public/images/bg.gif +0 -0
  626. data/lib/vendor/plugins/goldberg/themes/ewnf/public/images/daddy_rightarrow.gif +0 -0
  627. data/lib/vendor/plugins/goldberg/themes/ewnf/public/images/sample.jpg +0 -0
  628. data/lib/vendor/plugins/goldberg/themes/ewnf/public/images/title_img.jpg +0 -0
  629. data/lib/vendor/plugins/goldberg/themes/ewnf/public/stylesheets/layout.css +223 -0
  630. data/lib/vendor/plugins/goldberg/themes/goldberg/app/views/layouts/application.html.erb +80 -0
  631. data/lib/vendor/plugins/goldberg/themes/goldberg/public/images/bodybg.jpg +0 -0
  632. data/lib/vendor/plugins/goldberg/themes/goldberg/public/images/footerbg.jpg +0 -0
  633. data/lib/vendor/plugins/goldberg/themes/goldberg/public/images/logo_right.jpg +0 -0
  634. data/lib/vendor/plugins/goldberg/themes/goldberg/public/images/menuhover.jpg +0 -0
  635. data/lib/vendor/plugins/goldberg/themes/goldberg/public/stylesheets/layout.css +321 -0
  636. data/lib/vendor/plugins/goldberg/themes/snooker/app/views/layouts/application.html.erb +74 -0
  637. data/lib/vendor/plugins/goldberg/themes/snooker/public/images/column_200.png +0 -0
  638. data/lib/vendor/plugins/goldberg/themes/snooker/public/images/daddy_rightarrow.gif +0 -0
  639. data/lib/vendor/plugins/goldberg/themes/snooker/public/images/footer_bg.png +0 -0
  640. data/lib/vendor/plugins/goldberg/themes/snooker/public/images/logo.jpg +0 -0
  641. data/lib/vendor/plugins/goldberg/themes/snooker/public/stylesheets/layout.css +183 -0
  642. data/lib/vendor/plugins/goldberg/themes/spoiled_brat/app/views/layouts/application.html.erb +71 -0
  643. data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/blockquote-bg.gif +0 -0
  644. data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/body-bg.jpg +0 -0
  645. data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/centerColumn-bg.jpg +0 -0
  646. data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/daddy_leftarrow.gif +0 -0
  647. data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/h2-bg.gif +0 -0
  648. data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/h3-bg.gif +0 -0
  649. data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/header-bg.jpg +0 -0
  650. data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/hr-bg.jpg +0 -0
  651. data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/images/logo.jpg +0 -0
  652. data/lib/vendor/plugins/goldberg/themes/spoiled_brat/public/stylesheets/layout.css +379 -0
  653. data/lib/vendor/plugins/in_place_editing/README +14 -0
  654. data/lib/vendor/plugins/in_place_editing/Rakefile +22 -0
  655. data/lib/vendor/plugins/in_place_editing/init.rb +2 -0
  656. data/lib/vendor/plugins/in_place_editing/lib/in_place_editing.rb +29 -0
  657. data/lib/vendor/plugins/in_place_editing/lib/in_place_macros_helper.rb +81 -0
  658. data/lib/vendor/plugins/in_place_editing/test/in_place_editing_test.rb +89 -0
  659. data/lib/vendor/plugins/in_place_editing/test/test_helper.rb +8 -0
  660. data/lib/vendor/plugins/recordselect/CHANGELOG +25 -0
  661. data/lib/vendor/plugins/recordselect/MIT-LICENSE +20 -0
  662. data/lib/vendor/plugins/recordselect/README +11 -0
  663. data/lib/vendor/plugins/recordselect/Rakefile +23 -0
  664. data/lib/vendor/plugins/recordselect/app/helpers/record_select_helper.rb +187 -0
  665. data/lib/vendor/plugins/recordselect/app/views/record_select/_browse.html.erb +8 -0
  666. data/lib/vendor/plugins/recordselect/app/views/record_select/_list.html.erb +31 -0
  667. data/lib/vendor/plugins/recordselect/app/views/record_select/_search.html.erb +14 -0
  668. data/lib/vendor/plugins/recordselect/app/views/record_select/browse.js.rjs +4 -0
  669. data/lib/vendor/plugins/recordselect/assets/images/cross.gif +0 -0
  670. data/lib/vendor/plugins/recordselect/assets/images/next.gif +0 -0
  671. data/lib/vendor/plugins/recordselect/assets/images/previous.gif +0 -0
  672. data/lib/vendor/plugins/recordselect/assets/javascripts/record_select.js +352 -0
  673. data/lib/vendor/plugins/recordselect/assets/stylesheets/record_select.css +129 -0
  674. data/lib/vendor/plugins/recordselect/init.rb +16 -0
  675. data/lib/vendor/plugins/recordselect/install.rb +1 -0
  676. data/lib/vendor/plugins/recordselect/lib/extensions/active_record.rb +9 -0
  677. data/lib/vendor/plugins/recordselect/lib/localization.rb +8 -0
  678. data/lib/vendor/plugins/recordselect/lib/record_select.rb +36 -0
  679. data/lib/vendor/plugins/recordselect/lib/record_select/actions.rb +67 -0
  680. data/lib/vendor/plugins/recordselect/lib/record_select/conditions.rb +86 -0
  681. data/lib/vendor/plugins/recordselect/lib/record_select/config.rb +91 -0
  682. data/lib/vendor/plugins/recordselect/lib/record_select/form_builder.rb +25 -0
  683. data/lib/vendor/plugins/recordselect/test/recordselect_test.rb +8 -0
  684. data/lib/vendor/plugins/recordselect/uninstall.rb +4 -0
  685. data/lib/vendor/plugins/render_component/README +37 -0
  686. data/lib/vendor/plugins/render_component/Rakefile +22 -0
  687. data/lib/vendor/plugins/render_component/init.rb +2 -0
  688. data/lib/vendor/plugins/render_component/lib/components.rb +142 -0
  689. data/lib/vendor/plugins/render_component/test/abstract_unit.rb +8 -0
  690. data/lib/vendor/plugins/render_component/test/components_test.rb +140 -0
  691. data/lib/vendor/plugins/six-app_manager/Rakefile +26 -0
  692. data/lib/vendor/plugins/six-app_manager/environment.rb +30 -0
  693. data/lib/vendor/plugins/six-app_manager/init.rb +18 -0
  694. data/lib/vendor/plugins/six-app_manager/lib/six/appmanager.rb +247 -0
  695. data/lib/vendor/plugins/six-db_manager/Rakefile +26 -0
  696. data/lib/vendor/plugins/six-db_manager/db/actions.yml +1 -0
  697. data/lib/vendor/plugins/six-db_manager/db/actions_sixconfigs.yml +1 -0
  698. data/lib/vendor/plugins/six-db_manager/db/appsettings.yml +1 -0
  699. data/lib/vendor/plugins/six-db_manager/db/appsettings_sixconfigs.yml +1 -0
  700. data/lib/vendor/plugins/six-db_manager/db/goldberg_content_pages.yml +360 -0
  701. data/lib/vendor/plugins/six-db_manager/db/goldberg_controller_actions.yml +211 -0
  702. data/lib/vendor/plugins/six-db_manager/db/goldberg_menu_items.yml +169 -0
  703. data/lib/vendor/plugins/six-db_manager/db/goldberg_permissions.yml +16 -0
  704. data/lib/vendor/plugins/six-db_manager/db/goldberg_roles.yml +683 -0
  705. data/lib/vendor/plugins/six-db_manager/db/goldberg_roles_permissions.yml +21 -0
  706. data/lib/vendor/plugins/six-db_manager/db/goldberg_site_controllers.yml +106 -0
  707. data/lib/vendor/plugins/six-db_manager/db/goldberg_system_settings.yml +20 -0
  708. data/lib/vendor/plugins/six-db_manager/db/goldberg_users.yml +27 -0
  709. data/lib/vendor/plugins/six-db_manager/db/mods.yml +1 -0
  710. data/lib/vendor/plugins/six-db_manager/db/mods_servers.yml +2 -0
  711. data/lib/vendor/plugins/six-db_manager/db/mods_sixconfigs.yml +1 -0
  712. data/lib/vendor/plugins/six-db_manager/db/queryservers.yml +1 -0
  713. data/lib/vendor/plugins/six-db_manager/db/repositories.yml +1 -0
  714. data/lib/vendor/plugins/six-db_manager/db/servers.yml +2 -0
  715. data/lib/vendor/plugins/six-db_manager/db/servers_sixconfigs.yml +2 -0
  716. data/lib/vendor/plugins/six-db_manager/db/sixconfigs.yml +1 -0
  717. data/lib/vendor/plugins/six-db_manager/db/system_settings.yml +1 -0
  718. data/lib/vendor/plugins/six-db_manager/environment.rb +24 -0
  719. data/lib/vendor/plugins/six-db_manager/init.rb +18 -0
  720. data/lib/vendor/plugins/six-db_manager/lib/six/dbmanager.rb +204 -0
  721. data/lib/vendor/plugins/six-guid/Rakefile +26 -0
  722. data/lib/vendor/plugins/six-guid/environment.rb +24 -0
  723. data/lib/vendor/plugins/six-guid/init.rb +18 -0
  724. data/lib/vendor/plugins/six-guid/lib/six/guid.rb +32 -0
  725. data/lib/vendor/plugins/six-import/Rakefile +26 -0
  726. data/lib/vendor/plugins/six-import/environment.rb +24 -0
  727. data/lib/vendor/plugins/six-import/init.rb +18 -0
  728. data/lib/vendor/plugins/six-import/lib/six/import.rb +133 -0
  729. data/lib/vendor/plugins/six-network/Rakefile +26 -0
  730. data/lib/vendor/plugins/six-network/environment.rb +2 -0
  731. data/lib/vendor/plugins/six-network/init.rb +18 -0
  732. data/lib/vendor/plugins/six-network/lib/six/network.rb +72 -0
  733. data/lib/vendor/plugins/six-query/Rakefile +26 -0
  734. data/lib/vendor/plugins/six-query/app/controllers/sixsense/auth_controller.rb +165 -0
  735. data/lib/vendor/plugins/six-query/environment.rb +33 -0
  736. data/lib/vendor/plugins/six-query/init.rb +18 -0
  737. data/lib/vendor/plugins/six-query/lib/six/query.rb +4 -0
  738. data/lib/vendor/plugins/six-query/lib/six/query/base.rb +37 -0
  739. data/lib/vendor/plugins/six-query/lib/six/query/gamespy.rb +107 -0
  740. data/lib/vendor/plugins/six-query/lib/six/query/gamespy_master.rb +61 -0
  741. metadata +743 -7
  742. data/lib/six/updater-web-app.rb +0 -80722
@@ -0,0 +1,867 @@
1
+ /*
2
+ Copyright (c) 2007 Brian Dillard and Brad Neuberg:
3
+ Brian Dillard | Project Lead | bdillard@pathf.com | http://blogs.pathf.com/agileajax/
4
+ Brad Neuberg | Original Project Creator | http://codinginparadise.org
5
+
6
+ SVN r113 from http://code.google.com/p/reallysimplehistory
7
+ + Changes by Ed Wildgoose - MailASail
8
+ + Changed EncodeURIComponent -> EncodeURI
9
+ + Changed DecodeURIComponent -> DecodeURI
10
+ + Changed 'blank.html?' -> '/blank.html?'
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files
13
+ (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge,
14
+ publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do
15
+ so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
21
+ FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ */
24
+
25
+ /*
26
+ dhtmlHistory: An object that provides history, history data, and bookmarking for DHTML and Ajax applications.
27
+
28
+ dependencies:
29
+ * the historyStorage object included in this file.
30
+
31
+ */
32
+ window.dhtmlHistory = {
33
+
34
+ /*Public: User-agent booleans*/
35
+ isIE: false,
36
+ isOpera: false,
37
+ isSafari: false,
38
+ isKonquerer: false,
39
+ isGecko: false,
40
+ isSupported: false,
41
+
42
+ /*Public: Create the DHTML history infrastructure*/
43
+ create: function(options) {
44
+
45
+ /*
46
+ options - object to store initialization parameters
47
+ options.blankURL - string to override the default location of blank.html. Must end in "?"
48
+ options.debugMode - boolean that causes hidden form fields to be shown for development purposes.
49
+ options.toJSON - function to override default JSON stringifier
50
+ options.fromJSON - function to override default JSON parser
51
+ options.baseTitle - pattern for title changes; example: "Armchair DJ [@@@]" - @@@ will be replaced
52
+ */
53
+
54
+ var that = this;
55
+
56
+ /*Set up the historyStorage object; pass in options bundle*/
57
+ window.historyStorage.setup(options);
58
+
59
+ /*Set up our base title if one is passed in*/
60
+ if (options && options.baseTitle) {
61
+ if (options.baseTitle.indexOf("@@@") < 0 && historyStorage.debugMode) {
62
+ throw new Error("Programmer error: options.baseTitle must contain the replacement parameter"
63
+ + " '@@@' to be useful.");
64
+ }
65
+ this.baseTitle = options.baseTitle;
66
+ }
67
+
68
+ /*set user-agent flags*/
69
+ var UA = navigator.userAgent.toLowerCase();
70
+ var platform = navigator.platform.toLowerCase();
71
+ var vendor = navigator.vendor || "";
72
+ if (vendor === "KDE") {
73
+ this.isKonqueror = true;
74
+ this.isSupported = false;
75
+ } else if (typeof window.opera !== "undefined") {
76
+ this.isOpera = true;
77
+ this.isSupported = true;
78
+ } else if (typeof document.all !== "undefined") {
79
+ this.isIE = true;
80
+ this.isSupported = true;
81
+ } else if (vendor.indexOf("Apple Computer, Inc.") > -1) {
82
+ this.isSafari = true;
83
+ this.isSupported = (platform.indexOf("mac") > -1);
84
+ } else if (UA.indexOf("gecko") != -1) {
85
+ this.isGecko = true;
86
+ this.isSupported = true;
87
+ }
88
+
89
+ /*Create Safari/Opera-specific code*/
90
+ if (this.isSafari) {
91
+ this.createSafari();
92
+ } else if (this.isOpera) {
93
+ this.createOpera();
94
+ }
95
+
96
+ /*Get our initial location*/
97
+ var initialHash = this.getCurrentLocation();
98
+
99
+ /*Save it as our current location*/
100
+ this.currentLocation = initialHash;
101
+
102
+ /*Now that we have a hash, create IE-specific code*/
103
+ if (this.isIE) {
104
+ /*Optionally override the URL of IE's blank HTML file*/
105
+ if (options && options.blankURL) {
106
+ var u = options.blankURL;
107
+ /*assign the value, adding the trailing ? if it's not passed in*/
108
+ this.blankURL = (u.indexOf("?") != u.length - 1
109
+ ? u + "?"
110
+ : u
111
+ );
112
+ }
113
+ this.createIE(initialHash);
114
+ }
115
+
116
+ /*Add an unload listener for the page; this is needed for FF 1.5+ because this browser caches all dynamic updates to the
117
+ page, which can break some of our logic related to testing whether this is the first instance a page has loaded or whether
118
+ it is being pulled from the cache*/
119
+
120
+ var unloadHandler = function() {
121
+ that.firstLoad = null;
122
+ };
123
+
124
+ this.addEventListener(window,'unload',unloadHandler);
125
+
126
+ /*Determine if this is our first page load; for IE, we do this in this.iframeLoaded(), which is fired on pageload. We do it
127
+ there because we have no historyStorage at this point, which only exists after the page is finished loading in IE*/
128
+ if (this.isIE) {
129
+ /*The iframe will get loaded on page load, and we want to ignore this fact*/
130
+ this.ignoreLocationChange = true;
131
+ } else {
132
+ if (!historyStorage.hasKey(this.PAGELOADEDSTRING)) {
133
+ /*This is our first page load, so ignore the location change and add our special history entry*/
134
+ this.ignoreLocationChange = true;
135
+ this.firstLoad = true;
136
+ historyStorage.put(this.PAGELOADEDSTRING, true);
137
+ } else {
138
+ /*This isn't our first page load, so indicate that we want to pay attention to this location change*/
139
+ this.ignoreLocationChange = false;
140
+ this.firstLoad = false;
141
+ /*For browsers other than IE, fire a history change event; on IE, the event will be thrown automatically when its
142
+ hidden iframe reloads on page load. Unfortunately, we don't have any listeners yet; indicate that we want to fire
143
+ an event when a listener is added.*/
144
+ this.fireOnNewListener = true;
145
+ }
146
+ }
147
+
148
+ /*Other browsers can use a location handler that checks at regular intervals as their primary mechanism; we use it for IE as
149
+ well to handle an important edge case; see checkLocation() for details*/
150
+ var locationHandler = function() {
151
+ that.checkLocation();
152
+ };
153
+ setInterval(locationHandler, 100);
154
+ },
155
+
156
+ /*Public: Initialize our DHTML history. You must call this after the page is finished loading. Optionally, you can pass your listener in
157
+ here so you don't need to make a separate call to addListener*/
158
+ initialize: function(listener) {
159
+
160
+ /*save original document title to plug in when we hit a null-key history point*/
161
+ this.originalTitle = document.title;
162
+
163
+ /*IE needs to be explicitly initialized. IE doesn't autofill form data until the page is finished loading, so we have to wait*/
164
+ if (this.isIE) {
165
+ /*If this is the first time this page has loaded*/
166
+ if (!historyStorage.hasKey(this.PAGELOADEDSTRING)) {
167
+ /*For IE, we do this in initialize(); for other browsers, we do it in create()*/
168
+ this.fireOnNewListener = false;
169
+ this.firstLoad = true;
170
+ historyStorage.put(this.PAGELOADEDSTRING, true);
171
+ }
172
+ /*Else if this is a fake onload event*/
173
+ else {
174
+ this.fireOnNewListener = true;
175
+ this.firstLoad = false;
176
+ }
177
+ }
178
+ /*optional convenience to save a separate call to addListener*/
179
+ if (listener) {
180
+ this.addListener(listener);
181
+ }
182
+ },
183
+
184
+ /*Public: Adds a history change listener. Only one listener is supported at this time.*/
185
+ addListener: function(listener) {
186
+ this.listener = listener;
187
+ /*If the page was just loaded and we should not ignore it, fire an event to our new listener now*/
188
+ if (this.fireOnNewListener) {
189
+ this.fireHistoryEvent(this.currentLocation);
190
+ this.fireOnNewListener = false;
191
+ }
192
+ },
193
+
194
+ /*Public: Change the current HTML title*/
195
+ changeTitle: function(historyData) {
196
+ var winTitle = (historyData && historyData.newTitle
197
+ /*Plug the new title into the pattern*/
198
+ ? this.baseTitle.replace('@@@', historyData.newTitle)
199
+ /*Otherwise, if there is no new title, use the original document title. This is useful when some
200
+ history changes have title changes and some don't; we can automatically return to the original
201
+ title rather than leaving a misleading title in the title bar. The same goes for our "virgin"
202
+ (hashless) page state.*/
203
+ : this.originalTitle
204
+ );
205
+ /*No need to do anything if the title isn't changing*/
206
+ if (document.title == winTitle) {
207
+ return;
208
+ }
209
+
210
+
211
+ /*Now change the DOM*/
212
+ document.title = winTitle;
213
+ /*Change it in the iframe, too, for IE*/
214
+ if (this.isIE) {
215
+ this.iframe.contentWindow.document.title = winTitle;
216
+ }
217
+
218
+ /*If non-IE, reload the hash so the new title "sticks" in the browser history object*/
219
+ if (!this.isIE && !this.isOpera) {
220
+ var hash = decodeURI(document.location.hash);
221
+ if (hash != "") {
222
+ var encodedHash = encodeURI(this.removeHash(hash));
223
+ document.location.hash = encodedHash;
224
+ } else {
225
+ //document.location.hash = "#";
226
+ }
227
+ }
228
+ },
229
+
230
+ /*Public: Add a history point. Parameters available:
231
+ * newLocation (required):
232
+ This will be the #hash value in the URL. Users can bookmark it. It will persist across sessions, so
233
+ your application should be able to restore itself to a specific state based on just this value. It
234
+ should be either a simple keyword for a viewstate or else a pseudo-querystring.
235
+ * historyData (optional):
236
+ This is for complex data that is relevant only to the current browsing session. It will be available
237
+ to your application until the browser is closed. If the user comes back to a bookmarked history point
238
+ during a later session, this data will no longer be available. Don't rely on it for application
239
+ re-initialization from a bookmark.
240
+ * historyData.newTitle (optional):
241
+ This will swap out the html <title> attribute with a new value. If you have set a baseTitle using the
242
+ options bundle, the value will be plugged into the baseTitle by swapping out the @@@ replacement param.
243
+ */
244
+ add: function(newLocation, historyData) {
245
+
246
+ var that = this;
247
+
248
+ /*Escape the location and remove any leading hash symbols*/
249
+ var encodedLocation = encodeURI(this.removeHash(newLocation));
250
+
251
+ if (this.isSafari) {
252
+
253
+ /*Store the history data into history storage - pass in unencoded newLocation since
254
+ historyStorage does its own encoding*/
255
+ historyStorage.put(newLocation, historyData);
256
+
257
+ /*Save this as our current location*/
258
+ this.currentLocation = encodedLocation;
259
+
260
+ /*Change the browser location*/
261
+ window.location.hash = encodedLocation;
262
+
263
+ /*Save this to the Safari form field*/
264
+ this.putSafariState(encodedLocation);
265
+
266
+ this.changeTitle(historyData);
267
+
268
+ } else {
269
+
270
+ /*Most browsers require that we wait a certain amount of time before changing the location, such
271
+ as 200 MS; rather than forcing external callers to use window.setTimeout to account for this,
272
+ we internally handle it by putting requests in a queue.*/
273
+ var addImpl = function() {
274
+
275
+ /*Indicate that the current wait time is now less*/
276
+ if (that.currentWaitTime > 0) {
277
+ that.currentWaitTime = that.currentWaitTime - that.waitTime;
278
+ }
279
+
280
+ /*IE has a strange bug; if the encodedLocation is the same as _any_ preexisting id in the
281
+ document, then the history action gets recorded twice; throw a programmer exception if
282
+ there is an element with this ID*/
283
+ if (document.getElementById(encodedLocation) && that.debugMode) {
284
+ var e = "Exception: History locations can not have the same value as _any_ IDs that might be in the document,"
285
+ + " due to a bug in IE; please ask the developer to choose a history location that does not match any HTML"
286
+ + " IDs in this document. The following ID is already taken and cannot be a location: " + newLocation;
287
+ throw new Error(e);
288
+ }
289
+
290
+ /*Store the history data into history storage - pass in unencoded newLocation since
291
+ historyStorage does its own encoding*/
292
+ historyStorage.put(newLocation, historyData);
293
+
294
+ /*Indicate to the browser to ignore this upcomming location change since we're making it programmatically*/
295
+ that.ignoreLocationChange = true;
296
+
297
+ /*Indicate to IE that this is an atomic location change block*/
298
+ that.ieAtomicLocationChange = true;
299
+
300
+ /*Save this as our current location*/
301
+ that.currentLocation = encodedLocation;
302
+
303
+ /*Change the browser location*/
304
+ window.location.hash = encodedLocation;
305
+
306
+ /*Change the hidden iframe's location if on IE*/
307
+ if (that.isIE) {
308
+ that.iframe.src = that.blankURL + encodedLocation;
309
+ }
310
+
311
+ /*End of atomic location change block for IE*/
312
+ that.ieAtomicLocationChange = false;
313
+
314
+ that.changeTitle(historyData);
315
+
316
+ };
317
+
318
+ /*Now queue up this add request*/
319
+ window.setTimeout(addImpl, this.currentWaitTime);
320
+
321
+ /*Indicate that the next request will have to wait for awhile*/
322
+ this.currentWaitTime = this.currentWaitTime + this.waitTime;
323
+ }
324
+ },
325
+
326
+ /*Public*/
327
+ isFirstLoad: function() {
328
+ return this.firstLoad;
329
+ },
330
+
331
+ /*Public*/
332
+ getVersion: function() {
333
+ return this.VERSIONNUMBER;
334
+ },
335
+
336
+ /*- - - - - - - - - - - -*/
337
+
338
+ /*Private: Constant for our own internal history event called when the page is loaded*/
339
+ PAGELOADEDSTRING: "DhtmlHistory_pageLoaded",
340
+
341
+ VERSIONNUMBER: "0.8",
342
+
343
+ /*
344
+ Private: Pattern for title changes. Example: "Armchair DJ [@@@]" where @@@ will be relaced by values passed to add();
345
+ Default is just the title itself, hence "@@@"
346
+ */
347
+ baseTitle: "@@@",
348
+
349
+ /*Private: Placeholder variable for the original document title; will be set in ititialize()*/
350
+ originalTitle: null,
351
+
352
+ /*Private: URL for the blank html file we use for IE; can be overridden via the options bundle. Otherwise it must be served
353
+ in same directory as this library*/
354
+ blankURL: "/blank.html?",
355
+
356
+ /*Private: Our history change listener.*/
357
+ listener: null,
358
+
359
+ /*Private: MS to wait between add requests - will be reset for certain browsers*/
360
+ waitTime: 200,
361
+
362
+ /*Private: MS before an add request can execute*/
363
+ currentWaitTime: 0,
364
+
365
+ /*Private: Our current hash location, without the "#" symbol.*/
366
+ currentLocation: null,
367
+
368
+ /*Private: Hidden iframe used to IE to detect history changes*/
369
+ iframe: null,
370
+
371
+ /*Private: Flags and DOM references used only by Safari*/
372
+ safariHistoryStartPoint: null,
373
+ safariStack: null,
374
+ safariLength: null,
375
+
376
+ /*Private: Flag used to keep checkLocation() from doing anything when it discovers location changes we've made ourselves
377
+ programmatically with the add() method. Basically, add() sets this to true. When checkLocation() discovers it's true,
378
+ it refrains from firing our listener, then resets the flag to false for next cycle. That way, our listener only gets fired on
379
+ history change events triggered by the user via back/forward buttons and manual hash changes. This flag also helps us set up
380
+ IE's special iframe-based method of handling history changes.*/
381
+ ignoreLocationChange: null,
382
+
383
+ /*Private: A flag that indicates that we should fire a history change event when we are ready, i.e. after we are initialized and
384
+ we have a history change listener. This is needed due to an edge case in browsers other than IE; if you leave a page entirely
385
+ then return, we must fire this as a history change event. Unfortunately, we have lost all references to listeners from earlier,
386
+ because JavaScript clears out.*/
387
+ fireOnNewListener: null,
388
+
389
+ /*Private: A variable that indicates whether this is the first time this page has been loaded. If you go to a web page, leave it
390
+ for another one, and then return, the page's onload listener fires again. We need a way to differentiate between the first page
391
+ load and subsequent ones. This variable works hand in hand with the pageLoaded variable we store into historyStorage.*/
392
+ firstLoad: null,
393
+
394
+ /*Private: A variable to handle an important edge case in IE. In IE, if a user manually types an address into their browser's
395
+ location bar, we must intercept this by calling checkLocation() at regular intervals. However, if we are programmatically
396
+ changing the location bar ourselves using the add() method, we need to ignore these changes in checkLocation(). Unfortunately,
397
+ these changes take several lines of code to complete, so for the duration of those lines of code, we set this variable to true.
398
+ That signals to checkLocation() to ignore the change-in-progress. Once we're done with our chunk of location-change code in
399
+ add(), we set this back to false. We'll do the same thing when capturing user-entered address changes in checkLocation itself.*/
400
+ ieAtomicLocationChange: null,
401
+
402
+ /*Private: Generic utility function for attaching events*/
403
+ addEventListener: function(o,e,l) {
404
+ if (o.addEventListener) {
405
+ o.addEventListener(e,l,false);
406
+ } else if (o.attachEvent) {
407
+ o.attachEvent('on'+e,function() {
408
+ l(window.event);
409
+ });
410
+ }
411
+ },
412
+
413
+
414
+ /*Private: Create IE-specific DOM nodes and overrides*/
415
+ createIE: function(initialHash) {
416
+ /*write out a hidden iframe for IE and set the amount of time to wait between add() requests*/
417
+ this.waitTime = 400;/*IE needs longer between history updates*/
418
+ var styles = (historyStorage.debugMode
419
+ ? 'width: 800px;height:80px;border:1px solid black;'
420
+ : historyStorage.hideStyles
421
+ );
422
+ var iframeID = "rshHistoryFrame";
423
+ var iframeHTML = '<iframe frameborder="0" id="' + iframeID + '" style="' + styles + '" src="' + this.blankURL + initialHash + '"></iframe>';
424
+ document.write(iframeHTML);
425
+ this.iframe = document.getElementById(iframeID);
426
+ },
427
+
428
+ /*Private: Create Opera-specific DOM nodes and overrides*/
429
+ createOpera: function() {
430
+ this.waitTime = 400;/*Opera needs longer between history updates*/
431
+ var imgHTML = '<img src="javascript:location.href=\'javascript:dhtmlHistory.checkLocation();\';" style="' + historyStorage.hideStyles + '" />';
432
+ document.write(imgHTML);
433
+ },
434
+
435
+ /*Private: Create Safari-specific DOM nodes and overrides*/
436
+ createSafari: function() {
437
+ var formID = "rshSafariForm";
438
+ var stackID = "rshSafariStack";
439
+ var lengthID = "rshSafariLength";
440
+ var formStyles = historyStorage.debugMode ? historyStorage.showStyles : historyStorage.hideStyles;
441
+ var stackStyles = (historyStorage.debugMode
442
+ ? 'width: 800px;height:80px;border:1px solid black;'
443
+ : historyStorage.hideStyles
444
+ );
445
+ var lengthStyles = (historyStorage.debugMode
446
+ ? 'width:800px;height:20px;border:1px solid black;margin:0;padding:0;'
447
+ : historyStorage.hideStyles
448
+ );
449
+ var safariHTML = '<form id="' + formID + '" style="' + formStyles + '">'
450
+ + '<textarea style="' + stackStyles + '" id="' + stackID + '">[]</textarea>'
451
+ + '<input type="text" style="' + lengthStyles + '" id="' + lengthID + '" value=""/>'
452
+ + '</form>';
453
+ document.write(safariHTML);
454
+ this.safariStack = document.getElementById(stackID);
455
+ this.safariLength = document.getElementById(lengthID);
456
+ if (!historyStorage.hasKey(this.PAGELOADEDSTRING)) {
457
+ this.safariHistoryStartPoint = history.length;
458
+ this.safariLength.value = this.safariHistoryStartPoint;
459
+ } else {
460
+ this.safariHistoryStartPoint = this.safariLength.value;
461
+ }
462
+ },
463
+
464
+ /*TODO: make this public again?*/
465
+ /*Private: Get browser's current hash location; for Safari, read value from a hidden form field*/
466
+ getCurrentLocation: function() {
467
+ var r = (this.isSafari
468
+ ? this.getSafariState()
469
+ : this.getCurrentHash()
470
+ );
471
+ return r;
472
+ },
473
+
474
+ /*TODO: make this public again?*/
475
+ /*Private: Manually parse the current url for a hash; tip of the hat to YUI*/
476
+ getCurrentHash: function() {
477
+ var r = window.location.href;
478
+ var i = r.indexOf("#");
479
+ return (i >= 0
480
+ ? r.substr(i+1)
481
+ : ""
482
+ );
483
+ },
484
+
485
+ /*Private: Safari method to read the history stack from a hidden form field*/
486
+ getSafariStack: function() {
487
+ var r = this.safariStack.value;
488
+ return historyStorage.fromJSON(r);
489
+ },
490
+ /*Private: Safari method to read from the history stack*/
491
+ getSafariState: function() {
492
+ var stack = this.getSafariStack();
493
+ var state = stack[history.length - this.safariHistoryStartPoint - 1];
494
+ return state;
495
+ },
496
+ /*Private: Safari method to write the history stack to a hidden form field*/
497
+ putSafariState: function(newLocation) {
498
+ var stack = this.getSafariStack();
499
+ stack[history.length - this.safariHistoryStartPoint] = newLocation;
500
+ this.safariStack.value = historyStorage.toJSON(stack);
501
+ },
502
+
503
+ /*Private: Notify the listener of new history changes.*/
504
+ fireHistoryEvent: function(newHash) {
505
+ var decodedHash = decodeURI(newHash)
506
+ /*extract the value from our history storage for this hash*/
507
+ var historyData = historyStorage.get(decodedHash);
508
+ this.changeTitle(historyData);
509
+ /*call our listener*/
510
+ this.listener.call(null, decodedHash, historyData);
511
+ },
512
+
513
+ /*Private: See if the browser has changed location. This is the primary history mechanism for Firefox. For IE, we use this to
514
+ handle an important edge case: if a user manually types in a new hash value into their IE location bar and press enter, we want to
515
+ to intercept this and notify any history listener.*/
516
+ checkLocation: function() {
517
+
518
+ /*Ignore any location changes that we made ourselves for browsers other than IE*/
519
+ if (!this.isIE && this.ignoreLocationChange) {
520
+ this.ignoreLocationChange = false;
521
+ return;
522
+ }
523
+
524
+ /*If we are dealing with IE and we are in the middle of making a location change from an iframe, ignore it*/
525
+ if (!this.isIE && this.ieAtomicLocationChange) {
526
+ return;
527
+ }
528
+
529
+ /*Get hash location*/
530
+ var hash = this.getCurrentLocation();
531
+
532
+ /*Do nothing if there's been no change*/
533
+ if (hash == this.currentLocation) {
534
+ return;
535
+ }
536
+
537
+ /*In IE, users manually entering locations into the browser; we do this by comparing the browser's location against the
538
+ iframe's location; if they differ, we are dealing with a manual event and need to place it inside our history, otherwise
539
+ we can return*/
540
+ this.ieAtomicLocationChange = true;
541
+
542
+ if (this.isIE && this.getIframeHash() != hash) {
543
+ this.iframe.src = this.blankURL + hash;
544
+ }
545
+ else if (this.isIE) {
546
+ /*the iframe is unchanged*/
547
+ return;
548
+ }
549
+
550
+ /*Save this new location*/
551
+ this.currentLocation = hash;
552
+
553
+ this.ieAtomicLocationChange = false;
554
+
555
+ /*Notify listeners of the change*/
556
+ this.fireHistoryEvent(hash);
557
+ },
558
+
559
+ /*Private: Get the current location of IE's hidden iframe.*/
560
+ getIframeHash: function() {
561
+ var doc = this.iframe.contentWindow.document;
562
+ var hash = String(doc.location.search);
563
+ if (hash.length == 1 && hash.charAt(0) == "?") {
564
+ hash = "";
565
+ }
566
+ else if (hash.length >= 2 && hash.charAt(0) == "?") {
567
+ hash = hash.substring(1);
568
+ }
569
+ return hash;
570
+ },
571
+
572
+ /*Private: Remove any leading hash that might be on a location.*/
573
+ removeHash: function(hashValue) {
574
+ var r;
575
+ if (hashValue === null || hashValue === undefined) {
576
+ r = null;
577
+ }
578
+ else if (hashValue === "") {
579
+ r = "";
580
+ }
581
+ else if (hashValue.length == 1 && hashValue.charAt(0) == "#") {
582
+ r = "";
583
+ }
584
+ else if (hashValue.length > 1 && hashValue.charAt(0) == "#") {
585
+ r = hashValue.substring(1);
586
+ }
587
+ else {
588
+ r = hashValue;
589
+ }
590
+ return r;
591
+ },
592
+
593
+ /*Private: For IE, tell when the hidden iframe has finished loading.*/
594
+ iframeLoaded: function(newLocation) {
595
+ /*ignore any location changes that we made ourselves*/
596
+ if (this.ignoreLocationChange) {
597
+ this.ignoreLocationChange = false;
598
+ return;
599
+ }
600
+
601
+ /*Get the new location*/
602
+ var hash = String(newLocation.search);
603
+ if (hash.length == 1 && hash.charAt(0) == "?") {
604
+ hash = "";
605
+ }
606
+ else if (hash.length >= 2 && hash.charAt(0) == "?") {
607
+ hash = hash.substring(1);
608
+ }
609
+ /*Keep the browser location bar in sync with the iframe hash*/
610
+ window.location.hash = hash;
611
+
612
+ /*Notify listeners of the change*/
613
+ this.fireHistoryEvent(hash);
614
+ }
615
+
616
+
617
+ };
618
+
619
+ /*
620
+ historyStorage: An object that uses a hidden form to store history state across page loads. The mechanism for doing so relies on
621
+ the fact that browsers save the text in form data for the life of the browser session, which means the text is still there when
622
+ the user navigates back to the page. This object can be used independently of the dhtmlHistory object for caching of Ajax
623
+ session information.
624
+
625
+ dependencies:
626
+ * json2007.js (included in a separate file) or alternate JSON methods passed in through an options bundle.
627
+ */
628
+ window.historyStorage = {
629
+
630
+ /*Public: Set up our historyStorage object for use by dhtmlHistory or other objects*/
631
+ setup: function(options) {
632
+
633
+ /*
634
+ options - object to store initialization parameters - passed in from dhtmlHistory or directly into historyStorage
635
+ options.debugMode - boolean that causes hidden form fields to be shown for development purposes.
636
+ options.toJSON - function to override default JSON stringifier
637
+ options.fromJSON - function to override default JSON parser
638
+ */
639
+
640
+ /*process init parameters*/
641
+ if (typeof options !== "undefined") {
642
+ if (options.debugMode) {
643
+ this.debugMode = options.debugMode;
644
+ }
645
+ if (options.toJSON) {
646
+ this.toJSON = options.toJSON;
647
+ }
648
+ if (options.fromJSON) {
649
+ this.fromJSON = options.fromJSON;
650
+ }
651
+ }
652
+
653
+ /*write a hidden form and textarea into the page; we'll stow our history stack here*/
654
+ var formID = "rshStorageForm";
655
+ var textareaID = "rshStorageField";
656
+ var formStyles = this.debugMode ? historyStorage.showStyles : historyStorage.hideStyles;
657
+ var textareaStyles = (historyStorage.debugMode
658
+ ? 'width: 800px;height:80px;border:1px solid black;'
659
+ : historyStorage.hideStyles
660
+ );
661
+ var textareaHTML = '<form id="' + formID + '" style="' + formStyles + '">'
662
+ + '<textarea id="' + textareaID + '" style="' + textareaStyles + '"></textarea>'
663
+ + '</form>';
664
+ document.write(textareaHTML);
665
+ this.storageField = document.getElementById(textareaID);
666
+ if (typeof window.opera !== "undefined") {
667
+ this.storageField.focus();/*Opera needs to focus this element before persisting values in it*/
668
+ }
669
+ },
670
+
671
+ /*Public*/
672
+ put: function(key, value) {
673
+
674
+ var encodedKey = encodeURI(key);
675
+
676
+ this.assertValidKey(encodedKey);
677
+ /*if we already have a value for this, remove the value before adding the new one*/
678
+ if (this.hasKey(key)) {
679
+ this.remove(key);
680
+ }
681
+ /*store this new key*/
682
+ this.storageHash[encodedKey] = value;
683
+ /*save and serialize the hashtable into the form*/
684
+ this.saveHashTable();
685
+ },
686
+
687
+ /*Public*/
688
+ get: function(key) {
689
+
690
+ var encodedKey = encodeURI(key);
691
+
692
+ this.assertValidKey(encodedKey);
693
+ /*make sure the hash table has been loaded from the form*/
694
+ this.loadHashTable();
695
+ var value = this.storageHash[encodedKey];
696
+ if (value === undefined) {
697
+ value = null;
698
+ }
699
+ return value;
700
+ },
701
+
702
+ /*Public*/
703
+ remove: function(key) {
704
+
705
+ var encodedKey = encodeURI(key);
706
+
707
+ this.assertValidKey(encodedKey);
708
+ /*make sure the hash table has been loaded from the form*/
709
+ this.loadHashTable();
710
+ /*delete the value*/
711
+ delete this.storageHash[encodedKey];
712
+ /*serialize and save the hash table into the form*/
713
+ this.saveHashTable();
714
+ },
715
+
716
+ /*Public: Clears out all saved data.*/
717
+ reset: function() {
718
+ this.storageField.value = "";
719
+ this.storageHash = {};
720
+ },
721
+
722
+ /*Public*/
723
+ hasKey: function(key) {
724
+
725
+ var encodedKey = encodeURI(key);
726
+
727
+ this.assertValidKey(encodedKey);
728
+ /*make sure the hash table has been loaded from the form*/
729
+ this.loadHashTable();
730
+ return (typeof this.storageHash[encodedKey] !== "undefined");
731
+ },
732
+
733
+ /*Public*/
734
+ isValidKey: function(key) {
735
+ return (typeof key === "string");
736
+ //TODO - should we ban hash signs and other special characters?
737
+ },
738
+
739
+ /*- - - - - - - - - - - -*/
740
+
741
+ /*Private - CSS strings utilized by both objects to hide or show behind-the-scenes DOM elements*/
742
+ showStyles: 'border:0;margin:0;padding:0;',
743
+ hideStyles: 'left:-1000px;top:-1000px;width:1px;height:1px;border:0;position:absolute;',
744
+
745
+ /*Private - debug mode flag*/
746
+ debugMode: false,
747
+
748
+ /*Private: Our hash of key name/values.*/
749
+ storageHash: {},
750
+
751
+ /*Private: If true, we have loaded our hash table out of the storage form.*/
752
+ hashLoaded: false,
753
+
754
+ /*Private: DOM reference to our history field*/
755
+ storageField: null,
756
+
757
+ /*Private: Assert that a key is valid; throw an exception if it not.*/
758
+ assertValidKey: function(key) {
759
+ var isValid = this.isValidKey(key);
760
+ if (!isValid && this.debugMode) {
761
+ throw new Error("Please provide a valid key for window.historyStorage. Invalid key = " + key + ".");
762
+ }
763
+ },
764
+
765
+ /*Private: Load the hash table up from the form.*/
766
+ loadHashTable: function() {
767
+ if (!this.hashLoaded) {
768
+ var serializedHashTable = this.storageField.value;
769
+ if (serializedHashTable !== "" && serializedHashTable !== null) {
770
+ this.storageHash = this.fromJSON(serializedHashTable);
771
+ this.hashLoaded = true;
772
+ }
773
+ }
774
+ },
775
+ /*Private: Save the hash table into the form.*/
776
+ saveHashTable: function() {
777
+ this.loadHashTable();
778
+ var serializedHashTable = this.toJSON(this.storageHash);
779
+ this.storageField.value = serializedHashTable;
780
+ },
781
+ /*Private: Bridges for our JSON implementations - both rely on 2007 JSON.org library - can be overridden by options bundle*/
782
+ toJSON: function(o) {
783
+ return o.toJSONString();
784
+ },
785
+ fromJSON: function(s) {
786
+ return s.parseJSON();
787
+ }
788
+ };
789
+
790
+
791
+ /*******************************************************************/
792
+ /** QueryString Object from http://adamv.com/dev/javascript/querystring */
793
+ /* Client-side access to querystring name=value pairs
794
+ Version 1.3
795
+ 28 May 2008
796
+
797
+ License (Simplified BSD):
798
+ http://adamv.com/dev/javascript/qslicense.txt
799
+ */
800
+ function Querystring(qs) { // optionally pass a querystring to parse
801
+ this.params = {};
802
+
803
+ if (qs == null) qs = location.search.substring(1, location.search.length);
804
+ if (qs.length == 0) return;
805
+
806
+ // Turn <plus> back to <space>
807
+ // See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
808
+ qs = qs.replace(/\+/g, ' ');
809
+ var args = qs.split('&'); // parse out name/value pairs separated via &
810
+
811
+ // split out each name=value pair
812
+ for (var i = 0; i < args.length; i++) {
813
+ var pair = args[i].split('=');
814
+ var name = decodeURI(pair[0]);
815
+
816
+ var value = (pair.length==2)
817
+ ? decodeURI(pair[1])
818
+ : name;
819
+
820
+ this.params[name] = value;
821
+ }
822
+ }
823
+
824
+ Querystring.prototype.get = function(key, default_) {
825
+ var value = this.params[key];
826
+ return (value != null) ? value : default_;
827
+ }
828
+
829
+ Querystring.prototype.contains = function(key) {
830
+ var value = this.params[key];
831
+ return (value != null);
832
+ }
833
+
834
+ /*******************************************************************/
835
+ /* Added by Ed Wildgoose - MailASail */
836
+ /* Initialise the library and add our history callback */
837
+ /*******************************************************************/
838
+ window.dhtmlHistory.create({
839
+ toJSON: function(o) {
840
+ return Object.toJSON(o);
841
+ }
842
+ , fromJSON: function(s) {
843
+ return s.evalJSON();
844
+ }
845
+
846
+ // Enable this to assist with debugging
847
+ // , debugMode: true
848
+
849
+ // dhtmlHistory has been modified not to need the next line
850
+ // But left in for robustness when updating dhtmlHistory
851
+ , blankURL: '/blank.html?'
852
+ });
853
+
854
+ /** Our callback to receive history
855
+ change events. */
856
+ var handleHistoryChange = function(pageId, pageData) {
857
+ if (!pageData) return;
858
+ var info = pageId.split(':');
859
+ var id = info[0];
860
+ pageData += '&_method=get';
861
+ new Ajax.Updater(id+'-content', pageData, {asynchronous:true, evalScripts:true, method: 'get', onLoading:function(request){Element.show(id+'-pagination-loading-indicator');}});
862
+ }
863
+
864
+ window.onload = function() {
865
+ dhtmlHistory.initialize(handleHistoryChange);
866
+ };
867
+