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,185 +0,0 @@
1
- class ProjectsController < ApplicationController
2
- skip_before_filter :populate_layout, :only => [:index, :burn_down_chart, :burn_down_chart_thumbnail, :destroy]
3
-
4
- # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
5
- verify :method => :post, :only => [ :destroy, :create, :update ], :redirect_to => { :action => :index }
6
-
7
- def index
8
- flash.keep
9
- if Task.find_started.size > 0
10
- redirect_to :controller => 'tasks', :action => :list_started
11
- return
12
- end
13
- if Project.count == 0
14
- redirect_to :action => :new
15
- return
16
- end
17
- most_urgent_project = Project.find(:first, :order => :id)
18
- redirect_to :action => :show, :id => most_urgent_project.id
19
- end
20
-
21
- def list
22
- @projects = Project.find(:all, :order => 'name')
23
- end
24
-
25
- def show
26
- if params[:id]
27
- @project = Project.find(params[:id])
28
- end
29
- unless @project
30
- @project = Project.find(:first)
31
- unless @project
32
- redirect_to :controller => 'projects', :action => :new
33
- return
34
- end
35
- end
36
- load_tasks(@project)
37
- end
38
-
39
- def show_no_layout
40
- show
41
- render :partial => 'tasks'
42
- end
43
-
44
- def new
45
- @project = Project.new
46
- end
47
-
48
- def create
49
- @project = Project.new(params[:project])
50
- if @project.save
51
- flash[:notice] = 'Project was successfully created.'
52
- redirect_to :action => :show, :id => @project
53
- else
54
- render :action => 'new'
55
- end
56
- end
57
-
58
- def edit
59
- @project = Project.find(params[:id])
60
- end
61
-
62
- def edit_no_layout
63
- edit
64
- render :partial => 'tasks'
65
- end
66
-
67
- def update
68
- @project = Project.find(params[:id])
69
- if @project.update_attributes(params[:project])
70
- flash[:notice] = 'Project was successfully updated.'
71
- back_or_redirect_to :action => :show, :id => @project
72
- else
73
- render :action => 'edit'
74
- end
75
- end
76
-
77
- def destroy
78
- project = Project.find(params[:id])
79
- project.work_lock_subscribers.delete_all
80
- project.destroy
81
- flash[:notice] = 'Project was successfully deleted.'
82
- redirect_to :action => 'index'
83
- end
84
-
85
- def update_task_estimate
86
- if params[:id]
87
- @task = Task.find_by_id(params[:id])
88
- if params[:estimate] && params[:estimate][:todo]
89
- begin
90
- Float(params[:estimate][:todo])
91
- @task.estimate(params[:estimate][:todo])
92
- @period = @task.period
93
- @success, flash[:notice] = true, 'Estimate updated'
94
- rescue ArgumentError => e
95
- @success, flash[:notice] = false, "Estimate was not numeric"
96
- end
97
- if @task.finished?
98
- load_tasks(@task.project)
99
- render :action => 'finish_task', :layout => false
100
- else
101
- render :template => '/tasks/update_estimate', :layout => false
102
- end
103
- else
104
- return false, "Estimate is missing."
105
- end
106
- else
107
- @estimate = Estimate.new
108
- return false, 'Task id is missing.'
109
- end
110
- end
111
-
112
- def finish_task
113
- @task = Task.find(params[:id])
114
- @task.finish(Task::COMPLETED, true)
115
- load_tasks(@task.project)
116
- end
117
-
118
- def abort_task
119
- @task = Task.find params[:id]
120
- @task.abort
121
- load_tasks(@task.project)
122
- render :action => :finish_task, :layout => false
123
- end
124
-
125
- def move_task_to_period
126
- params[:id] = $1 if params[:id] =~ /^task_(\d*)/
127
- @task = Task.find(params[:id])
128
- if request.post?
129
- period = params[:period_id] && Period.find(params[:period_id])
130
- if period && period.active_or_future?
131
- next_task = @task.higher_item ? @task.higher_item : @task.lower_item ? @task.lower_item : @task
132
- @task.move_to_period period
133
- load_tasks(@task.project)
134
- render :action => :move_task_to_period, :layout => false
135
- else
136
- rjs_detour_to :controller => 'periods', :action => :new, :period => {:party_id => @task.period.party_id}, :layout => false
137
- end
138
- else
139
- redirect_to :controller => 'periods', :action => :show, :id => @task.period, :task_id => @task.id, :layout => false
140
- end
141
- end
142
-
143
- def move_task_to_next_period
144
- @task = Task.find(params[:id])
145
- if @task.period
146
- next_period = @task.period.lower_item
147
- next_period = next_period.lower_item while next_period && next_period.passed?
148
- params[:period_id] = next_period && next_period.id
149
- move_task_to_period
150
- else
151
- rjs_redirect_to :controller => 'tasks', :action => :edit, :id => @task
152
- end
153
- end
154
-
155
- def reopen_task
156
- @task = Task.find(params[:id]).reopen
157
- load_tasks(@task.project)
158
- end
159
-
160
- def order
161
- params.keys.find {|k| k =~ /active_tasks_(.*)/}
162
- period_id = $1
163
- if period_id
164
- period = period_id.empty? ? nil : Period.find(period_id)
165
- tasks = params["active_tasks_#{period_id}"].select {|id| not id.empty?}
166
- tasks.each_with_index do |id,idx|
167
- task = Task.find(id)
168
- task = task.move_to_period(period) if task.period != period
169
- task.insert_at(idx + 1)
170
- task.save!
171
- end
172
- end
173
- render :text => 'alert("Updated sort order");'
174
- end
175
-
176
- private
177
-
178
- def load_tasks(project)
179
- unplanned_tasks = project.tasks.select {|t| t.period.nil? && t.finished_at.nil?}.sort_by {|t| t.position}
180
- planned_tasks = project.tasks.select {|t| t.period && t.finished_at.nil?}.sort_by {|t| [t.period.end_on, t.position.to_i]}
181
- @tasks = planned_tasks + unplanned_tasks
182
- @completed_tasks = project.tasks.select {|t| t.finished_at}.sort {|t1, t2| t2.finished_at <=> t1.finished_at}
183
- end
184
-
185
- end
@@ -1,70 +0,0 @@
1
- class PublicHolidaysController < ApplicationController
2
- def index
3
- list
4
- render :action => 'list'
5
- end
6
-
7
- # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
8
- verify :method => :post, :only => [ :destroy, :create, :update ],
9
- :redirect_to => { :action => :list }
10
-
11
- def list
12
- @public_holidays = PublicHoliday.paginate :per_page => 10, :page => params[:page]
13
- end
14
-
15
- def show
16
- @public_holiday = PublicHoliday.find(params[:id])
17
- end
18
-
19
- def new
20
- @public_holiday = PublicHoliday.new
21
- end
22
-
23
- def create
24
- @public_holiday = PublicHoliday.new(params[:public_holiday])
25
- if @public_holiday.save
26
- flash[:notice] = 'PublicHoliday was successfully created.'
27
- redirect_to :action => 'list'
28
- else
29
- render :action => 'new'
30
- end
31
- end
32
-
33
- def edit
34
- @public_holiday = PublicHoliday.find(params[:id])
35
- end
36
-
37
- def update
38
- @public_holiday = PublicHoliday.find(params[:id])
39
- if @public_holiday.update_attributes(params[:public_holiday])
40
- flash[:notice] = 'PublicHoliday was successfully updated.'
41
- redirect_to :action => 'show', :id => @public_holiday
42
- else
43
- render :action => 'edit'
44
- end
45
- end
46
-
47
- def destroy
48
- PublicHoliday.find(params[:id]).destroy
49
- redirect_to :action => 'list'
50
- end
51
-
52
- def mark
53
- if params[:public_holiday]
54
- on = params[:public_holiday][:on]
55
- marked = params[:public_holiday][:marked] == '1'
56
- @public_holiday = PublicHoliday.find(:first, :conditions => {:on => on})
57
- if marked
58
- if @public_holiday.nil?
59
- PublicHoliday.create!(:on => on)
60
- end
61
- else
62
- if @public_holiday
63
- @public_holiday.destroy
64
- end
65
- end
66
- end
67
- back_or_redirect_to :controller => 'works', :action => :daily_work_sheet
68
- end
69
-
70
- end
@@ -1,15 +0,0 @@
1
- class SearchController < ApplicationController
2
-
3
- def results
4
- if params[:q]
5
- @search = params[:q]
6
- @projects = Project.find(:all, :conditions => ["lower(name) LIKE ?", "%#{@search.downcase}%"])
7
- @tasks = Task.find(:all, :conditions => ["lower(description) LIKE ? OR lower(notes) LIKE ?", "%#{@search.downcase}%", "%#{@search.downcase}%"])
8
- @works = Work.find(:all, :conditions => ["lower(description) LIKE ? OR lower(notes) LIKE ?", "%#{@search.downcase}%", "%#{@search.downcase}%"])
9
- else
10
- @projects = []
11
- @tasks = []
12
- @works = []
13
- end
14
- end
15
- end
@@ -1,19 +0,0 @@
1
- class TaskFilesController < ApplicationController
2
- def show
3
- @task_file = TaskFile.find(params[:id])
4
- send_data(@task_file.content_data,
5
- :disposition => @task_file.image? ? 'inline' : 'attachment',
6
- :type => @task_file.content_type,
7
- :filename => @task_file.name)
8
- end
9
-
10
- def destroy
11
- @task_file = TaskFile.find(params[:id])
12
- @task_file.destroy
13
-
14
- respond_to do |format|
15
- format.html { redirect_to(:controller => 'tasks', :action => :edit, :id => @task_file.task) }
16
- format.xml { head :ok }
17
- end
18
- end
19
- end
@@ -1,305 +0,0 @@
1
- class TasksController < ApplicationController
2
- skip_before_filter :populate_layout, :except => [:edit, :grab, :list_started, :move_down, :move_to_bottom, :move_to_top, :move_up, :new, :specify]
3
-
4
- verify :method => :post, :except => [ :invite, :new, :show, :edit, :grab, :list_started, :move_to_next_period, :notes],
5
- :redirect_to => { :controller => 'projects' }
6
-
7
- def list_started
8
- @tasks = Task.find_started
9
- @selected_task = Task.find_by_id(params[:id])
10
- back_or_redirect_to('/') if @tasks.empty?
11
- end
12
-
13
- def new
14
- redirect_to params if request.post?
15
- params[:task].delete :file if params[:task]
16
- @task = Task.new params[:task]
17
- @task.project_id ||= @task.period && @task.period.most_frequent_project
18
- @projects = Project.find(:all, :order => 'name')
19
- @periods = Period.find_active_or_future
20
- @customers = Customer.find(:all)
21
- end
22
-
23
- def create
24
- if params[:task] && params[:task][:period_id] && params[:task][:period_id][0..0] == 'G'
25
- detour_to :controller => 'periods', :action => :new, :group_id => params[:task][:period_id][1..-1].to_i
26
- return
27
- end
28
-
29
- file = params[:task].delete(:file)
30
-
31
- @task = Task.new(params[:task])
32
- if @task.save
33
- flash[:notice] = 'Task was successfully created.'
34
- if file && file.respond_to?(:read) && file.respond_to?(:content_type) && file.respond_to?(:original_filename)
35
- @task.task_files.create! :name => file.original_filename, :content_data => file.read, :content_type => file.content_type
36
- end
37
- @task.move_to_top
38
- @task.grab
39
- if @task.period
40
- back_or_redirect_to :controller => 'periods', :action => 'show', :id => @task.period, :task => @task.id
41
- else
42
- back_or_redirect_to :controller => 'projects', :action => :edit, :id => @task.project, :task => @task.id
43
- end
44
- else
45
- populate_layout
46
- @projects = Project.find(:all, :order => 'name')
47
- @periods = Period.find_active_or_future
48
- @customers = Customer.find(:all)
49
- render :action => 'new'
50
- end
51
- end
52
-
53
- def edit
54
- @task ||= Task.find(params[:id])
55
- @task.project_id = params[:task][:project_id] if params[:task] && params[:task][:project_id]
56
- @task.period_id = params[:task][:period_id] if params[:task] && params[:task][:period_id]
57
- @periods = Period.find_active_or_future
58
- @projects = Project.find(:all, :order => 'name')
59
- @customers = Customer.find(:all)
60
- end
61
-
62
- def update
63
- redirect_to(:controller => 'projects', :action => :index) unless params[:id]
64
- if params[:task] && params[:task][:description] == ''
65
- destroy
66
- return
67
- end
68
- @task = Task.find(params[:id])
69
- unless @task.period.nil? || @task.period.active_or_future? || (params[:task] && params[:task][:period_id] && params[:task][:period_id].to_i > 0 && (period = Period.find_by_id(params[:task][:period_id])) && period.active?)
70
- @task.errors.add(:period_id, "You may not update a task in an inactive period. Move the task to an active period first.")
71
- back_or_redirect_to :controller => 'periods', :action => :show, :id => @task.period, :task => @task.id
72
- return
73
- end
74
-
75
- # TODO (uwe): This should be moved to the Task model: Task#period=
76
- if params[:task] && params[:task][:period_id]
77
- if params[:task][:period_id] != ''
78
- if params[:task][:period_id].to_i != @task.period_id
79
- @task.remove_from_list
80
- params[:task][:position] = Period.find(params[:task][:period_id]).tasks.size
81
- end
82
- else
83
- if @task.period_id != nil
84
- @task.remove_from_list
85
- @task.period = nil
86
- new_pos = @task.project.tasks.count(:conditions => 'period_id IS NULL AND parent_id IS NULL') + 1
87
- params[:task].delete(:period_id)
88
- params[:task][:position] = new_pos
89
- end
90
- end
91
- end
92
-
93
- file = params[:task] && params[:task].delete(:file)
94
-
95
- if params[:task] && @task.update_attributes(params[:task])
96
- flash[:notice] = 'Task was successfully updated.'
97
- if params[:estimate]
98
- @task.estimates.create! params[:estimate]
99
- end
100
- if file && file.respond_to?(:read) && file.respond_to?(:content_type) && file.respond_to?(:original_filename)
101
- @task.task_files.create! :name => file.original_filename, :content_data => file.read, :content_type => file.content_type
102
- end
103
- if params[:estimate] && params[:estimate][:todo] && params[:estimate][:todo].to_i == 0
104
- unless @task.finished_at
105
- next_task = @task.lower_item || @task.higher_item
106
- @task.finish Task::COMPLETED, true
107
- @task.save!
108
- back_or_redirect_to :controller => 'periods', :action => :show, :id => @task.period, :task => next_task ? next_task.id : nil
109
- else
110
- back_or_redirect_to :controller => 'periods', :action => :show, :id => @task.period, :task => @task.id
111
- end
112
- else
113
- if @task.finished_at
114
- @task.reopen
115
- flash[:notice] += 'Task was reopened.'
116
- populate_layout
117
- render :action => 'edit'
118
- else
119
- if @task.period
120
- back_or_redirect_to :controller => 'periods', :action => :show, :id => @task.period, :task => @task.id
121
- else
122
- back_or_redirect_to :controller => 'projects', :action => :show, :id => @task.project, :task => @task.id
123
- end
124
- end
125
- end
126
- else
127
- flash[:notice] = 'Task was not saved.'
128
- populate_layout
129
- edit
130
- render :action => 'edit'
131
- end
132
- end
133
-
134
- def update_task_estimate
135
- update
136
- end
137
-
138
- def destroy
139
- task = Task.find(params[:id])
140
- lower_item = task.lower_item
141
- task.destroy
142
- flash[:notice] = 'Task was successfully deleted.'
143
- redirect_to :controller => 'periods', :action => :show, :id => task.period, :task => lower_item ? lower_item.id : nil
144
- end
145
-
146
- def move_up
147
- task = Task.find(params[:id])
148
- task.move_higher
149
- flash[:notice] = "Task #{@focus_id} was successfully moved."
150
- redirect_to :controller => 'periods', :action => :show, :id => task.period, :task => task.id
151
- end
152
-
153
- def move_down
154
- task = Task.find(params[:id])
155
- task.move_lower
156
- redirect_to :controller => 'periods', :action => :show, :id => task.period, :task => task.id
157
- end
158
-
159
- def move_to_top
160
- task = Task.find(params[:id])
161
- task.move_to_top
162
- redirect_to :action => :list, :id => task
163
- end
164
-
165
- def move_to_bottom
166
- task = Task.find(params[:id])
167
- task.move_to_bottom
168
- redirect_to :action => :list, :id => task
169
- end
170
-
171
- # Move the indicated task to the indicated position.
172
- def move_to
173
- params[:id] = $1 if params[:id] =~ /^task_(\d*)/
174
- if params[:id] && task = Task.find(params[:id])
175
- if params[:target_id]
176
- if target_task = Task.find_by_id(params[:target_id])
177
- if task.parent_id != target_task.parent_id
178
- task.remove_from_list
179
- task.position = nil
180
- task.parent_id = target_task.parent_id
181
- task.project_id = target_task.project_id
182
- task.period_id = target_task.period_id
183
- end
184
- task.insert_at target_task.position
185
- end
186
- elsif params[:period_id] && params[:period_id].to_i != task.period_id
187
- task.remove_from_list
188
- task.period_id = params[:period_id]
189
- task.insert_at 1
190
- task.save!
191
- else
192
- flash[:notice] = "Target position is missing for move."
193
- end
194
- else
195
- flash[:notice] = "Task not found"
196
- end
197
- redirect_to :controller => 'periods', :action => :show_no_layout, :id => task.period_id, :task => task.id
198
- end
199
-
200
- def grab
201
- @task = Task.find(params[:id])
202
- @task.grab
203
- detour = pop_detour
204
- params.update(detour) if detour
205
- render :template => '/tasks/_update.rjs' if request.xhr?
206
- end
207
-
208
- def invite
209
- @task = Task.find(params[:id])
210
- @invitee = User.find(params[:user_id])
211
- task_url = url_for(:action => 'edit', :id => @task.id)
212
- grab_url = url_for(:action => 'grab', :id => @task.id)
213
- TaskNotify.deliver_invite(current_user, @invitee, @task, task_url, grab_url)
214
- detour = pop_detour
215
- params.update(detour) if detour
216
- render :template => '/tasks/_invite.rjs' if request.xhr?
217
- end
218
-
219
- def release
220
- @task = Task.find(params[:id])
221
- @task.release
222
- detour = pop_detour
223
- params.update(detour) if detour
224
- render :template => '/tasks/_update.rjs'
225
- end
226
-
227
- def start_work
228
- @task = Task.find(params[:id])
229
- @task.start_work
230
- detour = pop_detour
231
- params.update(detour) if detour
232
- end
233
-
234
- def end_work
235
- @task = Task.find(params[:id])
236
- next_quarter = Time.next_quarter
237
- if started_work = @task.started_work
238
- redirect_to({
239
- :controller => 'works',
240
- :action => :edit,
241
- :id => started_work,
242
- 'work[task_id]' => @task.id,
243
- 'work[started_on]' => started_work.started_on.to_s,
244
- 'work[start_time]' => started_work.start_time.to_s,
245
- 'work[completed_at]' => [next_quarter, started_work.started_on.at(started_work.start_time || TimeOfDay.new(0, 0))].max.iso8601,
246
- 'work[hours]' => "%0.2f" % ((next_quarter - started_work.started_on.at(started_work.start_time || TimeOfDay.new(0, 0))).to_f / 3600),
247
- 'estimate[todo]' => @task.todo
248
- })
249
- else
250
- @task.update_attributes(params[:task])
251
- redirect_to({
252
- :controller => 'works',
253
- :action => :new,
254
- 'work[task_id]' => @task.id,
255
- 'work[started_on]' => Time.previous_quarter.to_date.to_s,
256
- 'work[start_time]' => Time.previous_quarter.time_of_day.to_s,
257
- 'work[completed_at]' => next_quarter.iso8601,
258
- 'work[hours]' => "0.25",
259
- 'estimate[todo]' => @task.todo
260
- })
261
- end
262
- end
263
-
264
- def specify
265
- parent_task = Task.find(params[:id])
266
- raise "Task is not open" unless parent_task.active? && (parent_task.period.nil? || parent_task.period.active_or_future?)
267
- if parent_task.children.empty?
268
- subtask_estimate = (parent_task.todo).ceil
269
- no_of_subtasks = (parent_task.todo / subtask_estimate).to_i
270
- subtask_estimate = parent_task.todo / no_of_subtasks
271
- (1..no_of_subtasks).each do |index|
272
- subtask = parent_task.children.build
273
- subtask.description = "#{parent_task.description} ##{parent_task.children.size}"
274
- subtask.initial_estimate = subtask_estimate
275
- subtask.save!
276
- end
277
- redirect_to :controller => 'periods', :action => :show, :id => parent_task.period, :task => parent_task.children.first
278
- else
279
- average_estimate = parent_task.children.reduce {|value, task, size| value + (task.initial_estimate / size)}
280
- subtask = parent_task.children.build
281
- subtask.description = "#{parent_task.description} ##{parent_task.children.size}"
282
- subtask.initial_estimate = average_estimate
283
- subtask.save!
284
- redirect_to :controller => 'periods', :action => :show, :id => parent_task.period, :task => parent_task.children.first
285
- end
286
- if started_work = parent_task.started_work
287
- flash[:notice] = "Pågående arbeid er flyttet til subtask"
288
- started_work.task = parent_task.children.last
289
- started_work.save!
290
- end
291
- end
292
-
293
- def set_task_description
294
- task = Task.find(params[:id])
295
- task.description = params[:value]
296
- task.save!
297
- render :text => task.description
298
- end
299
-
300
- def notes
301
- @task = Task.find(params[:id])
302
- render :layout => 'wide'
303
- end
304
-
305
- end