backlog 0.36.2 → 0.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. data/Gemfile +16 -4
  2. data/Gemfile.lock +130 -0
  3. data/History.txt +17 -0
  4. data/README.txt +0 -2
  5. data/Rakefile +17 -7
  6. data/app/controllers/absences_controller.rb +1 -2
  7. data/app/controllers/application_controller.rb +13 -14
  8. data/app/controllers/application_controller.rb.rails2 +186 -0
  9. data/app/controllers/estimates_controller.rb +1 -1
  10. data/app/controllers/groups_controller.rb +3 -1
  11. data/app/controllers/periods_controller.rb +61 -50
  12. data/app/controllers/{backlogs_controller.rb → projects_controller.rb} +35 -35
  13. data/app/controllers/search_controller.rb +2 -2
  14. data/app/controllers/tasks_controller.rb +11 -11
  15. data/app/controllers/user_controller.rb +6 -4
  16. data/app/controllers/welcome_controller.rb +4 -4
  17. data/app/controllers/work_locks_controller.rb +2 -2
  18. data/app/controllers/works_controller.rb +31 -31
  19. data/app/helpers/application_helper.rb +2 -2
  20. data/app/helpers/application_helper.rb.rails2 +118 -0
  21. data/app/helpers/periods_helper.rb +3 -3
  22. data/app/helpers/{backlogs_helper.rb → projects_helper.rb} +5 -5
  23. data/app/helpers/user_helper.rb +2 -2
  24. data/app/{models → mailers}/user_notify.rb +1 -0
  25. data/app/models/absence.rb +2 -2
  26. data/{lib → app/models}/clock.rb +0 -0
  27. data/app/models/estimate.rb +2 -2
  28. data/app/models/party.rb +1 -2
  29. data/app/models/period.rb +17 -18
  30. data/app/models/{backlog.rb → project.rb} +2 -2
  31. data/app/models/sidebar.rb +2 -2
  32. data/app/models/task.rb +28 -28
  33. data/app/models/user.rb +5 -4
  34. data/app/models/work.rb +29 -23
  35. data/app/models/work_lock_nagger.rb +1 -1
  36. data/app/models/works_report_filter.rb +4 -4
  37. data/app/views/customers/_name_list.rhtml +1 -1
  38. data/app/views/layouts/_headers.rhtml +2 -1
  39. data/app/views/layouts/_left_top.rhtml +32 -29
  40. data/app/views/layouts/_shortcuts.rhtml +15 -9
  41. data/app/views/layouts/_shortcuts_js.rhtml +4 -4
  42. data/app/views/layouts/mwrt002.html.erb +44 -0
  43. data/app/views/periods/_burn_down_chart.rhtml +1 -1
  44. data/app/views/periods/_show_active.rhtml +3 -3
  45. data/app/views/periods/_title.rhtml +1 -1
  46. data/app/views/{backlogs → projects}/_buttons.rhtml +4 -4
  47. data/app/views/projects/_form.rhtml +44 -0
  48. data/app/views/projects/_name_list.rhtml +5 -0
  49. data/app/views/projects/edit.rhtml +14 -0
  50. data/app/views/{backlogs → projects}/finish_task.rjs +0 -0
  51. data/app/views/projects/list.rhtml +16 -0
  52. data/app/views/{backlogs → projects}/move_task_to_period.rjs +0 -0
  53. data/app/views/{backlogs → projects}/new.rhtml +1 -1
  54. data/app/views/{backlogs → projects}/reopen_task.rjs +0 -0
  55. data/app/views/{backlogs → projects}/show.rhtml +6 -6
  56. data/app/views/search/results.rhtml +3 -3
  57. data/app/views/tasks/_backlog_header.rhtml +4 -4
  58. data/app/views/tasks/_completed.rhtml +2 -2
  59. data/app/views/tasks/_form.rhtml +13 -13
  60. data/app/views/tasks/_task.rhtml +10 -10
  61. data/app/views/tasks/edit.rhtml +1 -1
  62. data/app/views/tasks/list.rhtml +3 -3
  63. data/app/views/tasks/list_started.rhtml +4 -4
  64. data/app/views/tasks/start_work.rjs +1 -1
  65. data/app/views/user/login.rhtml +1 -1
  66. data/app/views/user/signup.rhtml +1 -1
  67. data/app/views/user/welcome.rhtml +1 -1
  68. data/app/views/works/_description_list.rhtml +1 -1
  69. data/app/views/works/_form.rhtml +5 -5
  70. data/app/views/works/_new_row.rhtml +8 -8
  71. data/app/views/works/_row.rhtml +1 -1
  72. data/app/views/works/_task_id_list.rhtml +1 -1
  73. data/app/views/works/daily_work_sheet.rhtml +1 -1
  74. data/app/views/works/list.rhtml +5 -5
  75. data/app/views/works/list_excel.rhtml +2 -2
  76. data/app/views/works/timeliste.rhtml +14 -14
  77. data/app/views/works/weekly_work_sheet.rhtml +5 -5
  78. data/app/views/works/weekly_work_sheet_details.rhtml +5 -5
  79. data/backlog.gemspec +44 -0
  80. data/bin/backlog +5 -1
  81. data/config.ru +4 -0
  82. data/config/application.rb +10 -0
  83. data/config/boot.rb +12 -116
  84. data/config/database.yml +3 -6
  85. data/config/database.yml~ +17 -0
  86. data/config/environment.rb +28 -49
  87. data/config/environments/development.rb +24 -20
  88. data/config/environments/development.rb.rails2 +26 -0
  89. data/config/environments/production.rb +26 -22
  90. data/config/environments/test.rb +20 -15
  91. data/config/environments/user_environment.rb +1 -1
  92. data/config/initializers/backtrace_silencers.rb +7 -0
  93. data/config/initializers/inflections.rb +10 -0
  94. data/config/initializers/jdbc.rb +1 -1
  95. data/config/initializers/mime_types.rb +5 -0
  96. data/config/initializers/secret_token.rb +7 -0
  97. data/config/initializers/session_store.rb +8 -0
  98. data/config/locales/en.yml +22 -11
  99. data/config/locales/no.yml +1 -0
  100. data/config/routes.rb +4 -5
  101. data/cruise_build.sh +6 -2
  102. data/db/migrate/004_add_period.rb +22 -22
  103. data/db/migrate/015_add_user_option.rb +5 -19
  104. data/db/migrate/017_increase_backlog_name_limit.rb +10 -0
  105. data/db/migrate/021_create_work_accounts.rb +0 -2
  106. data/db/migrate/20101006092700_rename_backlogs_to_projects.rb +22 -0
  107. data/db/migrate/20101006092700_rename_backlogs_to_projects.rb~ +22 -0
  108. data/db/schema.rb +27 -30
  109. data/db/seeds.rb +7 -0
  110. data/lib/array_helper.rb +0 -8
  111. data/lib/class_table_inheritance.rb +8 -7
  112. data/lib/tasks/backup.rake +3 -3
  113. data/lib/tasks/jdbc.rake +2 -2
  114. data/lib/version_from_history.rb +1 -1
  115. data/public/404.html +23 -7
  116. data/public/422.html +26 -0
  117. data/public/500.html +23 -6
  118. data/public/images/rails.png +0 -0
  119. data/public/javascripts/controls.js +5 -3
  120. data/public/javascripts/dragdrop.js +7 -6
  121. data/public/javascripts/effects.js +8 -13
  122. data/public/javascripts/prototype.js +3381 -1700
  123. data/public/javascripts/rails.js +175 -0
  124. data/public/robots.txt +5 -1
  125. data/script/rails +6 -0
  126. data/test/client/login.rb +0 -2
  127. data/test/client/login_test.rb +1 -1
  128. data/test/client/setup.rb +25 -24
  129. data/test/fixtures/{backlogs.yml → projects.yml} +2 -2
  130. data/test/fixtures/tasks.yml +9 -9
  131. data/test/fixtures/work_lock_subscriptions.yml +2 -2
  132. data/test/fixtures/works.yml +7 -7
  133. data/test/functional/periods_controller_test.rb +1 -1
  134. data/test/functional/{backlogs_controller_test.rb → projects_controller_test.rb} +22 -21
  135. data/test/functional/search_controller_test.rb +1 -1
  136. data/test/functional/tasks_controller_test.rb +17 -17
  137. data/test/functional/user_controller_test.rb +16 -21
  138. data/test/functional/welcome_controller_test.rb +4 -3
  139. data/test/functional/works_controller_test.rb +5 -5
  140. data/test/integration/user_system_test.rb +1 -1
  141. data/test/mocks/test/clock.rb +1 -1
  142. data/test/performance/browsing_test.rb +9 -0
  143. data/test/performance/common.rb +1 -1
  144. data/test/test_helper.rb +23 -6
  145. data/test/test_helper.rb~ +121 -0
  146. data/test/unit/user_test.rb +3 -3
  147. data/test/unit/work_test.rb +7 -7
  148. data/vendor/plugins/assert_cookie/lib/assert_cookie.rb +0 -2
  149. data/vendor/plugins/{foreign_key_migrations → dynamic_form}/MIT-LICENSE +1 -1
  150. data/vendor/plugins/dynamic_form/README +13 -0
  151. data/vendor/plugins/dynamic_form/Rakefile +10 -0
  152. data/vendor/plugins/dynamic_form/dynamic_form.gemspec +12 -0
  153. data/vendor/plugins/dynamic_form/init.rb +1 -0
  154. data/vendor/plugins/dynamic_form/lib/action_view/helpers/dynamic_form.rb +300 -0
  155. data/vendor/plugins/dynamic_form/lib/action_view/locale/en.yml +8 -0
  156. data/vendor/plugins/dynamic_form/lib/dynamic_form.rb +5 -0
  157. data/vendor/plugins/dynamic_form/test/dynamic_form_i18n_test.rb +42 -0
  158. data/vendor/plugins/dynamic_form/test/dynamic_form_test.rb +370 -0
  159. data/vendor/plugins/dynamic_form/test/test_helper.rb +9 -0
  160. data/vendor/plugins/prototype_legacy_helper/lib/prototype_legacy_helper.rb +432 -0
  161. data/vendor/plugins/prototype_legacy_helper/test/test_prototype_helper.rb +297 -0
  162. data/vendor/plugins/rails_time/test/debug.log +1 -0
  163. data/vendor/plugins/{redhillonrails_core → verification}/MIT-LICENSE +1 -1
  164. data/vendor/plugins/verification/README +34 -0
  165. data/vendor/plugins/verification/Rakefile +22 -0
  166. data/vendor/plugins/verification/init.rb +3 -0
  167. data/vendor/plugins/verification/lib/action_controller/verification.rb +132 -0
  168. data/vendor/plugins/verification/test/test_helper.rb +18 -0
  169. data/vendor/plugins/verification/test/verification_test.rb +270 -0
  170. data/vendor/plugins/will_paginate/lib/will_paginate/collection.rb +1 -1
  171. metadata +115 -134
  172. data/Gemfile~ +0 -4
  173. data/History.txt~ +0 -961
  174. data/LICENSE_LOCALIZATION +0 -20
  175. data/README_LOCALIZATION +0 -61
  176. data/README_RAILS +0 -180
  177. data/app/views/backlogs/_form.rhtml +0 -44
  178. data/app/views/backlogs/_name_list.rhtml +0 -5
  179. data/app/views/backlogs/edit.rhtml +0 -14
  180. data/app/views/backlogs/list.rhtml +0 -16
  181. data/app/views/layouts/mwrt002.rhtml +0 -43
  182. data/config/initializers/mongrel.rb +0 -83
  183. data/config/preinitializer.rb +0 -20
  184. data/config/warble.rb~ +0 -84
  185. data/db/migrate/017_insert_datek_projects.rb +0 -98
  186. data/lib/change_column_null_migration_fix.rb +0 -15
  187. data/no_test.rb~ +0 -6
  188. data/public/dispatch.cgi +0 -10
  189. data/public/dispatch.fcgi +0 -24
  190. data/public/dispatch.rb +0 -10
  191. data/script/about +0 -3
  192. data/script/breakpointer +0 -3
  193. data/script/console +0 -3
  194. data/script/dbconsole +0 -3
  195. data/script/destroy +0 -3
  196. data/script/generate +0 -3
  197. data/script/performance/benchmarker +0 -3
  198. data/script/performance/profiler +0 -3
  199. data/script/plugin +0 -3
  200. data/script/process/inspector +0 -3
  201. data/script/process/reaper +0 -3
  202. data/script/process/spawner +0 -3
  203. data/script/runner +0 -3
  204. data/script/server +0 -3
  205. data/test/client/login.rb~ +0 -33
  206. data/test/mocks/test/user_notify.rb +0 -16
  207. data/vendor/plugins/foreign_key_migrations/CHANGELOG +0 -103
  208. data/vendor/plugins/foreign_key_migrations/README +0 -87
  209. data/vendor/plugins/foreign_key_migrations/about.yml +0 -5
  210. data/vendor/plugins/foreign_key_migrations/init.rb +0 -1
  211. data/vendor/plugins/foreign_key_migrations/install.rb +0 -1
  212. data/vendor/plugins/foreign_key_migrations/lib/foreign_key_migrations.rb +0 -3
  213. data/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/base.rb +0 -22
  214. data/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/connection_adapters/abstract_adapter.rb +0 -22
  215. data/vendor/plugins/foreign_key_migrations/lib/red_hill_consulting/foreign_key_migrations/active_record/connection_adapters/table_definition.rb +0 -28
  216. data/vendor/plugins/lightwindow_helper/README +0 -33
  217. data/vendor/plugins/lightwindow_helper/assets/images/ajax-loading.gif +0 -0
  218. data/vendor/plugins/lightwindow_helper/assets/images/arrow-down.gif +0 -0
  219. data/vendor/plugins/lightwindow_helper/assets/images/arrow-up.gif +0 -0
  220. data/vendor/plugins/lightwindow_helper/assets/images/black-70.png +0 -0
  221. data/vendor/plugins/lightwindow_helper/assets/images/black.png +0 -0
  222. data/vendor/plugins/lightwindow_helper/assets/images/nextlabel.gif +0 -0
  223. data/vendor/plugins/lightwindow_helper/assets/images/prevlabel.gif +0 -0
  224. data/vendor/plugins/lightwindow_helper/assets/javascripts/lightwindow.js +0 -1921
  225. data/vendor/plugins/lightwindow_helper/assets/stylesheets/lightwindow.css +0 -376
  226. data/vendor/plugins/lightwindow_helper/init.rb +0 -1
  227. data/vendor/plugins/lightwindow_helper/install.rb +0 -7
  228. data/vendor/plugins/lightwindow_helper/lib/lightwindow_helper.rb +0 -31
  229. data/vendor/plugins/redhillonrails_core/CHANGELOG +0 -150
  230. data/vendor/plugins/redhillonrails_core/README +0 -124
  231. data/vendor/plugins/redhillonrails_core/init.rb +0 -19
  232. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/base.rb +0 -54
  233. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/abstract_adapter.rb +0 -31
  234. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/column.rb +0 -21
  235. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/foreign_key_definition.rb +0 -26
  236. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/index_definition.rb +0 -11
  237. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_adapter.rb +0 -74
  238. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_column.rb +0 -8
  239. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/postgresql_adapter.rb +0 -99
  240. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/schema_statements.rb +0 -16
  241. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/sqlite3_adapter.rb +0 -9
  242. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/table_definition.rb +0 -27
  243. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema.rb +0 -27
  244. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema_dumper.rb +0 -47
  245. data/vendor/plugins/transactional_migrations/CHANGELOG +0 -9
  246. data/vendor/plugins/transactional_migrations/MIT-LICENSE +0 -20
  247. data/vendor/plugins/transactional_migrations/README +0 -15
  248. data/vendor/plugins/transactional_migrations/about.yml +0 -5
  249. data/vendor/plugins/transactional_migrations/init.rb +0 -1
  250. data/vendor/plugins/transactional_migrations/lib/red_hill_consulting/transactional_migrations/active_record/migration.rb +0 -19
