backlog 0.37.2 → 0.41.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (568) hide show
  1. checksums.yaml +7 -0
  2. data/History.txt +128 -0
  3. data/README.txt +4 -2
  4. data/bin/backlog +1 -1
  5. data/lib/array_helper.rb +4 -4
  6. data/{vendor/plugins → lib}/backlog_jira/README +0 -0
  7. data/{vendor/plugins → lib}/backlog_jira/Rakefile +0 -0
  8. data/{vendor/plugins → lib}/backlog_jira/generators/backlog_jira/backlog_jira_generator.rb +0 -0
  9. data/{vendor/plugins → lib}/backlog_jira/generators/backlog_jira/templates/migration.rb +0 -0
  10. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/history_model_generator.rb +0 -0
  11. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/fixtures.yml +0 -0
  12. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/functional_test.rb +0 -0
  13. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/model.rb +0 -0
  14. data/{vendor/plugins → lib}/backlog_jira/generators/history_model/templates/unit_test.rb +0 -0
  15. data/lib/backlog_jira/init.rb +66 -0
  16. data/{vendor/plugins → lib}/backlog_jira/install.rb +0 -0
  17. data/{vendor/plugins → lib}/backlog_jira/lib/backlog_jira.rb +0 -0
  18. data/{vendor/plugins → lib}/backlog_jira/lib/tasks/backlog_jira_tasks.rake +0 -0
  19. data/{vendor/plugins → lib}/backlog_jira/test/backlog_jira_test.rb +0 -0
  20. data/{vendor/plugins → lib}/backlog_jira/uninstall.rb +0 -0
  21. data/lib/big_decimal_yaml_fix.rb +16 -25
  22. data/lib/tasks/backup.rake +18 -18
  23. data/lib/time_extras.rb +6 -6
  24. data/lib/user_system.rb +41 -38
  25. data/lib/version_from_history.rb +2 -2
  26. metadata +196 -749
  27. data/Capfile +0 -2
  28. data/Gemfile +0 -34
  29. data/Gemfile.lock +0 -139
  30. data/MODIFICATIONS.txt +0 -13
  31. data/Manifest.txt +0 -0
  32. data/README_LOGIN_SUGAR +0 -194
  33. data/Rakefile +0 -73
  34. data/Rakefile~ +0 -73
  35. data/Screenshot.png +0 -0
  36. data/app/controllers/absences_controller.rb +0 -67
  37. data/app/controllers/application_controller.rb +0 -185
  38. data/app/controllers/application_controller.rb.rails2 +0 -186
  39. data/app/controllers/customers_controller.rb +0 -51
  40. data/app/controllers/dashboard_controller.rb +0 -17
  41. data/app/controllers/estimates_controller.rb +0 -49
  42. data/app/controllers/groups_controller.rb +0 -65
  43. data/app/controllers/parties_controller.rb +0 -33
  44. data/app/controllers/periods_controller.rb +0 -242
  45. data/app/controllers/projects_controller.rb +0 -185
  46. data/app/controllers/public_holidays_controller.rb +0 -70
  47. data/app/controllers/search_controller.rb +0 -15
  48. data/app/controllers/task_files_controller.rb +0 -19
  49. data/app/controllers/tasks_controller.rb +0 -305
  50. data/app/controllers/user_controller.rb +0 -251
  51. data/app/controllers/welcome_controller.rb +0 -29
  52. data/app/controllers/work_locks_controller.rb +0 -88
  53. data/app/controllers/works_controller.rb +0 -383
  54. data/app/helpers/absences_helper.rb +0 -2
  55. data/app/helpers/application_helper.rb +0 -119
  56. data/app/helpers/application_helper.rb.rails2 +0 -118
  57. data/app/helpers/customers_helper.rb +0 -2
  58. data/app/helpers/dashboard_helper.rb +0 -2
  59. data/app/helpers/estimates_helper.rb +0 -2
  60. data/app/helpers/groups_helper.rb +0 -2
  61. data/app/helpers/parties_helper.rb +0 -2
  62. data/app/helpers/periods_helper.rb +0 -57
  63. data/app/helpers/projects_helper.rb +0 -74
  64. data/app/helpers/public_holidays_helper.rb +0 -2
  65. data/app/helpers/search_helper.rb +0 -2
  66. data/app/helpers/task_files_helper.rb +0 -2
  67. data/app/helpers/tasks_helper.rb +0 -2
  68. data/app/helpers/user_helper.rb +0 -53
  69. data/app/helpers/welcome_helper.rb +0 -2
  70. data/app/helpers/work_locks_helper.rb +0 -2
  71. data/app/helpers/works_helper.rb +0 -5
  72. data/app/mailers/user_notify.rb +0 -76
  73. data/app/models/absence.rb +0 -27
  74. data/app/models/chart.rb +0 -5
  75. data/app/models/clock.rb +0 -14
  76. data/app/models/configuration.rb +0 -2
  77. data/app/models/customer.rb +0 -2
  78. data/app/models/estimate.rb +0 -17
  79. data/app/models/group.rb +0 -16
  80. data/app/models/party.rb +0 -27
  81. data/app/models/period.rb +0 -251
  82. data/app/models/project.rb +0 -49
  83. data/app/models/public_holiday.rb +0 -13
  84. data/app/models/report_filter.rb +0 -29
  85. data/app/models/search_result.rb +0 -8
  86. data/app/models/sidebar.rb +0 -41
  87. data/app/models/task.rb +0 -425
  88. data/app/models/task_file.rb +0 -7
  89. data/app/models/task_notify.rb +0 -27
  90. data/app/models/user.rb +0 -146
  91. data/app/models/work.rb +0 -191
  92. data/app/models/work_lock.rb +0 -11
  93. data/app/models/work_lock_nagger.rb +0 -60
  94. data/app/models/work_lock_notify.rb +0 -43
  95. data/app/models/works_report_filter.rb +0 -27
  96. data/app/views/absences/_form.rhtml +0 -10
  97. data/app/views/absences/edit.rhtml +0 -9
  98. data/app/views/absences/list.rhtml +0 -25
  99. data/app/views/absences/new.rhtml +0 -8
  100. data/app/views/absences/show.rhtml +0 -8
  101. data/app/views/customers/_form.rhtml +0 -7
  102. data/app/views/customers/_name_list.rhtml +0 -5
  103. data/app/views/customers/edit.rhtml +0 -9
  104. data/app/views/customers/list.rhtml +0 -28
  105. data/app/views/customers/new.rhtml +0 -8
  106. data/app/views/customers/show.rhtml +0 -8
  107. data/app/views/dashboard/show.rhtml +0 -24
  108. data/app/views/display_notice.rjs +0 -1
  109. data/app/views/groups/_form.rhtml +0 -7
  110. data/app/views/groups/edit.rhtml +0 -57
  111. data/app/views/groups/list.rhtml +0 -26
  112. data/app/views/groups/new.rhtml +0 -7
  113. data/app/views/groups/set_member.rjs +0 -1
  114. data/app/views/layouts/_headers.rhtml +0 -24
  115. data/app/views/layouts/_left_top.rhtml +0 -33
  116. data/app/views/layouts/_notice.rhtml +0 -12
  117. data/app/views/layouts/_shortcuts.rhtml +0 -22
  118. data/app/views/layouts/_shortcuts_js.rhtml +0 -19
  119. data/app/views/layouts/mwrt002.html.erb +0 -44
  120. data/app/views/layouts/wide.rhtml +0 -23
  121. data/app/views/periods/_burn_down_chart.rhtml +0 -9
  122. data/app/views/periods/_form.rhtml +0 -74
  123. data/app/views/periods/_link.rhtml +0 -3
  124. data/app/views/periods/_show_active.rhtml +0 -61
  125. data/app/views/periods/_sidebar_block.rhtml +0 -11
  126. data/app/views/periods/_title.rhtml +0 -18
  127. data/app/views/periods/edit.rhtml +0 -10
  128. data/app/views/periods/finish_task.rjs +0 -4
  129. data/app/views/periods/move_task_to_period.rjs +0 -4
  130. data/app/views/periods/new.rhtml +0 -9
  131. data/app/views/periods/order.rjs +0 -0
  132. data/app/views/periods/reopen_task.rjs +0 -6
  133. data/app/views/periods/show.rhtml +0 -56
  134. data/app/views/projects/_buttons.rhtml +0 -4
  135. data/app/views/projects/_form.rhtml +0 -44
  136. data/app/views/projects/_name_list.rhtml +0 -5
  137. data/app/views/projects/edit.rhtml +0 -14
  138. data/app/views/projects/finish_task.rjs +0 -3
  139. data/app/views/projects/list.rhtml +0 -16
  140. data/app/views/projects/move_task_to_period.rjs +0 -3
  141. data/app/views/projects/new.rhtml +0 -11
  142. data/app/views/projects/reopen_task.rjs +0 -3
  143. data/app/views/projects/show.rhtml +0 -39
  144. data/app/views/public_holidays/_form.rhtml +0 -7
  145. data/app/views/public_holidays/edit.rhtml +0 -9
  146. data/app/views/public_holidays/list.rhtml +0 -25
  147. data/app/views/public_holidays/new.rhtml +0 -8
  148. data/app/views/public_holidays/show.rhtml +0 -8
  149. data/app/views/redirect.rjs +0 -1
  150. data/app/views/search/results.rhtml +0 -40
  151. data/app/views/task_notify/invite.en.html.erb +0 -13
  152. data/app/views/task_notify/invite.no.html.erb +0 -13
  153. data/app/views/tasks/_backlog_header.rhtml +0 -17
  154. data/app/views/tasks/_completed.rhtml +0 -18
  155. data/app/views/tasks/_fields_header.rhtml +0 -13
  156. data/app/views/tasks/_form.rhtml +0 -125
  157. data/app/views/tasks/_invite.rjs +0 -1
  158. data/app/views/tasks/_period_header.rhtml +0 -1
  159. data/app/views/tasks/_task.rhtml +0 -116
  160. data/app/views/tasks/_update.rjs +0 -2
  161. data/app/views/tasks/edit.rhtml +0 -81
  162. data/app/views/tasks/grab.rhtml +0 -9
  163. data/app/views/tasks/invite.rhtml +0 -9
  164. data/app/views/tasks/list.rhtml +0 -77
  165. data/app/views/tasks/list_started.rhtml +0 -62
  166. data/app/views/tasks/new.rhtml +0 -10
  167. data/app/views/tasks/notes.rhtml +0 -12
  168. data/app/views/tasks/start_work.rjs +0 -1
  169. data/app/views/tasks/update_estimate.rjs +0 -3
  170. data/app/views/user/_edit.rhtml +0 -31
  171. data/app/views/user/_password.rhtml +0 -21
  172. data/app/views/user/change_password.rhtml +0 -19
  173. data/app/views/user/delete.rhtml +0 -14
  174. data/app/views/user/edit.rhtml +0 -154
  175. data/app/views/user/forgot_password.rhtml +0 -19
  176. data/app/views/user/login.rhtml +0 -33
  177. data/app/views/user/logout.rhtml +0 -8
  178. data/app/views/user/set_group.rjs +0 -1
  179. data/app/views/user/signup.rhtml +0 -15
  180. data/app/views/user/toggle_work_lock_monitoring.rjs +0 -2
  181. data/app/views/user/welcome.rhtml +0 -8
  182. data/app/views/user_notify/change_password.en.html.erb +0 -10
  183. data/app/views/user_notify/change_password.no.html.erb +0 -10
  184. data/app/views/user_notify/forgot_password.en.html.erb +0 -11
  185. data/app/views/user_notify/forgot_password.no.html.erb +0 -11
  186. data/app/views/user_notify/monitoring.en.html.erb +0 -3
  187. data/app/views/user_notify/monitoring.no.html.erb +0 -3
  188. data/app/views/user_notify/monitoring_invitation.en.html.erb +0 -7
  189. data/app/views/user_notify/monitoring_invitation.no.html.erb +0 -7
  190. data/app/views/user_notify/signup.en.html.erb +0 -12
  191. data/app/views/user_notify/signup.no.html.erb +0 -12
  192. data/app/views/work_lock_notify/lock.en.html.erb +0 -7
  193. data/app/views/work_lock_notify/lock.no.html.erb +0 -7
  194. data/app/views/work_lock_notify/nag.en.html.erb +0 -6
  195. data/app/views/work_lock_notify/nag.no.html.erb +0 -7
  196. data/app/views/work_locks/_form.rhtml +0 -10
  197. data/app/views/work_locks/edit.rhtml +0 -9
  198. data/app/views/work_locks/list.rhtml +0 -25
  199. data/app/views/work_locks/new.rhtml +0 -8
  200. data/app/views/work_locks/show.rhtml +0 -8
  201. data/app/views/works/_buttons.rhtml +0 -2
  202. data/app/views/works/_description_list.rhtml +0 -5
  203. data/app/views/works/_form.rhtml +0 -107
  204. data/app/views/works/_new_row.rhtml +0 -141
  205. data/app/views/works/_row.rhtml +0 -115
  206. data/app/views/works/_row_field.rhtml +0 -17
  207. data/app/views/works/_task_id_list.rhtml +0 -5
  208. data/app/views/works/_weekly_work_sheet_buttons.rhtml +0 -22
  209. data/app/views/works/daily_work_sheet.rhtml +0 -108
  210. data/app/views/works/edit.rhtml +0 -11
  211. data/app/views/works/list.rhtml +0 -148
  212. data/app/views/works/list_excel.rhtml +0 -114
  213. data/app/views/works/new.rhtml +0 -12
  214. data/app/views/works/show.rhtml +0 -10
  215. data/app/views/works/timeliste.rhtml +0 -884
  216. data/app/views/works/update_new_row.rjs +0 -28
  217. data/app/views/works/update_row.rjs +0 -18
  218. data/app/views/works/update_time.rjs +0 -3
  219. data/app/views/works/weekly_work_sheet.rhtml +0 -64
  220. data/app/views/works/weekly_work_sheet_details.rhtml +0 -102
  221. data/backlog.gemspec +0 -44
  222. data/config.ru +0 -4
  223. data/config/application.rb +0 -11
  224. data/config/boot.rb +0 -13
  225. data/config/database.yml +0 -15
  226. data/config/database.yml~ +0 -17
  227. data/config/environment.rb +0 -100
  228. data/config/environments/development.rb +0 -30
  229. data/config/environments/development.rb.rails2 +0 -26
  230. data/config/environments/production.rb +0 -33
  231. data/config/environments/test.rb +0 -24
  232. data/config/environments/user_environment.rb +0 -21
  233. data/config/initializers/backtrace_silencers.rb +0 -7
  234. data/config/initializers/inflections.rb +0 -10
  235. data/config/initializers/jdbc.rb +0 -7
  236. data/config/initializers/mime_types.rb +0 -5
  237. data/config/initializers/secret_token.rb +0 -7
  238. data/config/initializers/session_store.rb +0 -8
  239. data/config/locales/en.yml +0 -200
  240. data/config/locales/no.yml +0 -193
  241. data/config/mime_types.yaml +0 -1
  242. data/config/routes.rb +0 -5
  243. data/config/war.rb +0 -27
  244. data/config/warble.rb +0 -84
  245. data/cruise_build.sh +0 -14
  246. data/cruise_config.rb +0 -5
  247. data/db/migrate/001_create_tasks.rb +0 -22
  248. data/db/migrate/003_add_estimation_points.rb +0 -16
  249. data/db/migrate/004_add_period.rb +0 -63
  250. data/db/migrate/005_add_field_work_started_at.rb +0 -9
  251. data/db/migrate/006_works_data_fix.rb +0 -13
  252. data/db/migrate/007_add_task_created_at.rb +0 -23
  253. data/db/migrate/008_add_backlog_options.rb +0 -13
  254. data/db/migrate/009_add_subtasks.rb +0 -29
  255. data/db/migrate/010_add_work_start.rb +0 -9
  256. data/db/migrate/011_login_sugar.rb +0 -21
  257. data/db/migrate/012_add_resolution.rb +0 -12
  258. data/db/migrate/013_create_estimates.rb +0 -20
  259. data/db/migrate/014_add_customer_option.rb +0 -11
  260. data/db/migrate/015_add_user_option.rb +0 -33
  261. data/db/migrate/016_add_invoicable_flag.rb +0 -11
  262. data/db/migrate/017_increase_backlog_name_limit.rb +0 -10
  263. data/db/migrate/018_create_groups.rb +0 -118
  264. data/db/migrate/019_remove_unique_index_for_period_position.rb +0 -9
  265. data/db/migrate/020_create_task_files.rb +0 -17
  266. data/db/migrate/021_create_work_accounts.rb +0 -111
  267. data/db/migrate/022_remove_track_done_flag.rb +0 -9
  268. data/db/migrate/023_add_indices_for_burn_down_chart.rb +0 -13
  269. data/db/migrate/024_add_sprint_option.rb +0 -10
  270. data/db/migrate/025_add_simple_auditing_of_tasks.rb +0 -11
  271. data/db/migrate/026_add_users_to_tasks.rb +0 -14
  272. data/db/migrate/027_create_work_locks.rb +0 -25
  273. data/db/migrate/028_create_absences.rb +0 -34
  274. data/db/migrate/029_add_work_comments.rb +0 -9
  275. data/db/migrate/030_create_public_holidays.rb +0 -11
  276. data/db/migrate/031_expand_work_done_precision.rb +0 -9
  277. data/db/migrate/20100720124707_merge_work_account_into_backlog.rb +0 -74
  278. data/db/migrate/20101006092700_rename_backlogs_to_projects.rb +0 -22
  279. data/db/migrate/20101006092700_rename_backlogs_to_projects.rb~ +0 -22
  280. data/db/schema.rb +0 -159
  281. data/db/seeds.rb +0 -7
  282. data/db/test.db +0 -0
  283. data/etc/backlog.conf +0 -32
  284. data/ext/mkrf_conf.rb +0 -26
  285. data/lib/class_table_inheritance.rb +0 -224
  286. data/lib/postgresql-8.2-504.jdbc4.jar +0 -0
  287. data/lib/tasks/jdbc.rake +0 -8
  288. data/lib/url_for_fix.rb +0 -30
  289. data/nbproject/private/config.properties +0 -0
  290. data/nbproject/private/private.properties +0 -1
  291. data/nbproject/private/private.xml +0 -4
  292. data/nbproject/private/rake-t.txt +0 -95
  293. data/nbproject/project.properties +0 -4
  294. data/nbproject/project.xml +0 -9
  295. data/public/404.html +0 -26
  296. data/public/422.html +0 -26
  297. data/public/500.html +0 -26
  298. data/public/Frav/303/246rsskjema.xls +0 -0
  299. data/public/applets/bsf.jar +0 -0
  300. data/public/applets/jruby.jar +0 -0
  301. data/public/favicon.ico +0 -0
  302. data/public/images/add.png +0 -0
  303. data/public/images/add.svg +0 -70
  304. data/public/images/ajax-loading.gif +0 -0
  305. data/public/images/appunti_architetto_franc_01.svg +0 -92
  306. data/public/images/arrow-down.gif +0 -0
  307. data/public/images/arrow-up.gif +0 -0
  308. data/public/images/arrow07_2.png +0 -0
  309. data/public/images/arrow07_4.png +0 -0
  310. data/public/images/arrow_down.png +0 -0
  311. data/public/images/arrow_down.svg +0 -59
  312. data/public/images/arrow_left.png +0 -0
  313. data/public/images/arrow_left.svg +0 -59
  314. data/public/images/arrow_right.png +0 -0
  315. data/public/images/arrow_right.svg +0 -59
  316. data/public/images/arrow_up.png +0 -0
  317. data/public/images/arrow_up.svg +0 -59
  318. data/public/images/black-70.png +0 -0
  319. data/public/images/black.png +0 -0
  320. data/public/images/blank.jpg +0 -0
  321. data/public/images/blank.png +0 -0
  322. data/public/images/cestino_pieno_architetto_01.svg +0 -470
  323. data/public/images/checkmark.png +0 -0
  324. data/public/images/checkmark_org.png +0 -0
  325. data/public/images/clipboard.png +0 -0
  326. data/public/images/clipboard.svg +0 -62
  327. data/public/images/construction_hammer_jon__01.svg +0 -116
  328. data/public/images/delete.png +0 -0
  329. data/public/images/email.png +0 -0
  330. data/public/images/email_grey.png +0 -0
  331. data/public/images/eraser.png +0 -0
  332. data/public/images/eraser_org.png +0 -0
  333. data/public/images/ernes_stop.png +0 -0
  334. data/public/images/ernes_stop_org.png +0 -0
  335. data/public/images/flag_red.png +0 -0
  336. data/public/images/flag_yellow.png +0 -0
  337. data/public/images/grab.png +0 -0
  338. data/public/images/grab_gray.png +0 -0
  339. data/public/images/group.png +0 -0
  340. data/public/images/hammer.png +0 -0
  341. data/public/images/header.jpg +0 -0
  342. data/public/images/nextlabel.gif +0 -0
  343. data/public/images/pagebak.jpg +0 -0
  344. data/public/images/paper3.svg +0 -54
  345. data/public/images/period.png +0 -0
  346. data/public/images/period_org.png +0 -0
  347. data/public/images/person.org.png +0 -0
  348. data/public/images/prevlabel.gif +0 -0
  349. data/public/images/question.svg +0 -56
  350. data/public/images/rails.png +0 -0
  351. data/public/images/refresh.png +0 -0
  352. data/public/images/rmagick.gif +0 -0
  353. data/public/images/rmagick_270.gif +0 -0
  354. data/public/images/tabella_architetto_franc_01.svg +0 -105
  355. data/public/images/task.png +0 -0
  356. data/public/images/text-x-generic.png +0 -0
  357. data/public/images/user group.png +0 -0
  358. data/public/images/user.png +0 -0
  359. data/public/images/view_fullscreen.png +0 -0
  360. data/public/images/work_account.png +0 -0
  361. data/public/javascripts/application.js +0 -2
  362. data/public/javascripts/builder.js +0 -136
  363. data/public/javascripts/controls.js +0 -965
  364. data/public/javascripts/dragdrop.js +0 -974
  365. data/public/javascripts/effects.js +0 -1123
  366. data/public/javascripts/lightwindow.js +0 -1921
  367. data/public/javascripts/prototype.js +0 -6001
  368. data/public/javascripts/rails.js +0 -175
  369. data/public/javascripts/ruby.js +0 -46
  370. data/public/javascripts/scriptaculous.js +0 -58
  371. data/public/javascripts/slider.js +0 -275
  372. data/public/javascripts/sound.js +0 -55
  373. data/public/javascripts/unittest.js +0 -568
  374. data/public/javascripts/zapatec/utils/transport.js +0 -2217
  375. data/public/javascripts/zapatec/utils/utils.js +0 -1799
  376. data/public/javascripts/zapatec/utils/zapatec.js +0 -90
  377. data/public/javascripts/zapatec/utils/zpeventdriven.js +0 -212
  378. data/public/javascripts/zapatec/utils/zpwidget.js +0 -729
  379. data/public/javascripts/zapatec/zpcal/lang/calendar-no.js +0 -124
  380. data/public/javascripts/zapatec/zpcal/src/calendar-core.js +0 -2878
  381. data/public/javascripts/zapatec/zpcal/src/calendar-date-core.js +0 -348
  382. data/public/javascripts/zapatec/zpcal/src/calendar-setup.js +0 -360
  383. data/public/javascripts/zapatec/zpcal/src/calendar.js +0 -35
  384. data/public/robots.txt +0 -5
  385. data/public/stylesheets/backlog.css +0 -135
  386. data/public/stylesheets/lightwindow.css +0 -376
  387. data/public/stylesheets/mwrt002.css +0 -54
  388. data/public/stylesheets/mwrt002MAC.css +0 -3
  389. data/public/stylesheets/mwrt002NN.css +0 -3
  390. data/public/stylesheets/scaffold.css +0 -74
  391. data/public/stylesheets/user.css +0 -74
  392. data/public/stylesheets/zpcal/themes/green.css +0 -153
  393. data/public/stylesheets/zpcal/themes/layouts/layout-2d.css +0 -134
  394. data/public/stylesheets/zpcal/themes/layouts/layout-common.css +0 -74
  395. data/public/stylesheets/zpcal/themes/menuarrow.gif +0 -0
  396. data/public/stylesheets/zpcal/themes/scroller-down.gif +0 -0
  397. data/public/stylesheets/zpcal/themes/scroller-up.gif +0 -0
  398. data/script/rails +0 -6
  399. data/test/client/login.rb +0 -23
  400. data/test/client/login_test.rb +0 -64
  401. data/test/client/setup.rb +0 -25
  402. data/test/fixtures/absences.yml +0 -11
  403. data/test/fixtures/configurations.yml +0 -5
  404. data/test/fixtures/customers.yml +0 -7
  405. data/test/fixtures/estimates.yml +0 -10
  406. data/test/fixtures/groups.yml +0 -6
  407. data/test/fixtures/groups_users.yml +0 -3
  408. data/test/fixtures/parties.yml +0 -32
  409. data/test/fixtures/periods.yml +0 -24
  410. data/test/fixtures/projects.yml +0 -8
  411. data/test/fixtures/public_holidays.yml +0 -7
  412. data/test/fixtures/task_files.yml +0 -13
  413. data/test/fixtures/tasks.yml +0 -82
  414. data/test/fixtures/users.yml +0 -59
  415. data/test/fixtures/work_lock_subscriptions.yml +0 -7
  416. data/test/fixtures/work_locks.yml +0 -11
  417. data/test/fixtures/works.yml +0 -47
  418. data/test/functional/absences_controller_test.rb +0 -93
  419. data/test/functional/customers_controller_test.rb +0 -93
  420. data/test/functional/dashboard_controller_test.rb +0 -18
  421. data/test/functional/estimates_controller_test.rb +0 -40
  422. data/test/functional/groups_controller_test.rb +0 -120
  423. data/test/functional/parties_controller_test.rb +0 -35
  424. data/test/functional/periods_controller_test.rb +0 -297
  425. data/test/functional/projects_controller_test.rb +0 -152
  426. data/test/functional/public_holidays_controller_test.rb +0 -93
  427. data/test/functional/search_controller_test.rb +0 -24
  428. data/test/functional/task_files_controller_test.rb +0 -29
  429. data/test/functional/tasks_controller_test.rb +0 -229
  430. data/test/functional/user_controller_test.rb +0 -261
  431. data/test/functional/welcome_controller_test.rb +0 -62
  432. data/test/functional/work_locks_controller_test.rb +0 -93
  433. data/test/functional/works_controller_test.rb +0 -220
  434. data/test/integration/user_system_test.rb +0 -95
  435. data/test/mocks/test/clock.rb +0 -14
  436. data/test/performance/browsing_test.rb +0 -9
  437. data/test/performance/common.rb +0 -91
  438. data/test/performance/jetty_test.rb +0 -15
  439. data/test/performance/server_test.rb +0 -17
  440. data/test/test_helper.rb +0 -119
  441. data/test/test_helper.rb~ +0 -121
  442. data/test/unit/absence_test.rb +0 -29
  443. data/test/unit/big_decimal_yaml_fix_test.rb +0 -15
  444. data/test/unit/configuration_test.rb +0 -10
  445. data/test/unit/customer_test.rb +0 -10
  446. data/test/unit/estimate_test.rb +0 -10
  447. data/test/unit/group_test.rb +0 -10
  448. data/test/unit/party_test.rb +0 -10
  449. data/test/unit/period_test.rb +0 -9
  450. data/test/unit/public_holiday_test.rb +0 -10
  451. data/test/unit/task_file_test.rb +0 -10
  452. data/test/unit/task_test.rb +0 -73
  453. data/test/unit/time_of_day_test.rb +0 -23
  454. data/test/unit/user_test.rb +0 -148
  455. data/test/unit/work_lock_subscription_test.rb +0 -10
  456. data/test/unit/work_lock_test.rb +0 -10
  457. data/test/unit/work_test.rb +0 -81
  458. data/vendor/plugins/acts_as_list/README +0 -23
  459. data/vendor/plugins/acts_as_list/init.rb +0 -3
  460. data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +0 -256
  461. data/vendor/plugins/acts_as_list/test/list_test.rb +0 -332
  462. data/vendor/plugins/acts_as_tree/README +0 -26
  463. data/vendor/plugins/acts_as_tree/Rakefile +0 -22
  464. data/vendor/plugins/acts_as_tree/init.rb +0 -1
  465. data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +0 -96
  466. data/vendor/plugins/acts_as_tree/test/abstract_unit.rb +0 -0
  467. data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +0 -219
  468. data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
  469. data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
  470. data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
  471. data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
  472. data/vendor/plugins/assert_cookie/MIT-LICENSE +0 -7
  473. data/vendor/plugins/assert_cookie/README +0 -6
  474. data/vendor/plugins/assert_cookie/Rakefile +0 -21
  475. data/vendor/plugins/assert_cookie/init.rb +0 -1
  476. data/vendor/plugins/assert_cookie/lib/assert_cookie.rb +0 -73
  477. data/vendor/plugins/assert_cookie/meta.yml +0 -7
  478. data/vendor/plugins/assert_cookie/test/test_assert_cookie.rb +0 -124
  479. data/vendor/plugins/assert_cookie/test/test_helper.rb +0 -31
  480. data/vendor/plugins/auto_complete/README +0 -23
  481. data/vendor/plugins/auto_complete/Rakefile +0 -22
  482. data/vendor/plugins/auto_complete/init.rb +0 -2
  483. data/vendor/plugins/auto_complete/lib/auto_complete.rb +0 -47
  484. data/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb +0 -143
  485. data/vendor/plugins/auto_complete/test/auto_complete_test.rb +0 -67
  486. data/vendor/plugins/backlog_jira/init.rb +0 -66
  487. data/vendor/plugins/dynamic_form/MIT-LICENSE +0 -20
  488. data/vendor/plugins/dynamic_form/README +0 -13
  489. data/vendor/plugins/dynamic_form/Rakefile +0 -10
  490. data/vendor/plugins/dynamic_form/dynamic_form.gemspec +0 -12
  491. data/vendor/plugins/dynamic_form/init.rb +0 -1
  492. data/vendor/plugins/dynamic_form/lib/action_view/helpers/dynamic_form.rb +0 -300
  493. data/vendor/plugins/dynamic_form/lib/action_view/locale/en.yml +0 -8
  494. data/vendor/plugins/dynamic_form/lib/dynamic_form.rb +0 -5
  495. data/vendor/plugins/dynamic_form/test/dynamic_form_i18n_test.rb +0 -42
  496. data/vendor/plugins/dynamic_form/test/dynamic_form_test.rb +0 -370
  497. data/vendor/plugins/dynamic_form/test/test_helper.rb +0 -9
  498. data/vendor/plugins/has_history/README +0 -12
  499. data/vendor/plugins/has_history/Rakefile +0 -22
  500. data/vendor/plugins/has_history/generators/history_migration/history_migration_generator.rb +0 -30
  501. data/vendor/plugins/has_history/generators/history_migration/templates/migration.rb +0 -14
  502. data/vendor/plugins/has_history/generators/history_model/history_model_generator.rb +0 -39
  503. data/vendor/plugins/has_history/generators/history_model/templates/fixtures.yml +0 -17
  504. data/vendor/plugins/has_history/generators/history_model/templates/functional_test.rb +0 -129
  505. data/vendor/plugins/has_history/generators/history_model/templates/migration.rb +0 -14
  506. data/vendor/plugins/has_history/generators/history_model/templates/model.rb +0 -4
  507. data/vendor/plugins/has_history/generators/history_model/templates/unit_test.rb +0 -75
  508. data/vendor/plugins/has_history/init.rb +0 -5
  509. data/vendor/plugins/has_history/install.rb +0 -1
  510. data/vendor/plugins/has_history/lib/has_history.rb +0 -178
  511. data/vendor/plugins/has_history/lib/tasks/has_history_tasks.rake +0 -4
  512. data/vendor/plugins/has_history/test/has_history_test.rb +0 -31
  513. data/vendor/plugins/has_history/test/ignorant_master.rb +0 -3
  514. data/vendor/plugins/has_history/test/ignorant_master_history.rb +0 -4
  515. data/vendor/plugins/has_history/test/lone_master.rb +0 -42
  516. data/vendor/plugins/has_history/test/paired_master.rb +0 -5
  517. data/vendor/plugins/has_history/test/paired_master_history.rb +0 -5
  518. data/vendor/plugins/has_history/test/test_helper.rb +0 -154
  519. data/vendor/plugins/has_history/uninstall.rb +0 -1
  520. data/vendor/plugins/prototype_legacy_helper/lib/prototype_legacy_helper.rb +0 -432
  521. data/vendor/plugins/prototype_legacy_helper/test/test_prototype_helper.rb +0 -297
  522. data/vendor/plugins/rails_time/MIT-LICENSE +0 -20
  523. data/vendor/plugins/rails_time/README +0 -28
  524. data/vendor/plugins/rails_time/init.rb +0 -2
  525. data/vendor/plugins/rails_time/lib/activerecord_time_extension.rb +0 -28
  526. data/vendor/plugins/rails_time/lib/time_of_day.rb +0 -88
  527. data/vendor/plugins/rails_time/test/database.yml +0 -18
  528. data/vendor/plugins/rails_time/test/debug.log +0 -1
  529. data/vendor/plugins/rails_time/test/rails_time_test.rb +0 -122
  530. data/vendor/plugins/rails_time/test/schema.rb +0 -10
  531. data/vendor/plugins/rails_time/test/test_helper.rb +0 -17
  532. data/vendor/plugins/verification/MIT-LICENSE +0 -20
  533. data/vendor/plugins/verification/README +0 -34
  534. data/vendor/plugins/verification/Rakefile +0 -22
  535. data/vendor/plugins/verification/init.rb +0 -3
  536. data/vendor/plugins/verification/lib/action_controller/verification.rb +0 -132
  537. data/vendor/plugins/verification/test/test_helper.rb +0 -18
  538. data/vendor/plugins/verification/test/verification_test.rb +0 -270
  539. data/vendor/plugins/will_paginate/LICENSE +0 -18
  540. data/vendor/plugins/will_paginate/README +0 -138
  541. data/vendor/plugins/will_paginate/Rakefile +0 -27
  542. data/vendor/plugins/will_paginate/init.rb +0 -4
  543. data/vendor/plugins/will_paginate/lib/will_paginate.rb +0 -61
  544. data/vendor/plugins/will_paginate/lib/will_paginate/collection.rb +0 -132
  545. data/vendor/plugins/will_paginate/lib/will_paginate/core_ext.rb +0 -80
  546. data/vendor/plugins/will_paginate/lib/will_paginate/finder.rb +0 -181
  547. data/vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb +0 -206
  548. data/vendor/plugins/will_paginate/test/array_pagination_test.rb +0 -131
  549. data/vendor/plugins/will_paginate/test/boot.rb +0 -23
  550. data/vendor/plugins/will_paginate/test/console +0 -9
  551. data/vendor/plugins/will_paginate/test/finder_test.rb +0 -290
  552. data/vendor/plugins/will_paginate/test/fixtures/admin.rb +0 -3
  553. data/vendor/plugins/will_paginate/test/fixtures/developer.rb +0 -11
  554. data/vendor/plugins/will_paginate/test/fixtures/developers_projects.yml +0 -13
  555. data/vendor/plugins/will_paginate/test/fixtures/project.rb +0 -15
  556. data/vendor/plugins/will_paginate/test/fixtures/projects.yml +0 -7
  557. data/vendor/plugins/will_paginate/test/fixtures/replies.yml +0 -34
  558. data/vendor/plugins/will_paginate/test/fixtures/reply.rb +0 -5
  559. data/vendor/plugins/will_paginate/test/fixtures/schema.rb +0 -38
  560. data/vendor/plugins/will_paginate/test/fixtures/topic.rb +0 -4
  561. data/vendor/plugins/will_paginate/test/fixtures/topics.yml +0 -30
  562. data/vendor/plugins/will_paginate/test/fixtures/user.rb +0 -2
  563. data/vendor/plugins/will_paginate/test/fixtures/users.yml +0 -35
  564. data/vendor/plugins/will_paginate/test/helper.rb +0 -25
  565. data/vendor/plugins/will_paginate/test/lib/activerecord_test_case.rb +0 -23
  566. data/vendor/plugins/will_paginate/test/lib/activerecord_test_connector.rb +0 -67
  567. data/vendor/plugins/will_paginate/test/lib/load_fixtures.rb +0 -13
  568. data/vendor/plugins/will_paginate/test/pagination_test.rb +0 -240
