backlog 0.36.2 → 0.37.1

Sign up to get free protection for your applications and to get access to all the features.
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