data/Gemfile CHANGED
@@ -1,19 +1,31 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "rails", "~> 2.3.8"
3
+ gem "rails", "~> 3.0.0"
4
4
  gem 'slave'
5
5
  gem 'mechanize'
6
6
  gem 'hpricot'
7
7
  gem 'simple_workflow'
8
+ gem 'redhillonrails_core'
9
+ gem 'automatic_foreign_key'
8
10
 
9
- if RUBY_PLATFORM =~ /java/
11
+ platforms :jruby do
10
12
  gem 'jruby-openssl'
11
13
  gem 'activerecord-jdbc-adapter'
12
14
  gem 'activerecord-jdbcpostgresql-adapter'
13
- else
14
- gem 'pg'
15
+ end
16
+
17
+ platforms :ruby do
18
+ gem 'postgres-pr'
15
19
  end
16
20
 
17
21
  group :deployment do
18
22
  gem 'hoe'
19
23
  end
24
+
25
+ group :development do
26
+ gem "wirble"
27
+ gem "hirb"
28
+ gem "awesome_print"
29
+ gem 'firewatir'
30
+ gem 'rcov'
31
+ end
@@ -0,0 +1,130 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ abstract (1.0.0)
5
+ actionmailer (3.0.3)
6
+ actionpack (= 3.0.3)
7
+ mail (~> 2.2.9)
8
+ actionpack (3.0.3)
9
+ activemodel (= 3.0.3)
10
+ activesupport (= 3.0.3)
11
+ builder (~> 2.1.2)
12
+ erubis (~> 2.6.6)
13
+ i18n (~> 0.4)
14
+ rack (~> 1.2.1)
15
+ rack-mount (~> 0.6.13)
16
+ rack-test (~> 0.5.6)
17
+ tzinfo (~> 0.3.23)
18
+ activemodel (3.0.3)
19
+ activesupport (= 3.0.3)
20
+ builder (~> 2.1.2)
21
+ i18n (~> 0.4)
22
+ activerecord (3.0.3)
23
+ activemodel (= 3.0.3)
24
+ activesupport (= 3.0.3)
25
+ arel (~> 2.0.2)
26
+ tzinfo (~> 0.3.23)
27
+ activerecord-jdbc-adapter (1.0.3-java)
28
+ activerecord-jdbcpostgresql-adapter (1.0.3-java)
29
+ activerecord-jdbc-adapter (= 1.0.3)
30
+ jdbc-postgres (~> 8.4.0)
31
+ activeresource (3.0.3)
32
+ activemodel (= 3.0.3)
33
+ activesupport (= 3.0.3)
34
+ activesupport (3.0.3)
35
+ arel (2.0.6)
36
+ automatic_foreign_key (1.1.6)
37
+ activerecord (>= 2.2)
38
+ redhillonrails_core (>= 1.0.4.1)
39
+ awesome_print (0.3.1)
40
+ bouncy-castle-java (1.5.0145.2)
41
+ builder (2.1.2)
42
+ commonwatir (1.6.5)
43
+ user-choices
44
+ erubis (2.6.6)
45
+ abstract (>= 1.0.0)
46
+ firewatir (1.6.5)
47
+ activesupport
48
+ commonwatir (= 1.6.5)
49
+ hirb (0.3.5)
50
+ hoe (2.7.0)
51
+ rake (>= 0.8.7)
52
+ rubyforge (>= 2.0.4)
53
+ hpricot (0.8.3-java)
54
+ i18n (0.5.0)
55
+ jdbc-postgres (8.4.702-java)
56
+ jruby-openssl (0.7.2)
57
+ bouncy-castle-java
58
+ json_pure (1.4.6)
59
+ mail (2.2.12)
60
+ activesupport (>= 2.3.6)
61
+ i18n (>= 0.4.0)
62
+ mime-types (~> 1.16)
63
+ treetop (~> 1.4.8)
64
+ mechanize (1.0.0)
65
+ nokogiri (>= 1.2.1)
66
+ mime-types (1.16)
67
+ nokogiri (1.4.4.2-java)
68
+ weakling (>= 0.0.3)
69
+ polyglot (0.3.1)
70
+ rack (1.2.1)
71
+ rack-mount (0.6.13)
72
+ rack (>= 1.0.0)
73
+ rack-test (0.5.6)
74
+ rack (>= 1.0)
75
+ rails (3.0.3)
76
+ actionmailer (= 3.0.3)
77
+ actionpack (= 3.0.3)
78
+ activerecord (= 3.0.3)
79
+ activeresource (= 3.0.3)
80
+ activesupport (= 3.0.3)
81
+ bundler (~> 1.0)
82
+ railties (= 3.0.3)
83
+ railties (3.0.3)
84
+ actionpack (= 3.0.3)
85
+ activesupport (= 3.0.3)
86
+ rake (>= 0.8.7)
87
+ thor (~> 0.14.4)
88
+ rake (0.8.7)
89
+ rcov (0.9.9-java)
90
+ redhillonrails_core (1.0.8)
91
+ rubyforge (2.0.4)
92
+ json_pure (>= 1.1.7)
93
+ s4t-utils (1.0.4)
94
+ hoe (>= 1.3.0)
95
+ simple_workflow (0.0.2)
96
+ rails (>= 2.3.2)
97
+ slave (1.2.1)
98
+ thor (0.14.6)
99
+ treetop (1.4.9)
100
+ polyglot (>= 0.3.1)
101
+ tzinfo (0.3.23)
102
+ user-choices (1.1.6.1)
103
+ builder (>= 2.1.2)
104
+ s4t-utils (>= 1.0.3)
105
+ xml-simple (>= 1.0.11)
106
+ weakling (0.0.4-java)
107
+ wirble (0.1.3)
108
+ xml-simple (1.0.12)
109
+
110
+ PLATFORMS
111
+ java
112
+
113
+ DEPENDENCIES
114
+ activerecord-jdbc-adapter
115
+ activerecord-jdbcpostgresql-adapter
116
+ automatic_foreign_key
117
+ awesome_print
118
+ firewatir
119
+ hirb
120
+ hoe
121
+ hpricot
122
+ jruby-openssl
123
+ mechanize
124
+ postgres-pr
125
+ rails (~> 3.0.0)
126
+ rcov
127
+ redhillonrails_core
128
+ simple_workflow
129
+ slave
130
+ wirble
@@ -1,3 +1,20 @@
1
+ == 0.37.1 2010-10-05
2
+
3
+ === Fixes
4
+
5
+ * Added Save button to the new work record row in the daily work sheet to enable creation if WebKit based browsers like Safari.
6
+
7
+ == Internal
8
+
9
+ * Updated gem dependecies to reflect the move to Rails 3.
10
+ * Switched to the glassfish gem for runtime.
11
+
12
+ == 0.37.0 2010-10-05
13
+
14
+ == Internal
15
+
16
+ * Ported to Rails 3
17
+
1
18
  == 0.36.2 2010-07-26