@@ -1,7 +0,0 @@
1
- author:
2
- name: Brian Ford
3
- homepage: http://blog.brightredglow.com
4
- summary: Custom Test::Unit Assertion for cookies
5
- homepage: http://planetargon.org
6
- plugin: http://svn.planetargon.org/rails/plugins/assert_cookie
7
- license: MIT
@@ -1,124 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper'
2
-
3
- class AssertCookieTest < Test::Unit::TestCase
4
- include Test::Unit
5
-
6
- def setup
7
- cookies['apples'] = CGI::Cookie.new 'name' => 'apples', 'value' => 'pies'
8
- cookies['pies'] = CGI::Cookie.new 'name' => 'pies', 'value' => ['lemon', 'apple', 'marionberry', 'strawberry']
9
- cookies['secret'] = CGI::Cookie.new 'name' => 'secret', 'secure' => true
10
- cookies['open_secret'] = CGI::Cookie.new 'name' => 'open_secret'
11
- cookies['limited_time'] = CGI::Cookie.new 'name' => 'limited_time',
12
- 'expires' => Time.parse('20 Jan 2010')
13
- cookies['hiking'] = CGI::Cookie.new 'name' => 'hiking', 'path' => '/yellow/brick/road'
14
- cookies['planet_argon'] = CGI::Cookie.new 'name' => 'planet_argon', 'domain' => 'planetargon.com'
15
- end
16
-
17
- def cookies
18
- @cookies ||= {}
19
- end
20
-
21
- def test_assertion_cookie_does_not_exist_should_pass_when_cookie_not_found
22
- assert_pass { assert_no_cookie :vapor }
23
- end
24
-
25
- def test_assertion_cookie_does_not_exist_should_fail_when_cookie_found
26
- assert_fail { assert_no_cookie :apples }
27
- end
28
-
29
- def test_assertion_cookie_exists_should_fail_when_cookie_not_found
30
- assert_fail { assert_cookie :cauliflower }
31
- end
32
-
33
- def test_assertion_cookie_exists_should_pass_when_cookie_found
34
- assert_pass { assert_cookie :apples }
35
- end
36
-
37
- def test_assertion_cookie_value_should_pass_when_block_returns_true
38
- assert_pass { assert_cookie :apples, :value => lambda { true } }
39
- end
40
-
41
- def test_assertion_cookie_value_should_fail_when_block_returns_false
42
- assert_fail { assert_cookie :apples, :value => lambda { false } }
43
- end
44
-
45
- def test_assertion_cookie_value_should_pass_when_value_found_in_cookie_values
46
- assert_pass { assert_cookie :pies, :value => 'apple' }
47
- end
48
-
49
- def test_assertion_cookie_value_should_fail_when_value_not_found_in_cookie_values
50
- assert_fail { assert_cookie :pies, :value => 'mince meat' }
51
- end
52
-
53
- def test_assertion_cookie_value_should_pass_when_value_from_array_found_in_cookie_values
54
- assert_pass { assert_cookie :pies, :value => ['apple', 'lemon', 'strawberry'] }
55
- end
56
-
57
- def test_assertion_cookie_value_should_fail_when_value_from_array_not_found_in_cookie_values
58
- assert_fail { assert_cookie :pies, :value => ['bread', 'butter'] }
59
- end
60
-
61
- def test_assertion_cookie_path_should_pass_when_paths_are_equal
62
- assert_pass { assert_cookie :hiking, :path => '/yellow/brick/road' }
63
- end
64
-
65
- def test_assertion_cookie_path_should_fail_when_paths_are_not_equal
66
- assert_fail { assert_cookie :hiking, :path => '/bright/red/glow' }
67
- end
68
-
69
- def test_assertion_cookie_path_should_pass_when_block_returns_true
70
- assert_pass { assert_cookie :apples, :path => lambda { true } }
71
- end
72
-
73
- def test_assertion_cookie_path_should_fail_when_block_returns_false
74
- assert_fail { assert_cookie :apples, :path => lambda { false } }
75
- end
76
-
77
- def test_assertion_cookie_domain_should_pass_when_domains_are_equal
78
- assert_pass { assert_cookie :planet_argon, :domain => 'planetargon.com' }
79
- end
80
-
81
- def test_assertion_cookie_domain_should_fail_when_domains_are_not_equal
82
- assert_fail { assert_cookie :planet_argon, :domain => 'google.com' }
83
- end
84
-
85
- def test_assertion_cookie_domain_should_pass_when_block_returns_true
86
- assert_pass { assert_cookie :apples, :domain => lambda { true } }
87
- end
88
-
89
- def test_assertion_cookie_domain_should_fail_when_block_returns_false
90
- assert_fail { assert_cookie :apples, :domain => lambda { false } }
91
- end
92
-
93
- def test_assertion_cookie_expires_should_pass_when_expires_are_equal
94
- assert_pass { assert_cookie :limited_time, :expires => Time.parse('20 Jan 2010') }
95
- end
96
-
97
- def test_assertion_cookie_expires_should_fail_when_expires_are_not_equal
98
- assert_fail { assert_cookie :limited_time, :expires => Time.parse('1 Jan 1999') }
99
- end
100
-
101
- def test_assertion_cookie_expires_should_pass_when_block_returns_true
102
- assert_pass { assert_cookie :apples, :expires => lambda { true } }
103
- end
104
-
105
- def test_assertion_cookie_expires_should_fail_when_block_returns_false
106
- assert_fail { assert_cookie :apples, :expires => lambda { false } }
107
- end
108
-
109
- def test_assertion_cookie_secure_should_pass_when_block_returns_true
110
- assert_pass { assert_cookie :apples, :secure => lambda { true } }
111
- end
112
-
113
- def test_assertion_cookie_secure_should_fail_when_block_returns_false
114
- assert_fail { assert_cookie :apples, :secure => lambda { false } }
115
- end
116
-
117
- def test_assertion_cookie_is_secure_should_pass_when_cookie_is_secure
118
- assert_pass { assert_cookie :secret, :secure => true }
119
- end
120
-
121
- def test_assertion_cookie_is_secure_should_fail_when_cookie_is_not_secure
122
- assert_fail { assert_cookie :open_secret, :secure => true }
123
- end
124
- end
@@ -1,31 +0,0 @@
1
- require 'test/unit'
2
- require 'test/unit/assertions'
3
- require 'cgi'
4
- require 'time'
5
- require 'assert_cookie'
6
-
7
- # This stub for +clean_backtrace+ is included for testing
8
- # because I cannot figure out how to require the version that
9
- # Rails provides. Help me fix this.
10
- module Test
11
- module Unit
12
- module Assertions
13
- def clean_backtrace; yield end
14
- end
15
-
16
- class TestCase
17
- protected
18
- def assert_pass
19
- assert_block("assert_pass must be called with a block.") { block_given? }
20
- yield
21
- end
22
-
23
- def assert_fail
24
- assert_block("assert_fail must be called with a block.") { block_given? }
25
- yield
26
- rescue AssertionFailedError
27
- end
28
- end
29
- end
30
- end
31
-
@@ -1,23 +0,0 @@
1
- Example:
2
-
3
- # Controller
4
- class BlogController < ApplicationController
5
- auto_complete_for :post, :title
6
- end
7
-
8
- # View
9
- <%= text_field_with_auto_complete :post, title %>
10
-
11
- By default, auto_complete_for limits the results to 10 entries,
12
- and sorts by the given field.
13
-
14
- auto_complete_for takes a third parameter, an options hash to
15
- the find method used to search for the records:
16
-
17
- auto_complete_for :post, :title, :limit => 15, :order => 'created_at DESC'
18
-
19
- For more examples, see script.aculo.us:
20
- * http://script.aculo.us/demos/ajax/autocompleter
21
- * http://script.aculo.us/demos/ajax/autocompleter_customized
22
-
23
- Copyright (c) 2007 David Heinemeier Hansson, released under the MIT license
@@ -1,22 +0,0 @@
1
- require 'rake'
2
- require 'rake/testtask'
3
- require 'rake/rdoctask'
4
-
5
- desc 'Default: run unit tests.'
6
- task :default => :test
7
-
8
- desc 'Test auto_complete plugin.'
9
- Rake::TestTask.new(:test) do |t|
10
- t.libs << 'lib'
11
- t.pattern = 'test/**/*_test.rb'
12
- t.verbose = true
13
- end
14
-
15
- desc 'Generate documentation for auto_complete plugin.'
16
- Rake::RDocTask.new(:rdoc) do |rdoc|
17
- rdoc.rdoc_dir = 'rdoc'
18
- rdoc.title = 'Auto Complete'
19
- rdoc.options << '--line-numbers' << '--inline-source'
20
- rdoc.rdoc_files.include('README')
21
- rdoc.rdoc_files.include('lib/**/*.rb')
22
- end
@@ -1,2 +0,0 @@
1
- ActionController::Base.send :include, AutoComplete
2
- ActionController::Base.helper AutoCompleteMacrosHelper
@@ -1,47 +0,0 @@
1
- module AutoComplete
2
-
3
- def self.included(base)
4
- base.extend(ClassMethods)
5
- end
6
-
7
- #
8
- # Example:
9
- #
10
- # # Controller
11
- # class BlogController < ApplicationController
12
- # auto_complete_for :post, :title
13
- # end
14
- #
15
- # # View
16
- # <%= text_field_with_auto_complete :post, title %>
17
- #
18
- # By default, auto_complete_for limits the results to 10 entries,
19
- # and sorts by the given field.
20
- #
21
- # auto_complete_for takes a third parameter, an options hash to
22
- # the find method used to search for the records:
23
- #
24
- # auto_complete_for :post, :title, :limit => 15, :order => 'created_at DESC'
25
- #
26
- # For help on defining text input fields with autocompletion,
27
- # see ActionView::Helpers::JavaScriptHelper.
28
- #
29
- # For more examples, see script.aculo.us:
30
- # * http://script.aculo.us/demos/ajax/autocompleter
31
- # * http://script.aculo.us/demos/ajax/autocompleter_customized
32
- module ClassMethods
33
- def auto_complete_for(object, method, options = {})
34
- define_method("auto_complete_for_#{object}_#{method}") do
35
- find_options = {
36
- :conditions => [ "LOWER(#{method}) LIKE ?", '%' + params[object][method].downcase + '%' ],
37
- :order => "#{method} ASC",
38
- :limit => 10 }.merge!(options)
39
-
40
- @items = object.to_s.camelize.constantize.find(:all, find_options)
41
-
42
- render :inline => "<%= auto_complete_result @items, '#{method}' %>"
43
- end
44
- end
45
- end
46
-
47
- end
@@ -1,143 +0,0 @@
1
- module AutoCompleteMacrosHelper
2
- # Adds AJAX autocomplete functionality to the text input field with the
3
- # DOM ID specified by +field_id+.
4
- #
5
- # This function expects that the called action returns an HTML <ul> list,
6
- # or nothing if no entries should be displayed for autocompletion.
7
- #
8
- # You'll probably want to turn the browser's built-in autocompletion off,
9
- # so be sure to include an <tt>autocomplete="off"</tt> attribute with your text
10
- # input field.
11
- #
12
- # The autocompleter object is assigned to a Javascript variable named <tt>field_id</tt>_auto_completer.
13
- # This object is useful if you for example want to trigger the auto-complete suggestions through
14
- # other means than user input (for that specific case, call the <tt>activate</tt> method on that object).
15
- #
16
- # Required +options+ are:
17
- # <tt>:url</tt>:: URL to call for autocompletion results
18
- # in url_for format.
19
- #
20
- # Addtional +options+ are:
21
- # <tt>:update</tt>:: Specifies the DOM ID of the element whose
22
- # innerHTML should be updated with the autocomplete
23
- # entries returned by the AJAX request.
24
- # Defaults to <tt>field_id</tt> + '_auto_complete'
25
- # <tt>:with</tt>:: A JavaScript expression specifying the
26
- # parameters for the XMLHttpRequest. This defaults
27
- # to 'fieldname=value'.
28
- # <tt>:frequency</tt>:: Determines the time to wait after the last keystroke
29
- # for the AJAX request to be initiated.
30
- # <tt>:indicator</tt>:: Specifies the DOM ID of an element which will be
31
- # displayed while autocomplete is running.
32
- # <tt>:tokens</tt>:: A string or an array of strings containing
33
- # separator tokens for tokenized incremental
34
- # autocompletion. Example: <tt>:tokens => ','</tt> would
35
- # allow multiple autocompletion entries, separated
36
- # by commas.
37
- # <tt>:min_chars</tt>:: The minimum number of characters that should be
38
- # in the input field before an Ajax call is made
39
- # to the server.
40
- # <tt>:on_hide</tt>:: A Javascript expression that is called when the
41
- # autocompletion div is hidden. The expression
42
- # should take two variables: element and update.
43
- # Element is a DOM element for the field, update
44
- # is a DOM element for the div from which the
45
- # innerHTML is replaced.
46
- # <tt>:on_show</tt>:: Like on_hide, only now the expression is called
47
- # then the div is shown.
48
- # <tt>:after_update_element</tt>:: A Javascript expression that is called when the
49
- # user has selected one of the proposed values.
50
- # The expression should take two variables: element and value.
51
- # Element is a DOM element for the field, value
52
- # is the value selected by the user.
53
- # <tt>:select</tt>:: Pick the class of the element from which the value for
54
- # insertion should be extracted. If this is not specified,
55
- # the entire element is used.
56
- # <tt>:method</tt>:: Specifies the HTTP verb to use when the autocompletion
57
- # request is made. Defaults to POST.
58
- def auto_complete_field(field_id, options = {})
59
- function = "var #{field_id}_auto_completer = new Ajax.Autocompleter("
60
- function << "'#{field_id}', "
61
- function << "'" + (options[:update] || "#{field_id}_auto_complete") + "', "
62
- function << "'#{url_for(options[:url])}'"
63
-
64
- js_options = {}
65
- js_options[:tokens] = array_or_string_for_javascript(options[:tokens]) if options[:tokens]
66
- js_options[:callback] = "function(element, value) { return #{options[:with]} }" if options[:with]
67
- js_options[:indicator] = "'#{options[:indicator]}'" if options[:indicator]
68
- js_options[:select] = "'#{options[:select]}'" if options[:select]
69
- js_options[:paramName] = "'#{options[:param_name]}'" if options[:param_name]
70
- js_options[:frequency] = "#{options[:frequency]}" if options[:frequency]
71
- js_options[:method] = "'#{options[:method].to_s}'" if options[:method]
72
-
73
- { :after_update_element => :afterUpdateElement,
74
- :on_show => :onShow, :on_hide => :onHide, :min_chars => :minChars }.each do |k,v|
75
- js_options[v] = options[k] if options[k]
76
- end
77
-
78
- function << (', ' + options_for_javascript(js_options) + ')')
79
-
80
- javascript_tag(function)
81
- end
82
-
83
- # Use this method in your view to generate a return for the AJAX autocomplete requests.
84
- #
85
- # Example action:
86
- #
87
- # def auto_complete_for_item_title
88
- # @items = Item.find(:all,
89
- # :conditions => [ 'LOWER(description) LIKE ?',
90
- # '%' + request.raw_post.downcase + '%' ])
91
- # render :inline => "<%= auto_complete_result(@items, 'description') %>"
92
- # end
93
- #
94
- # The auto_complete_result can of course also be called from a view belonging to the
95
- # auto_complete action if you need to decorate it further.
96
- def auto_complete_result(entries, field, phrase = nil)
97
- return unless entries
98
- items = entries.map { |entry| content_tag("li", phrase ? highlight(entry[field], phrase) : h(entry[field])) }
99
- content_tag("ul", items.uniq)
100
- end
101
-
102
- # Wrapper for text_field with added AJAX autocompletion functionality.
103
- #
104
- # In your controller, you'll need to define an action called
105
- # auto_complete_for to respond the AJAX calls,
106
- #
107
- def text_field_with_auto_complete(object, method, tag_options = {}, completion_options = {})
108
- (completion_options[:skip_style] ? "" : auto_complete_stylesheet) +
109
- text_field(object, method, tag_options) +
110
- content_tag("div", "", :id => "#{object}_#{method}_auto_complete", :class => "auto_complete") +
111
- auto_complete_field("#{object}_#{method}", { :url => { :action => "auto_complete_for_#{object}_#{method}" } }.update(completion_options))
112
- end
113
-
114
- private
115
- def auto_complete_stylesheet
116
- content_tag('style', <<-EOT, :type => Mime::CSS)
117
- div.auto_complete {
118
- width: 350px;
119
- background: #fff;
120
- }
121
- div.auto_complete ul {
122
- border:1px solid #888;
123
- margin:0;
124
- padding:0;
125
- width:100%;
126
- list-style-type:none;
127
- }
128
- div.auto_complete ul li {
129
- margin:0;
130
- padding:3px;
131
- }
132
- div.auto_complete ul li.selected {
133
- background-color: #ffb;
134
- }
135
- div.auto_complete ul strong.highlight {
136
- color: #800;
137
- margin:0;
138
- padding:0;
139
- }
140
- EOT
141
- end
142
-
143
- end
@@ -1,67 +0,0 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), '../../../../test/test_helper'))
2
-
3
- class AutoCompleteTest < Test::Unit::TestCase
4
- include AutoComplete
5
- include AutoCompleteMacrosHelper
6
-
7
- include ActionView::Helpers::UrlHelper
8
- include ActionView::Helpers::TagHelper
9
- include ActionView::Helpers::TextHelper
10
- include ActionView::Helpers::FormHelper
11
- include ActionView::Helpers::CaptureHelper
12
-
13
- def setup
14
- @controller = Class.new do
15
- def url_for(options)
16
- url = "http://www.example.com/"
17
- url << options[:action].to_s if options and options[:action]
18
- url
19
- end
20
- end
21
- @controller = @controller.new
22
- end
23
-
24
-
25
- def test_auto_complete_field
26
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nvar some_input_auto_completer = new Ajax.Autocompleter('some_input', 'some_input_auto_complete', 'http://www.example.com/autocomplete', {})\n//]]>\n</script>),
27
- auto_complete_field("some_input", :url => { :action => "autocomplete" });
28
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nvar some_input_auto_completer = new Ajax.Autocompleter('some_input', 'some_input_auto_complete', 'http://www.example.com/autocomplete', {tokens:','})\n//]]>\n</script>),
29
- auto_complete_field("some_input", :url => { :action => "autocomplete" }, :tokens => ',');
30
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nvar some_input_auto_completer = new Ajax.Autocompleter('some_input', 'some_input_auto_complete', 'http://www.example.com/autocomplete', {tokens:[',']})\n//]]>\n</script>),
31
- auto_complete_field("some_input", :url => { :action => "autocomplete" }, :tokens => [',']);
32
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nvar some_input_auto_completer = new Ajax.Autocompleter('some_input', 'some_input_auto_complete', 'http://www.example.com/autocomplete', {minChars:3})\n//]]>\n</script>),
33
- auto_complete_field("some_input", :url => { :action => "autocomplete" }, :min_chars => 3);
34
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nvar some_input_auto_completer = new Ajax.Autocompleter('some_input', 'some_input_auto_complete', 'http://www.example.com/autocomplete', {onHide:function(element, update){alert('me');}})\n//]]>\n</script>),
35
- auto_complete_field("some_input", :url => { :action => "autocomplete" }, :on_hide => "function(element, update){alert('me');}");
36
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nvar some_input_auto_completer = new Ajax.Autocompleter('some_input', 'some_input_auto_complete', 'http://www.example.com/autocomplete', {frequency:2})\n//]]>\n</script>),
37
- auto_complete_field("some_input", :url => { :action => "autocomplete" }, :frequency => 2);
38
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nvar some_input_auto_completer = new Ajax.Autocompleter('some_input', 'some_input_auto_complete', 'http://www.example.com/autocomplete', {afterUpdateElement:function(element,value){alert('You have chosen: '+value)}})\n//]]>\n</script>),
39
- auto_complete_field("some_input", :url => { :action => "autocomplete" },
40
- :after_update_element => "function(element,value){alert('You have chosen: '+value)}");
41
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nvar some_input_auto_completer = new Ajax.Autocompleter('some_input', 'some_input_auto_complete', 'http://www.example.com/autocomplete', {paramName:'huidriwusch'})\n//]]>\n</script>),
42
- auto_complete_field("some_input", :url => { :action => "autocomplete" }, :param_name => 'huidriwusch');
43
- assert_dom_equal %(<script type=\"text/javascript\">\n//<![CDATA[\nvar some_input_auto_completer = new Ajax.Autocompleter('some_input', 'some_input_auto_complete', 'http://www.example.com/autocomplete', {method:'get'})\n//]]>\n</script>),
44
- auto_complete_field("some_input", :url => { :action => "autocomplete" }, :method => :get);
45
- end
46
-
47
- def test_auto_complete_result
48
- result = [ { :title => 'test1' }, { :title => 'test2' } ]
49
- assert_equal %(<ul><li>test1</li><li>test2</li></ul>),
50
- auto_complete_result(result, :title)
51
- assert_equal %(<ul><li>t<strong class=\"highlight\">est</strong>1</li><li>t<strong class=\"highlight\">est</strong>2</li></ul>),
52
- auto_complete_result(result, :title, "est")
53
-
54
- resultuniq = [ { :title => 'test1' }, { :title => 'test1' } ]
55
- assert_equal %(<ul><li>t<strong class=\"highlight\">est</strong>1</li></ul>),
56
- auto_complete_result(resultuniq, :title, "est")
57
- end
58
-
59
- def test_text_field_with_auto_complete
60
- assert_match %(<style type="text/css">),
61
- text_field_with_auto_complete(:message, :recipient)
62
-
63
- assert_dom_equal %(<input id=\"message_recipient\" name=\"message[recipient]\" size=\"30\" type=\"text\" /><div class=\"auto_complete\" id=\"message_recipient_auto_complete\"></div><script type=\"text/javascript\">\n//<![CDATA[\nvar message_recipient_auto_completer = new Ajax.Autocompleter('message_recipient', 'message_recipient_auto_complete', 'http://www.example.com/auto_complete_for_message_recipient', {})\n//]]>\n</script>),
64
- text_field_with_auto_complete(:message, :recipient, {}, :skip_style => true)
65
- end
66
-
67
- end