2
19
 
3
20
  === Fixes
data/README.txt CHANGED
@@ -25,8 +25,6 @@ There are concrete plans to integrate Backlog to a few types of systems:
25
25
 
26
26
  * Issue tracking (Jira, RuyForge, SourceForge, Bugzilla, etc.)
27
27
  * Calendars (ICal, Outlook, http://icalendar.rubyforge.org/)
28
- * Timekeeping
29
- * Invoicing (Mamut)
30
28
 
31
29
  If you have concrete needs, and are willing to beta test the integration, please contact us.
32
30
 
data/Rakefile CHANGED
@@ -3,13 +3,13 @@
3
3
 
4
4
  require 'erb'
5
5
 
6
- require(File.join(File.dirname(__FILE__), 'config', 'boot'))
6
+ require File.expand_path('../config/application', __FILE__)
7
7
 
8
8
  require 'rake'
9
- require 'rake/testtask'
9
+ #require 'rake/testtask'
10
10
  require 'rake/rdoctask'
11
11
 
12
- require 'tasks/rails'
12
+ Backlog::Application.load_tasks
13
13
 
14
14
  require 'hoe'
15
15
  require 'version_from_history'
@@ -27,15 +27,15 @@ Hoe.new("backlog", APP::VERSION) do |p|
27
27
  # p.extra_rdoc_files = [/^(app\/(controllers|helpers|models)|lib|bin)|txt$/]
28
28
  p.clean_globs = ['doc', 'log/*']
29
29
  p.spec_extras = {
30
- :files => Dir['**/*'].reject{|file_name| file_name =~ /^(doc|log|pkg|tmp|WEB-INF)/},
30
+ :files => Dir['**/*'].reject{|file_name| file_name =~ /^(doc|log|pkg|profiling|tmp|WEB-INF)/},
31
31
  :rdoc_options => ['--inline-source'],
32
32
  :executables => ['backlog'],
33
- :requirements => ['ImageMagick', 'PostgreSQL']
33
+ :requirements => ['ImageMagick', 'PostgreSQL'],
34
34
  }
35
35
  p.need_zip = true
36
36
  p.url = 'http://rubyforge.org/projects/backlog/'
37
- p.extra_deps = [['rails', '= 2.3.8'], ['gruff', '~> 0.2.9'], ['postgres', '~> 0.7.9'],
38
- ['slave', '~> 1.2.1'], ['mechanize', '~> 0.8.4'], ['bundler', '~> 0.9.26']]
37
+ p.extra_deps = [['daemons', '~> 1.1.0'], ['rails', '~> 3.0.0'], ['gruff', '~> 0.3.6'], ['postgres-pr', '~> 0.6.3'],
38
+ ['slave', '~> 1.2.1'], ['mechanize', '~> 1.0.0'], ['bundler', '~> 1.0.5']]
39
39
  # ['rmagick', '~> 1.15.12'],
40
40
  p.rsync_args = "-acv --delete --exclude=wiki*"
41
41
  end
@@ -60,3 +60,13 @@ task :release_war do
60
60
  rf.login
61
61
  rf.add_file 'backlog', 'backlog', APP::VERSION, war_pkg_file
62
62
  end
63
+
64
+ task 'test:units' => [] do
65
+
66
+ end
67
+ task 'test:functionals' => [] do
68
+
69
+ end
70
+ task 'test:integration' => [] do
71
+
72
+ end
@@ -5,8 +5,7 @@ class AbsencesController < ApplicationController
5
5
  end
6
6
 
7
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 }
8
+ verify :method => :post, :only => [ :destroy, :create, :update ], :redirect_to => { :action => :list }
10
9
 
11
10
  def list
12
11
  @absences = Absence.paginate :per_page => 10, :page => params[:page]
@@ -1,3 +1,5 @@
1
+ require 'prototype_legacy_helper'
2
+
1
3
  class ApplicationController < ActionController::Base
2
4
  include UserSystem
3
5
  include ApplicationHelper
@@ -13,10 +15,11 @@ class ApplicationController < ActionController::Base
13
15
  before_filter :authenticate_user
14
16
  before_filter :store_cookies_from_params
15
17
  before_filter :populate_layout
16
-
18
+
17
19
  def initialize
18
- @application_title = l :backlog
19
- @application_description = l :backlog_description
20
+ super
21
+ @application_title = t :project
22
+ @application_description = t :project_description
20
23
  @sidebar = Sidebar.new(self)
21
24
  end
22
25
 
@@ -28,10 +31,6 @@ class ApplicationController < ActionController::Base
28
31
  end
29
32
  end
30
33
 
31
- def render_to_string(*args)
32
- super
33
- end
34
-
35
34
  private
36
35
 
37
36
  def determine_layout
@@ -148,9 +147,9 @@ class ApplicationController < ActionController::Base
148
147
 
149
148
  def populate_shortcuts
150
149
  @shortcuts = [
151
- {:key => 'Alt-N', :function => :new_task, :options => {:controller => 'tasks', :action => 'new', :period_id => (@period ? @period.id : (@backlog && @backlog.periods.first ? @backlog.periods.first.id : nil))}},
150
+ {:key => 'Alt-N', :function => :new_task, :options => {:controller => 'tasks', :action => 'new', :period_id => (@period ? @period.id : (@project && @project.periods.first ? @project.periods.first.id : nil))}},
152
151
  {:key => 'Alt-Shift-N', :function => :new_period, :options => {:controller => 'periods', :action => 'new'}},
153
- {:key => 'Alt-Ctrl-N', :function => :new_backlog, :options => {:controller => 'backlogs', :action => 'new'}},
152
+ {:key => 'Alt-Ctrl-N', :function => :new_project, :options => {:controller => 'projects', :action => 'new'}},
154
153
  {:key => 'Alt-Ctrl-G', :function => :new_group, :options => {:controller => 'groups', :action => :new}},
155
154
  {:key => 'Alt-Shift-D', :function => :daily_work_sheet, :options => {:controller => 'works', :action => :daily_work_sheet}},
156
155
  {:key => 'Alt-Shift-W', :function => :weekly_work_sheet, :options => {:controller => 'works', :action => :weekly_work_sheet}},
@@ -171,9 +170,9 @@ class ApplicationController < ActionController::Base
171
170
  User.find_by_id(user_id) if user_id
172
171
  end
173
172
 
174
- def redirect_to_post(options)
175
- url = url_for options
176
- render :text => <<EOF, :layout => false
173
+ def redirect_to_post(options)
174
+ url = url_for options
175
+ render :text => <<EOF, :layout => false
177
176
  <html>
178
177
  <body onload="document.getElementById('form').submit()">
179
178
  <form id="form" action="#{url}" method="POST">
@@ -181,6 +180,6 @@ class ApplicationController < ActionController::Base
181
180
  </body>
182
181
  </html>
183
182
  EOF
184
- end
185
-
186
183
  end
184
+
185
+ end
@@ -0,0 +1,186 @@
1
+ class ApplicationController < ActionController::Base
2
+ include UserSystem
3
+ include ApplicationHelper
4
+ include ActionView::Helpers::TagHelper
5
+ include ActionView::Helpers::JavaScriptHelper
6
+ include ActionView::Helpers::PrototypeHelper
7
+ include ActionView::Helpers::ScriptaculousHelper
8
+ include UrlForFix
9
+
10
+ layout :determine_layout
11
+ helper :user
12
+ before_filter :store_detour_from_params
13
+ before_filter :authenticate_user
14
+ before_filter :store_cookies_from_params
15
+ before_filter :populate_layout
16
+
17
+ def initialize
18
+ @application_title = l :project
19
+ @application_description = l :project_description
20
+ @sidebar = Sidebar.new(self)
21
+ end
22
+
23
+ def self.in_place_edit_for(object, attribute, options = {})
24
+ define_method("set_#{object}_#{attribute}") do
25
+ @item = object.to_s.camelize.constantize.find(params[:id])
26
+ @item.update_attribute(attribute, params[:value])
27
+ render :text => @item.send(attribute).to_s
28
+ end
29
+ end
30
+
31
+ def render_to_string(*args)
32
+ super
33
+ end
34
+
35
+ private
36
+
37
+ def determine_layout
38
+ if false && request.accepts.find {|mt| mt == 'xml'}
39
+ 'wap'
40
+ else
41
+ # Firefox
42
+ #<Mime::Type:0xb79cd374 @synonyms=["application/xhtml+xml"], @string="text/html", @symbol=:html>
43
+ #<Mime::Type:0xb79cd1e4 @synonyms=["text/xml", "application/x-xml"], @string="application/xml", @symbol=:xml>
44
+ #<Mime::Type:0xb746d16c @synonyms=[], @string="image/png", @symbol=nil>
45
+ #<Mime::Type:0xb79cd3ec @synonyms=[], @string="text/plain", @symbol=:text>
46
+ #<Mime::Type:0xb79cd43c @synonyms=[], @string="*/*", @symbol=:all>
47
+
48
+ # nokia N80
49
+ #<Mime::Type:0xb79ab374 @synonyms=["application/xhtml+xml"], @string="text/html", @symbol=:html>
50
+ #<Mime::Type:0xb7308408 @synonyms=[], @string="text/css", @symbol=nil>
51
+ #<Mime::Type:0xb73082f0 @synonyms=[], @string="text/x-vcard", @symbol=nil>
52
+ #<Mime::Type:0xb73081ec @synonyms=[], @string="text/x-vcalendar", @symbol=nil>
53
+ #<Mime::Type:0xb73080d4 @synonyms=[], @string="image/gif", @symbol=nil>
54
+ #<Mime::Type:0xb7307fd0 @synonyms=[], @string="image/vnd.wap.wbmp", @symbol=nil>
55
+ #<Mime::Type:0xb79ab43c @synonyms=[], @string="*/*", @symbol=:all>
56
+
57
+ # SonyEricson K810i
58
+ #<Mime::Type:0xb72509d4 @synonyms=[], @string="multipart/mixed", @symbol=nil>
59
+ #<Mime::Type:0xb7250934 @synonyms=[], @string="application/vnd.wap.multipart.mixed", @symbol=nil>
60
+ #<Mime::Type:0xb7250880 @synonyms=[], @string="application/vnd.wap.xhtml+xml", @symbol=nil>
61
+ #<Mime::Type:0xb79ab374 @synonyms=["application/xhtml+xml"], @string="text/html", @symbol=:html>
62
+ #<Mime::Type:0xb72507cc @synonyms=[], @string="text/vnd.wap.wml", @symbol=nil>
63
+ #<Mime::Type:0xb73082f0 @synonyms=[], @string="text/x-vcard", @symbol=nil>
64
+ #<Mime::Type:0xb73081ec @synonyms=[], @string="text/x-vcalendar", @symbol=nil>
65
+ #<Mime::Type:0xb73080d4 @synonyms=[], @string="image/gif", @symbol=nil>
66
+ #<Mime::Type:0xb7307fd0 @synonyms=[], @string="image/vnd.wap.wbmp", @symbol=nil>
67
+ #<Mime::Type:0xb79ab43c @synonyms=[], @string="*/*", @symbol=:all>
68
+
69
+ 'mwrt002'
70
+ end
71
+ end
72
+
73
+ def detour_to(options)
74
+ store_detour(params)
75
+ redirect_to(options)
76
+ end
77
+
78
+ def rjs_detour_to(options)
79
+ store_detour(params, request.post?)
80
+ rjs_redirect_to(options)
81
+ end
82
+
83
+ def rjs_redirect_to(options)
84
+ @options = options
85
+ render :template => 'redirect', :layout => false
86
+ end
87
+
88
+ def store_detour(options, post = false)
89
+ options[:request_method] = :post if post
90
+ if session[:detours] && session[:detours].last == options
91
+ logger.debug "duplicate detour: #{options}"
92
+ return
93
+ end
94
+ logger.debug "adding detour: #{options}"
95
+ session[:detours] ||= []
96
+ session[:detours] << options
97
+ end
98
+
99
+ def store_detour_from_params
100
+ if params[:detour]
101
+ store_detour(params[:detour])
102
+ end
103
+ if params[:return_from_detour] && session[:detours]
104
+ pop_detour
105
+ end
106
+ end
107
+
108
+ def back
109
+ return false if session[:detours].nil?
110
+ detour = pop_detour
111
+ post = detour.delete(:request_method) == :post
112
+ if post
113
+ redirect_to_post(detour)
114
+ else
115
+ redirect_to detour
116
+ end
117
+ return true
118
+ end
119
+
120
+ def back_or_redirect_to(options)
121
+ back or redirect_to options
122
+ end
123
+
124
+ def pop_detour
125
+ detours = session[:detours]
126
+ return nil unless detours
127
+ detour = detours.pop
128
+ logger.debug "popped detour: #{detour.inspect} #{session[:detours].size} more"
129
+ if detours.empty?
130
+ session[:detours] = nil
131
+ end
132
+ detour
133
+ end
134
+
135
+
136
+
137
+ def store_cookies_from_params
138
+ if params[:cookies]
139
+ params[:cookies].each_pair do |key, value|
140
+ logger.info "Storing cookie #{key.inspect}=#{value.inspect}"
141
+ #cookies[key] = {:value => value, :expires => 1.year.from_now}
142
+ session[key] = value
143
+ logger.info "Stored cookie #{key.inspect}=#{session[key].inspect}"
144
+ end
145
+ end
146
+ end
147
+
148
+
149
+ def populate_shortcuts
150
+ @shortcuts = [
151
+ {:key => 'Alt-N', :function => :new_task, :options => {:controller => 'tasks', :action => 'new', :period_id => (@period ? @period.id : (@project && @project.periods.first ? @project.periods.first.id : nil))}},
152
+ {:key => 'Alt-Shift-N', :function => :new_period, :options => {:controller => 'periods', :action => 'new'}},
153
+ {:key => 'Alt-Ctrl-N', :function => :new_project, :options => {:controller => 'projects', :action => 'new'}},
154
+ {:key => 'Alt-Ctrl-G', :function => :new_group, :options => {:controller => 'groups', :action => :new}},
155
+ {:key => 'Alt-Shift-D', :function => :daily_work_sheet, :options => {:controller => 'works', :action => :daily_work_sheet}},
156
+ {:key => 'Alt-Shift-W', :function => :weekly_work_sheet, :options => {:controller => 'works', :action => :weekly_work_sheet}},
157
+ ]
158
+ end
159
+
160
+ def populate_layout
161
+ return true if request.path_parameters[:action] =~ /_no_layout$/
162
+
163
+ populate_shortcuts
164
+ end
165
+
166
+ def user_id
167
+ session[:user_id]
168
+ end
169
+
170
+ def user
171
+ User.find_by_id(user_id) if user_id
172
+ end
173
+
174
+ def redirect_to_post(options)
175
+ url = url_for options
176
+ render :text => <<EOF, :layout => false
177
+ <html>
178
+ <body onload="document.getElementById('form').submit()">
179
+ <form id="form" action="#{url}" method="POST">
180
+ </form>
181
+ </body>
182
+ </html>
183
+ EOF
184
+ end
185
+
186
+ end