backlog 0.8.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (693) hide show
  1. data/History.txt +19 -0
  2. data/README.txt +8 -2
  3. data/Rakefile +2 -2
  4. data/app/controllers/tasks_controller.rb +1 -0
  5. data/app/controllers/user_controller.rb +5 -6
  6. data/app/models/user.rb +2 -2
  7. data/app/views/tasks/_fields_header.rhtml +1 -0
  8. data/app/views/tasks/_form.rhtml +1 -1
  9. data/app/views/tasks/_task.rhtml +7 -1
  10. data/app/views/user/_password.rhtml +2 -2
  11. data/bin/backlog +1 -1
  12. data/config/database.yml +3 -4
  13. data/config/environment.rb +23 -5
  14. data/db/development.db +0 -0
  15. data/db/migrate/002_create_backlogs.rb +2 -2
  16. data/db/schema.rb +14 -14
  17. data/db/test.db +0 -0
  18. data/etc/backlog.conf +16 -1
  19. data/lib/user_system.rb +17 -3
  20. data/test/fixtures/users.yml +2 -0
  21. data/test/functional/user_controller_test.rb +23 -3
  22. data/vendor/plugins/redhillonrails_core/CHANGELOG +65 -0
  23. data/vendor/plugins/redhillonrails_core/README +27 -0
  24. data/vendor/plugins/redhillonrails_core/init.rb +19 -9
  25. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/base.rb +54 -0
  26. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/abstract_adapter.rb +31 -0
  27. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/column.rb +21 -0
  28. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/foreign_key_definition.rb +26 -0
  29. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/index_definition.rb +11 -0
  30. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_adapter.rb +74 -0
  31. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_column.rb +8 -0
  32. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/postgresql_adapter.rb +99 -0
  33. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/schema_statements.rb +16 -0
  34. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/sqlite3_adapter.rb +9 -0
  35. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/table_definition.rb +27 -0
  36. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema.rb +27 -0
  37. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema_dumper.rb +47 -0
  38. metadata +20 -710
  39. data/doc/classes/APP.html +0 -133
  40. data/doc/classes/ActiveRecord.html +0 -114
  41. data/doc/classes/ActiveRecord/Base.html +0 -271
  42. data/doc/classes/ActiveRecord/Base.src/M000432.html +0 -29
  43. data/doc/classes/ActiveRecord/Base.src/M000433.html +0 -27
  44. data/doc/classes/ActiveRecord/Base.src/M000434.html +0 -72
  45. data/doc/classes/ActiveRecord/Base.src/M000435.html +0 -16
  46. data/doc/classes/ActiveRecord/Base.src/M000436.html +0 -29
  47. data/doc/classes/ActiveRecord/Base.src/M000437.html +0 -27
  48. data/doc/classes/ActiveRecord/Base.src/M000438.html +0 -72
  49. data/doc/classes/ActiveRecord/Base.src/M000439.html +0 -16
  50. data/doc/classes/ApplicationController.html +0 -220
  51. data/doc/classes/ApplicationController.src/M000320.html +0 -19
  52. data/doc/classes/ApplicationController.src/M000321.html +0 -22
  53. data/doc/classes/ApplicationController.src/M000322.html +0 -19
  54. data/doc/classes/ApplicationController.src/M000323.html +0 -22
  55. data/doc/classes/ApplicationHelper.html +0 -405
  56. data/doc/classes/ApplicationHelper.src/M000440.html +0 -21
  57. data/doc/classes/ApplicationHelper.src/M000441.html +0 -18
  58. data/doc/classes/ApplicationHelper.src/M000442.html +0 -26
  59. data/doc/classes/ApplicationHelper.src/M000443.html +0 -20
  60. data/doc/classes/ApplicationHelper.src/M000444.html +0 -20
  61. data/doc/classes/ApplicationHelper.src/M000445.html +0 -22
  62. data/doc/classes/ApplicationHelper.src/M000446.html +0 -18
  63. data/doc/classes/ApplicationHelper.src/M000447.html +0 -22
  64. data/doc/classes/ApplicationHelper.src/M000448.html +0 -30
  65. data/doc/classes/ApplicationHelper.src/M000449.html +0 -21
  66. data/doc/classes/ApplicationHelper.src/M000450.html +0 -18
  67. data/doc/classes/ApplicationHelper.src/M000451.html +0 -26
  68. data/doc/classes/ApplicationHelper.src/M000452.html +0 -20
  69. data/doc/classes/ApplicationHelper.src/M000453.html +0 -20
  70. data/doc/classes/ApplicationHelper.src/M000454.html +0 -22
  71. data/doc/classes/ApplicationHelper.src/M000455.html +0 -18
  72. data/doc/classes/ApplicationHelper.src/M000456.html +0 -22
  73. data/doc/classes/ApplicationHelper.src/M000457.html +0 -30
  74. data/doc/classes/Array.html +0 -162
  75. data/doc/classes/Array.src/M000143.html +0 -22
  76. data/doc/classes/Array.src/M000144.html +0 -22
  77. data/doc/classes/Backlog.html +0 -315
  78. data/doc/classes/Backlog.src/M000005.html +0 -18
  79. data/doc/classes/Backlog.src/M000006.html +0 -18
  80. data/doc/classes/Backlog.src/M000007.html +0 -22
  81. data/doc/classes/Backlog.src/M000008.html +0 -22
  82. data/doc/classes/Backlog.src/M000009.html +0 -21
  83. data/doc/classes/Backlog.src/M000010.html +0 -18
  84. data/doc/classes/Backlog.src/M000011.html +0 -18
  85. data/doc/classes/Backlog.src/M000012.html +0 -18
  86. data/doc/classes/Backlog.src/M000013.html +0 -22
  87. data/doc/classes/Backlog.src/M000014.html +0 -22
  88. data/doc/classes/Backlog.src/M000015.html +0 -21
  89. data/doc/classes/Backlog.src/M000016.html +0 -18
  90. data/doc/classes/BacklogsController.html +0 -465
  91. data/doc/classes/BacklogsController.src/M000041.html +0 -26
  92. data/doc/classes/BacklogsController.src/M000042.html +0 -18
  93. data/doc/classes/BacklogsController.src/M000043.html +0 -31
  94. data/doc/classes/BacklogsController.src/M000044.html +0 -18
  95. data/doc/classes/BacklogsController.src/M000045.html +0 -24
  96. data/doc/classes/BacklogsController.src/M000046.html +0 -18
  97. data/doc/classes/BacklogsController.src/M000047.html +0 -19
  98. data/doc/classes/BacklogsController.src/M000048.html +0 -24
  99. data/doc/classes/BacklogsController.src/M000049.html +0 -20
  100. data/doc/classes/BacklogsController.src/M000050.html +0 -18
  101. data/doc/classes/BacklogsController.src/M000051.html +0 -18
  102. data/doc/classes/BacklogsController.src/M000052.html +0 -26
  103. data/doc/classes/BacklogsController.src/M000053.html +0 -18
  104. data/doc/classes/BacklogsController.src/M000054.html +0 -31
  105. data/doc/classes/BacklogsController.src/M000055.html +0 -18
  106. data/doc/classes/BacklogsController.src/M000056.html +0 -24
  107. data/doc/classes/BacklogsController.src/M000057.html +0 -18
  108. data/doc/classes/BacklogsController.src/M000058.html +0 -19
  109. data/doc/classes/BacklogsController.src/M000059.html +0 -24
  110. data/doc/classes/BacklogsController.src/M000060.html +0 -20
  111. data/doc/classes/BacklogsController.src/M000061.html +0 -18
  112. data/doc/classes/BacklogsController.src/M000062.html +0 -18
  113. data/doc/classes/BacklogsHelper.html +0 -115
  114. data/doc/classes/BigDecimal.html +0 -162
  115. data/doc/classes/BigDecimal.src/M000366.html +0 -34
  116. data/doc/classes/BigDecimal.src/M000367.html +0 -34
  117. data/doc/classes/Chart.html +0 -153
  118. data/doc/classes/Clock.html +0 -222
  119. data/doc/classes/Clock.src/M000400.html +0 -19
  120. data/doc/classes/Clock.src/M000401.html +0 -18
  121. data/doc/classes/Clock.src/M000402.html +0 -18
  122. data/doc/classes/Clock.src/M000403.html +0 -19
  123. data/doc/classes/Clock.src/M000404.html +0 -18
  124. data/doc/classes/Clock.src/M000405.html +0 -18
  125. data/doc/classes/Estimate.html +0 -175
  126. data/doc/classes/Estimate.src/M000406.html +0 -18
  127. data/doc/classes/Estimate.src/M000407.html +0 -18
  128. data/doc/classes/EstimatesController.html +0 -165
  129. data/doc/classes/EstimatesController.src/M000398.html +0 -39
  130. data/doc/classes/EstimatesController.src/M000399.html +0 -39
  131. data/doc/classes/EstimatesHelper.html +0 -115
  132. data/doc/classes/Group.html +0 -165
  133. data/doc/classes/Group.src/M000097.html +0 -18
  134. data/doc/classes/Group.src/M000098.html +0 -18
  135. data/doc/classes/GroupsController.html +0 -375
  136. data/doc/classes/GroupsController.src/M000324.html +0 -19
  137. data/doc/classes/GroupsController.src/M000325.html +0 -18
  138. data/doc/classes/GroupsController.src/M000326.html +0 -18
  139. data/doc/classes/GroupsController.src/M000327.html +0 -24
  140. data/doc/classes/GroupsController.src/M000328.html +0 -21
  141. data/doc/classes/GroupsController.src/M000329.html +0 -24
  142. data/doc/classes/GroupsController.src/M000330.html +0 -19
  143. data/doc/classes/GroupsController.src/M000331.html +0 -26
  144. data/doc/classes/GroupsController.src/M000332.html +0 -19
  145. data/doc/classes/GroupsController.src/M000333.html +0 -18
  146. data/doc/classes/GroupsController.src/M000334.html +0 -18
  147. data/doc/classes/GroupsController.src/M000335.html +0 -24
  148. data/doc/classes/GroupsController.src/M000336.html +0 -21
  149. data/doc/classes/GroupsController.src/M000337.html +0 -24
  150. data/doc/classes/GroupsController.src/M000338.html +0 -19
  151. data/doc/classes/GroupsController.src/M000339.html +0 -26
  152. data/doc/classes/GroupsHelper.html +0 -115
  153. data/doc/classes/Localization.html +0 -243
  154. data/doc/classes/Localization.src/M000420.html +0 -46
  155. data/doc/classes/Localization.src/M000421.html +0 -18
  156. data/doc/classes/Localization.src/M000422.html +0 -38
  157. data/doc/classes/Localization.src/M000423.html +0 -46
  158. data/doc/classes/Localization.src/M000424.html +0 -18
  159. data/doc/classes/Localization.src/M000425.html +0 -38
  160. data/doc/classes/Localization/LString.html +0 -203
  161. data/doc/classes/Localization/LString.src/M000426.html +0 -18
  162. data/doc/classes/Localization/LString.src/M000427.html +0 -18
  163. data/doc/classes/Localization/LString.src/M000428.html +0 -18
  164. data/doc/classes/Localization/LString.src/M000429.html +0 -18
  165. data/doc/classes/PartiesController.html +0 -225
  166. data/doc/classes/PartiesController.src/M000175.html +0 -18
  167. data/doc/classes/PartiesController.src/M000176.html +0 -18
  168. data/doc/classes/PartiesController.src/M000177.html +0 -18
  169. data/doc/classes/PartiesController.src/M000178.html +0 -18
  170. data/doc/classes/PartiesController.src/M000179.html +0 -18
  171. data/doc/classes/PartiesController.src/M000180.html +0 -18
  172. data/doc/classes/PartiesHelper.html +0 -115
  173. data/doc/classes/Party.html +0 -255
  174. data/doc/classes/Party.src/M000340.html +0 -18
  175. data/doc/classes/Party.src/M000341.html +0 -18
  176. data/doc/classes/Party.src/M000342.html +0 -18
  177. data/doc/classes/Party.src/M000343.html +0 -25
  178. data/doc/classes/Party.src/M000344.html +0 -18
  179. data/doc/classes/Party.src/M000345.html +0 -18
  180. data/doc/classes/Party.src/M000346.html +0 -18
  181. data/doc/classes/Party.src/M000347.html +0 -25
  182. data/doc/classes/Period.html +0 -1006
  183. data/doc/classes/Period.src/M000183.html +0 -18
  184. data/doc/classes/Period.src/M000184.html +0 -18
  185. data/doc/classes/Period.src/M000185.html +0 -21
  186. data/doc/classes/Period.src/M000186.html +0 -18
  187. data/doc/classes/Period.src/M000187.html +0 -18
  188. data/doc/classes/Period.src/M000188.html +0 -25
  189. data/doc/classes/Period.src/M000189.html +0 -18
  190. data/doc/classes/Period.src/M000190.html +0 -18
  191. data/doc/classes/Period.src/M000191.html +0 -18
  192. data/doc/classes/Period.src/M000192.html +0 -18
  193. data/doc/classes/Period.src/M000193.html +0 -22
  194. data/doc/classes/Period.src/M000194.html +0 -22
  195. data/doc/classes/Period.src/M000195.html +0 -28
  196. data/doc/classes/Period.src/M000196.html +0 -18
  197. data/doc/classes/Period.src/M000197.html +0 -18
  198. data/doc/classes/Period.src/M000198.html +0 -20
  199. data/doc/classes/Period.src/M000199.html +0 -26
  200. data/doc/classes/Period.src/M000200.html +0 -39
  201. data/doc/classes/Period.src/M000201.html +0 -18
  202. data/doc/classes/Period.src/M000202.html +0 -18
  203. data/doc/classes/Period.src/M000203.html +0 -18
  204. data/doc/classes/Period.src/M000204.html +0 -18
  205. data/doc/classes/Period.src/M000205.html +0 -18
  206. data/doc/classes/Period.src/M000206.html +0 -18
  207. data/doc/classes/Period.src/M000207.html +0 -64
  208. data/doc/classes/Period.src/M000208.html +0 -18
  209. data/doc/classes/Period.src/M000209.html +0 -18
  210. data/doc/classes/Period.src/M000210.html +0 -30
  211. data/doc/classes/Period.src/M000211.html +0 -18
  212. data/doc/classes/Period.src/M000212.html +0 -18
  213. data/doc/classes/Period.src/M000213.html +0 -21
  214. data/doc/classes/Period.src/M000214.html +0 -18
  215. data/doc/classes/Period.src/M000215.html +0 -18
  216. data/doc/classes/Period.src/M000216.html +0 -25
  217. data/doc/classes/Period.src/M000217.html +0 -18
  218. data/doc/classes/Period.src/M000218.html +0 -18
  219. data/doc/classes/Period.src/M000219.html +0 -18
  220. data/doc/classes/Period.src/M000220.html +0 -18
  221. data/doc/classes/Period.src/M000221.html +0 -22
  222. data/doc/classes/Period.src/M000222.html +0 -22
  223. data/doc/classes/Period.src/M000223.html +0 -28
  224. data/doc/classes/Period.src/M000224.html +0 -18
  225. data/doc/classes/Period.src/M000225.html +0 -18
  226. data/doc/classes/Period.src/M000226.html +0 -20
  227. data/doc/classes/Period.src/M000227.html +0 -26
  228. data/doc/classes/Period.src/M000228.html +0 -39
  229. data/doc/classes/Period.src/M000229.html +0 -18
  230. data/doc/classes/Period.src/M000230.html +0 -18
  231. data/doc/classes/Period.src/M000231.html +0 -18
  232. data/doc/classes/Period.src/M000232.html +0 -18
  233. data/doc/classes/Period.src/M000233.html +0 -18
  234. data/doc/classes/Period.src/M000234.html +0 -18
  235. data/doc/classes/Period.src/M000235.html +0 -64
  236. data/doc/classes/Period.src/M000236.html +0 -18
  237. data/doc/classes/Period.src/M000237.html +0 -18
  238. data/doc/classes/Period.src/M000238.html +0 -30
  239. data/doc/classes/PeriodsController.html +0 -525
  240. data/doc/classes/PeriodsController.src/M000372.html +0 -25
  241. data/doc/classes/PeriodsController.src/M000373.html +0 -33
  242. data/doc/classes/PeriodsController.src/M000374.html +0 -19
  243. data/doc/classes/PeriodsController.src/M000375.html +0 -29
  244. data/doc/classes/PeriodsController.src/M000376.html +0 -25
  245. data/doc/classes/PeriodsController.src/M000377.html +0 -18
  246. data/doc/classes/PeriodsController.src/M000378.html +0 -24
  247. data/doc/classes/PeriodsController.src/M000379.html +0 -20
  248. data/doc/classes/PeriodsController.src/M000380.html +0 -18
  249. data/doc/classes/PeriodsController.src/M000381.html +0 -18
  250. data/doc/classes/PeriodsController.src/M000382.html +0 -18
  251. data/doc/classes/PeriodsController.src/M000383.html +0 -20
  252. data/doc/classes/PeriodsController.src/M000384.html +0 -22
  253. data/doc/classes/PeriodsController.src/M000385.html +0 -25
  254. data/doc/classes/PeriodsController.src/M000386.html +0 -33
  255. data/doc/classes/PeriodsController.src/M000387.html +0 -19
  256. data/doc/classes/PeriodsController.src/M000388.html +0 -29
  257. data/doc/classes/PeriodsController.src/M000389.html +0 -25
  258. data/doc/classes/PeriodsController.src/M000390.html +0 -18
  259. data/doc/classes/PeriodsController.src/M000391.html +0 -24
  260. data/doc/classes/PeriodsController.src/M000392.html +0 -20
  261. data/doc/classes/PeriodsController.src/M000393.html +0 -18
  262. data/doc/classes/PeriodsController.src/M000394.html +0 -18
  263. data/doc/classes/PeriodsController.src/M000395.html +0 -18
  264. data/doc/classes/PeriodsController.src/M000396.html +0 -20
  265. data/doc/classes/PeriodsController.src/M000397.html +0 -22
  266. data/doc/classes/PeriodsHelper.html +0 -115
  267. data/doc/classes/SearchController.html +0 -165
  268. data/doc/classes/SearchController.src/M000181.html +0 -25
  269. data/doc/classes/SearchController.src/M000182.html +0 -25
  270. data/doc/classes/SearchHelper.html +0 -115
  271. data/doc/classes/SearchResult.html +0 -190
  272. data/doc/classes/SearchResult.src/M000241.html +0 -19
  273. data/doc/classes/SearchResult.src/M000242.html +0 -19
  274. data/doc/classes/Task.html +0 -1362
  275. data/doc/classes/Task.src/M000243.html +0 -23
  276. data/doc/classes/Task.src/M000244.html +0 -18
  277. data/doc/classes/Task.src/M000245.html +0 -30
  278. data/doc/classes/Task.src/M000246.html +0 -18
  279. data/doc/classes/Task.src/M000247.html +0 -18
  280. data/doc/classes/Task.src/M000248.html +0 -38
  281. data/doc/classes/Task.src/M000249.html +0 -18
  282. data/doc/classes/Task.src/M000250.html +0 -25
  283. data/doc/classes/Task.src/M000251.html +0 -20
  284. data/doc/classes/Task.src/M000252.html +0 -26
  285. data/doc/classes/Task.src/M000253.html +0 -24
  286. data/doc/classes/Task.src/M000254.html +0 -57
  287. data/doc/classes/Task.src/M000255.html +0 -26
  288. data/doc/classes/Task.src/M000256.html +0 -22
  289. data/doc/classes/Task.src/M000257.html +0 -18
  290. data/doc/classes/Task.src/M000258.html +0 -18
  291. data/doc/classes/Task.src/M000259.html +0 -18
  292. data/doc/classes/Task.src/M000260.html +0 -18
  293. data/doc/classes/Task.src/M000261.html +0 -18
  294. data/doc/classes/Task.src/M000262.html +0 -18
  295. data/doc/classes/Task.src/M000263.html +0 -18
  296. data/doc/classes/Task.src/M000264.html +0 -20
  297. data/doc/classes/Task.src/M000265.html +0 -18
  298. data/doc/classes/Task.src/M000266.html +0 -18
  299. data/doc/classes/Task.src/M000267.html +0 -18
  300. data/doc/classes/Task.src/M000268.html +0 -18
  301. data/doc/classes/Task.src/M000269.html +0 -18
  302. data/doc/classes/Task.src/M000270.html +0 -18
  303. data/doc/classes/Task.src/M000271.html +0 -18
  304. data/doc/classes/Task.src/M000272.html +0 -18
  305. data/doc/classes/Task.src/M000273.html +0 -24
  306. data/doc/classes/Task.src/M000274.html +0 -33
  307. data/doc/classes/Task.src/M000275.html +0 -24
  308. data/doc/classes/Task.src/M000276.html +0 -34
  309. data/doc/classes/Task.src/M000277.html +0 -18
  310. data/doc/classes/Task.src/M000278.html +0 -18
  311. data/doc/classes/Task.src/M000279.html +0 -18
  312. data/doc/classes/Task.src/M000280.html +0 -23
  313. data/doc/classes/Task.src/M000281.html +0 -23
  314. data/doc/classes/Task.src/M000282.html +0 -18
  315. data/doc/classes/Task.src/M000283.html +0 -30
  316. data/doc/classes/Task.src/M000284.html +0 -18
  317. data/doc/classes/Task.src/M000285.html +0 -18
  318. data/doc/classes/Task.src/M000286.html +0 -38
  319. data/doc/classes/Task.src/M000287.html +0 -18
  320. data/doc/classes/Task.src/M000288.html +0 -25
  321. data/doc/classes/Task.src/M000289.html +0 -20
  322. data/doc/classes/Task.src/M000290.html +0 -26
  323. data/doc/classes/Task.src/M000291.html +0 -24
  324. data/doc/classes/Task.src/M000292.html +0 -57
  325. data/doc/classes/Task.src/M000293.html +0 -26
  326. data/doc/classes/Task.src/M000294.html +0 -22
  327. data/doc/classes/Task.src/M000295.html +0 -18
  328. data/doc/classes/Task.src/M000296.html +0 -18
  329. data/doc/classes/Task.src/M000297.html +0 -18
  330. data/doc/classes/Task.src/M000298.html +0 -18
  331. data/doc/classes/Task.src/M000299.html +0 -18
  332. data/doc/classes/Task.src/M000300.html +0 -18
  333. data/doc/classes/Task.src/M000301.html +0 -18
  334. data/doc/classes/Task.src/M000302.html +0 -20
  335. data/doc/classes/Task.src/M000303.html +0 -18
  336. data/doc/classes/Task.src/M000304.html +0 -18
  337. data/doc/classes/Task.src/M000305.html +0 -18
  338. data/doc/classes/Task.src/M000306.html +0 -18
  339. data/doc/classes/Task.src/M000307.html +0 -18
  340. data/doc/classes/Task.src/M000308.html +0 -18
  341. data/doc/classes/Task.src/M000309.html +0 -18
  342. data/doc/classes/Task.src/M000311.html +0 -18
  343. data/doc/classes/Task.src/M000312.html +0 -24
  344. data/doc/classes/Task.src/M000313.html +0 -33
  345. data/doc/classes/Task.src/M000314.html +0 -24
  346. data/doc/classes/Task.src/M000315.html +0 -34
  347. data/doc/classes/Task.src/M000316.html +0 -18
  348. data/doc/classes/Task.src/M000317.html +0 -18
  349. data/doc/classes/Task.src/M000318.html +0 -18
  350. data/doc/classes/Task.src/M000319.html +0 -23
  351. data/doc/classes/TaskFile.html +0 -165
  352. data/doc/classes/TaskFile.src/M000239.html +0 -18
  353. data/doc/classes/TaskFile.src/M000240.html +0 -18
  354. data/doc/classes/TaskFilesController.html +0 -195
  355. data/doc/classes/TaskFilesController.src/M000368.html +0 -22
  356. data/doc/classes/TaskFilesController.src/M000369.html +0 -24
  357. data/doc/classes/TaskFilesController.src/M000370.html +0 -22
  358. data/doc/classes/TaskFilesController.src/M000371.html +0 -24
  359. data/doc/classes/TaskFilesHelper.html +0 -115
  360. data/doc/classes/TasksController.html +0 -735
  361. data/doc/classes/TasksController.src/M000103.html +0 -20
  362. data/doc/classes/TasksController.src/M000104.html +0 -22
  363. data/doc/classes/TasksController.src/M000105.html +0 -42
  364. data/doc/classes/TasksController.src/M000106.html +0 -21
  365. data/doc/classes/TasksController.src/M000107.html +0 -82
  366. data/doc/classes/TasksController.src/M000108.html +0 -22
  367. data/doc/classes/TasksController.src/M000109.html +0 -21
  368. data/doc/classes/TasksController.src/M000110.html +0 -20
  369. data/doc/classes/TasksController.src/M000111.html +0 -20
  370. data/doc/classes/TasksController.src/M000112.html +0 -20
  371. data/doc/classes/TasksController.src/M000113.html +0 -25
  372. data/doc/classes/TasksController.src/M000114.html +0 -35
  373. data/doc/classes/TasksController.src/M000115.html +0 -25
  374. data/doc/classes/TasksController.src/M000116.html +0 -20
  375. data/doc/classes/TasksController.src/M000117.html +0 -20
  376. data/doc/classes/TasksController.src/M000118.html +0 -20
  377. data/doc/classes/TasksController.src/M000119.html +0 -20
  378. data/doc/classes/TasksController.src/M000120.html +0 -42
  379. data/doc/classes/TasksController.src/M000121.html +0 -43
  380. data/doc/classes/TasksController.src/M000122.html +0 -21
  381. data/doc/classes/TasksController.src/M000123.html +0 -20
  382. data/doc/classes/TasksController.src/M000124.html +0 -22
  383. data/doc/classes/TasksController.src/M000125.html +0 -42
  384. data/doc/classes/TasksController.src/M000126.html +0 -21
  385. data/doc/classes/TasksController.src/M000127.html +0 -82
  386. data/doc/classes/TasksController.src/M000128.html +0 -22
  387. data/doc/classes/TasksController.src/M000129.html +0 -21
  388. data/doc/classes/TasksController.src/M000130.html +0 -20
  389. data/doc/classes/TasksController.src/M000131.html +0 -20
  390. data/doc/classes/TasksController.src/M000132.html +0 -20
  391. data/doc/classes/TasksController.src/M000133.html +0 -25
  392. data/doc/classes/TasksController.src/M000134.html +0 -35
  393. data/doc/classes/TasksController.src/M000135.html +0 -25
  394. data/doc/classes/TasksController.src/M000136.html +0 -20
  395. data/doc/classes/TasksController.src/M000137.html +0 -20
  396. data/doc/classes/TasksController.src/M000138.html +0 -20
  397. data/doc/classes/TasksController.src/M000139.html +0 -20
  398. data/doc/classes/TasksController.src/M000140.html +0 -42
  399. data/doc/classes/TasksController.src/M000141.html +0 -43
  400. data/doc/classes/TasksController.src/M000142.html +0 -21
  401. data/doc/classes/TasksHelper.html +0 -115
  402. data/doc/classes/Time.html +0 -193
  403. data/doc/classes/Time.src/M000099.html +0 -20
  404. data/doc/classes/Time.src/M000100.html +0 -20
  405. data/doc/classes/Time.src/M000101.html +0 -20
  406. data/doc/classes/Time.src/M000102.html +0 -20
  407. data/doc/classes/User.html +0 -639
  408. data/doc/classes/User.src/M000145.html +0 -19
  409. data/doc/classes/User.src/M000146.html +0 -18
  410. data/doc/classes/User.src/M000147.html +0 -20
  411. data/doc/classes/User.src/M000148.html +0 -29
  412. data/doc/classes/User.src/M000149.html +0 -18
  413. data/doc/classes/User.src/M000150.html +0 -23
  414. data/doc/classes/User.src/M000151.html +0 -20
  415. data/doc/classes/User.src/M000152.html +0 -18
  416. data/doc/classes/User.src/M000153.html +0 -18
  417. data/doc/classes/User.src/M000154.html +0 -18
  418. data/doc/classes/User.src/M000155.html +0 -18
  419. data/doc/classes/User.src/M000156.html +0 -19
  420. data/doc/classes/User.src/M000157.html +0 -21
  421. data/doc/classes/User.src/M000158.html +0 -23
  422. data/doc/classes/User.src/M000159.html +0 -19
  423. data/doc/classes/User.src/M000160.html +0 -19
  424. data/doc/classes/User.src/M000161.html +0 -18
  425. data/doc/classes/User.src/M000162.html +0 -20
  426. data/doc/classes/User.src/M000163.html +0 -29
  427. data/doc/classes/User.src/M000164.html +0 -18
  428. data/doc/classes/User.src/M000165.html +0 -23
  429. data/doc/classes/User.src/M000166.html +0 -20
  430. data/doc/classes/User.src/M000167.html +0 -18
  431. data/doc/classes/User.src/M000168.html +0 -18
  432. data/doc/classes/User.src/M000169.html +0 -18
  433. data/doc/classes/User.src/M000170.html +0 -18
  434. data/doc/classes/User.src/M000171.html +0 -19
  435. data/doc/classes/User.src/M000172.html +0 -21
  436. data/doc/classes/User.src/M000173.html +0 -23
  437. data/doc/classes/User.src/M000174.html +0 -19
  438. data/doc/classes/UserController.html +0 -509
  439. data/doc/classes/UserController.src/M000017.html +0 -34
  440. data/doc/classes/UserController.src/M000018.html +0 -36
  441. data/doc/classes/UserController.src/M000019.html +0 -21
  442. data/doc/classes/UserController.src/M000020.html +0 -33
  443. data/doc/classes/UserController.src/M000021.html +0 -48
  444. data/doc/classes/UserController.src/M000022.html +0 -39
  445. data/doc/classes/UserController.src/M000023.html +0 -25
  446. data/doc/classes/UserController.src/M000024.html +0 -17
  447. data/doc/classes/UserController.src/M000025.html +0 -22
  448. data/doc/classes/UserController.src/M000026.html +0 -24
  449. data/doc/classes/UserController.src/M000027.html +0 -26
  450. data/doc/classes/UserController.src/M000028.html +0 -19
  451. data/doc/classes/UserController.src/M000029.html +0 -34
  452. data/doc/classes/UserController.src/M000030.html +0 -36
  453. data/doc/classes/UserController.src/M000031.html +0 -21
  454. data/doc/classes/UserController.src/M000032.html +0 -33
  455. data/doc/classes/UserController.src/M000033.html +0 -48
  456. data/doc/classes/UserController.src/M000034.html +0 -39
  457. data/doc/classes/UserController.src/M000035.html +0 -25
  458. data/doc/classes/UserController.src/M000036.html +0 -17
  459. data/doc/classes/UserController.src/M000037.html +0 -22
  460. data/doc/classes/UserController.src/M000038.html +0 -24
  461. data/doc/classes/UserController.src/M000039.html +0 -26
  462. data/doc/classes/UserController.src/M000040.html +0 -19
  463. data/doc/classes/UserHelper.html +0 -324
  464. data/doc/classes/UserHelper.src/M000408.html +0 -18
  465. data/doc/classes/UserHelper.src/M000409.html +0 -37
  466. data/doc/classes/UserHelper.src/M000410.html +0 -19
  467. data/doc/classes/UserHelper.src/M000411.html +0 -18
  468. data/doc/classes/UserHelper.src/M000412.html +0 -18
  469. data/doc/classes/UserHelper.src/M000413.html +0 -18
  470. data/doc/classes/UserHelper.src/M000414.html +0 -18
  471. data/doc/classes/UserHelper.src/M000415.html +0 -37
  472. data/doc/classes/UserHelper.src/M000416.html +0 -19
  473. data/doc/classes/UserHelper.src/M000417.html +0 -18
  474. data/doc/classes/UserHelper.src/M000418.html +0 -18
  475. data/doc/classes/UserHelper.src/M000419.html +0 -18
  476. data/doc/classes/UserNotify.html +0 -253
  477. data/doc/classes/UserNotify.src/M000089.html +0 -28
  478. data/doc/classes/UserNotify.src/M000090.html +0 -27
  479. data/doc/classes/UserNotify.src/M000091.html +0 -28
  480. data/doc/classes/UserNotify.src/M000092.html +0 -22
  481. data/doc/classes/UserNotify.src/M000093.html +0 -28
  482. data/doc/classes/UserNotify.src/M000094.html +0 -27
  483. data/doc/classes/UserNotify.src/M000095.html +0 -28
  484. data/doc/classes/UserNotify.src/M000096.html +0 -22
  485. data/doc/classes/UserSystem.html +0 -330
  486. data/doc/classes/UserSystem.src/M000458.html +0 -26
  487. data/doc/classes/UserSystem.src/M000459.html +0 -18
  488. data/doc/classes/UserSystem.src/M000460.html +0 -23
  489. data/doc/classes/UserSystem.src/M000461.html +0 -46
  490. data/doc/classes/UserSystem.src/M000462.html +0 -18
  491. data/doc/classes/UserSystem.src/M000463.html +0 -19
  492. data/doc/classes/UserSystem.src/M000464.html +0 -26
  493. data/doc/classes/UserSystem.src/M000465.html +0 -18
  494. data/doc/classes/UserSystem.src/M000466.html +0 -23
  495. data/doc/classes/UserSystem.src/M000467.html +0 -46
  496. data/doc/classes/UserSystem.src/M000468.html +0 -18
  497. data/doc/classes/UserSystem.src/M000469.html +0 -19
  498. data/doc/classes/Work.html +0 -451
  499. data/doc/classes/Work.src/M000348.html +0 -18
  500. data/doc/classes/Work.src/M000349.html +0 -18
  501. data/doc/classes/Work.src/M000350.html +0 -28
  502. data/doc/classes/Work.src/M000351.html +0 -38
  503. data/doc/classes/Work.src/M000352.html +0 -18
  504. data/doc/classes/Work.src/M000353.html +0 -18
  505. data/doc/classes/Work.src/M000354.html +0 -21
  506. data/doc/classes/Work.src/M000355.html +0 -18
  507. data/doc/classes/Work.src/M000356.html +0 -21
  508. data/doc/classes/Work.src/M000357.html +0 -18
  509. data/doc/classes/Work.src/M000358.html +0 -18
  510. data/doc/classes/Work.src/M000359.html +0 -28
  511. data/doc/classes/Work.src/M000360.html +0 -38
  512. data/doc/classes/Work.src/M000361.html +0 -18
  513. data/doc/classes/Work.src/M000362.html +0 -18
  514. data/doc/classes/Work.src/M000363.html +0 -21
  515. data/doc/classes/Work.src/M000364.html +0 -18
  516. data/doc/classes/Work.src/M000365.html +0 -21
  517. data/doc/classes/WorksController.html +0 -525
  518. data/doc/classes/WorksController.src/M000063.html +0 -19
  519. data/doc/classes/WorksController.src/M000064.html +0 -19
  520. data/doc/classes/WorksController.src/M000065.html +0 -18
  521. data/doc/classes/WorksController.src/M000066.html +0 -22
  522. data/doc/classes/WorksController.src/M000067.html +0 -36
  523. data/doc/classes/WorksController.src/M000068.html +0 -21
  524. data/doc/classes/WorksController.src/M000069.html +0 -31
  525. data/doc/classes/WorksController.src/M000070.html +0 -21
  526. data/doc/classes/WorksController.src/M000071.html +0 -25
  527. data/doc/classes/WorksController.src/M000072.html +0 -20
  528. data/doc/classes/WorksController.src/M000073.html +0 -22
  529. data/doc/classes/WorksController.src/M000074.html +0 -23
  530. data/doc/classes/WorksController.src/M000075.html +0 -23
  531. data/doc/classes/WorksController.src/M000076.html +0 -19
  532. data/doc/classes/WorksController.src/M000077.html +0 -19
  533. data/doc/classes/WorksController.src/M000078.html +0 -18
  534. data/doc/classes/WorksController.src/M000079.html +0 -22
  535. data/doc/classes/WorksController.src/M000080.html +0 -36
  536. data/doc/classes/WorksController.src/M000081.html +0 -21
  537. data/doc/classes/WorksController.src/M000082.html +0 -31
  538. data/doc/classes/WorksController.src/M000083.html +0 -21
  539. data/doc/classes/WorksController.src/M000084.html +0 -25
  540. data/doc/classes/WorksController.src/M000085.html +0 -20
  541. data/doc/classes/WorksController.src/M000086.html +0 -22
  542. data/doc/classes/WorksController.src/M000087.html +0 -23
  543. data/doc/classes/WorksController.src/M000088.html +0 -23
  544. data/doc/classes/WorksHelper.html +0 -156
  545. data/doc/classes/WorksHelper.src/M000430.html +0 -18
  546. data/doc/classes/WorksHelper.src/M000431.html +0 -18
  547. data/doc/created.rid +0 -1
  548. data/doc/dot/f_0.dot +0 -14
  549. data/doc/dot/f_0.png +0 -0
  550. data/doc/dot/f_1.dot +0 -30
  551. data/doc/dot/f_1.png +0 -0
  552. data/doc/dot/f_2.dot +0 -39
  553. data/doc/dot/f_2.png +0 -0
  554. data/doc/dot/f_24.dot +0 -32
  555. data/doc/dot/f_24.png +0 -0
  556. data/doc/dot/f_25.dot +0 -32
  557. data/doc/dot/f_25.png +0 -0
  558. data/doc/dot/f_26.dot +0 -32
  559. data/doc/dot/f_26.png +0 -0
  560. data/doc/dot/f_27.dot +0 -32
  561. data/doc/dot/f_27.png +0 -0
  562. data/doc/dot/f_28.dot +0 -32
  563. data/doc/dot/f_28.png +0 -0
  564. data/doc/dot/f_29.dot +0 -32
  565. data/doc/dot/f_29.png +0 -0
  566. data/doc/dot/f_3.dot +0 -23
  567. data/doc/dot/f_3.png +0 -0
  568. data/doc/dot/f_30.dot +0 -130
  569. data/doc/dot/f_30.png +0 -0
  570. data/doc/dot/f_31.dot +0 -32
  571. data/doc/dot/f_31.png +0 -0
  572. data/doc/dot/f_32.dot +0 -32
  573. data/doc/dot/f_32.png +0 -0
  574. data/doc/dot/f_33.dot +0 -32
  575. data/doc/dot/f_33.png +0 -0
  576. data/doc/dot/f_34.dot +0 -32
  577. data/doc/dot/f_34.png +0 -0
  578. data/doc/dot/f_4.dot +0 -23
  579. data/doc/dot/f_4.png +0 -0
  580. data/doc/dot/f_46.dot +0 -30
  581. data/doc/dot/f_46.png +0 -0
  582. data/doc/dot/f_47.dot +0 -30
  583. data/doc/dot/f_47.png +0 -0
  584. data/doc/dot/f_48.dot +0 -30
  585. data/doc/dot/f_48.png +0 -0
  586. data/doc/dot/f_49.dot +0 -44
  587. data/doc/dot/f_49.png +0 -0
  588. data/doc/dot/f_5.dot +0 -30
  589. data/doc/dot/f_5.png +0 -0
  590. data/doc/dot/f_50.dot +0 -39
  591. data/doc/dot/f_50.png +0 -0
  592. data/doc/dot/f_51.dot +0 -30
  593. data/doc/dot/f_51.png +0 -0
  594. data/doc/dot/f_52.dot +0 -30
  595. data/doc/dot/f_52.png +0 -0
  596. data/doc/dot/f_53.dot +0 -30
  597. data/doc/dot/f_53.png +0 -0
  598. data/doc/dot/f_54.dot +0 -30
  599. data/doc/dot/f_54.png +0 -0
  600. data/doc/dot/f_55.dot +0 -30
  601. data/doc/dot/f_55.png +0 -0
  602. data/doc/dot/f_56.dot +0 -30
  603. data/doc/dot/f_56.png +0 -0
  604. data/doc/dot/f_6.dot +0 -23
  605. data/doc/dot/f_6.png +0 -0
  606. data/doc/dot/f_68.dot +0 -32
  607. data/doc/dot/f_68.png +0 -0
  608. data/doc/dot/f_69.dot +0 -30
  609. data/doc/dot/f_69.png +0 -0
  610. data/doc/dot/f_7.dot +0 -47
  611. data/doc/dot/f_7.png +0 -0
  612. data/doc/dot/f_70.dot +0 -32
  613. data/doc/dot/f_70.png +0 -0
  614. data/doc/dot/f_71.dot +0 -32
  615. data/doc/dot/f_71.png +0 -0
  616. data/doc/dot/f_72.dot +0 -32
  617. data/doc/dot/f_72.png +0 -0
  618. data/doc/dot/f_73.dot +0 -46
  619. data/doc/dot/f_73.png +0 -0
  620. data/doc/dot/f_74.dot +0 -23
  621. data/doc/dot/f_74.png +0 -0
  622. data/doc/dot/f_75.dot +0 -32
  623. data/doc/dot/f_75.png +0 -0
  624. data/doc/dot/f_76.dot +0 -32
  625. data/doc/dot/f_76.png +0 -0
  626. data/doc/dot/f_77.dot +0 -32
  627. data/doc/dot/f_77.png +0 -0
  628. data/doc/dot/f_78.dot +0 -46
  629. data/doc/dot/f_78.png +0 -0
  630. data/doc/dot/f_79.dot +0 -32
  631. data/doc/dot/f_79.png +0 -0
  632. data/doc/dot/m_50_0.dot +0 -30
  633. data/doc/dot/m_50_0.png +0 -0
  634. data/doc/files/History_txt.html +0 -738
  635. data/doc/files/README_txt.html +0 -270
  636. data/doc/files/app/controllers/application_rb.html +0 -123
  637. data/doc/files/app/controllers/backlogs_controller_rb.html +0 -108
  638. data/doc/files/app/controllers/estimates_controller_rb.html +0 -108
  639. data/doc/files/app/controllers/groups_controller_rb.html +0 -108
  640. data/doc/files/app/controllers/parties_controller_rb.html +0 -108
  641. data/doc/files/app/controllers/periods_controller_rb.html +0 -108
  642. data/doc/files/app/controllers/search_controller_rb.html +0 -108
  643. data/doc/files/app/controllers/task_files_controller_rb.html +0 -108
  644. data/doc/files/app/controllers/tasks_controller_rb.html +0 -108
  645. data/doc/files/app/controllers/user_controller_rb.html +0 -108
  646. data/doc/files/app/controllers/works_controller_rb.html +0 -108
  647. data/doc/files/app/helpers/application_helper_rb.html +0 -115
  648. data/doc/files/app/helpers/backlogs_helper_rb.html +0 -107
  649. data/doc/files/app/helpers/estimates_helper_rb.html +0 -107
  650. data/doc/files/app/helpers/groups_helper_rb.html +0 -107
  651. data/doc/files/app/helpers/parties_helper_rb.html +0 -107
  652. data/doc/files/app/helpers/periods_helper_rb.html +0 -107
  653. data/doc/files/app/helpers/search_helper_rb.html +0 -107
  654. data/doc/files/app/helpers/task_files_helper_rb.html +0 -107
  655. data/doc/files/app/helpers/tasks_helper_rb.html +0 -108
  656. data/doc/files/app/helpers/user_helper_rb.html +0 -107
  657. data/doc/files/app/helpers/works_helper_rb.html +0 -107
  658. data/doc/files/app/models/backlog_rb.html +0 -108
  659. data/doc/files/app/models/chart_rb.html +0 -107
  660. data/doc/files/app/models/estimate_rb.html +0 -118
  661. data/doc/files/app/models/group_rb.html +0 -108
  662. data/doc/files/app/models/party_rb.html +0 -108
  663. data/doc/files/app/models/period_rb.html +0 -116
  664. data/doc/files/app/models/search_result_rb.html +0 -107
  665. data/doc/files/app/models/task_file_rb.html +0 -108
  666. data/doc/files/app/models/task_rb.html +0 -109
  667. data/doc/files/app/models/user_notify_rb.html +0 -108
  668. data/doc/files/app/models/user_rb.html +0 -115
  669. data/doc/files/app/models/work_rb.html +0 -108
  670. data/doc/files/bin/backlog.html +0 -201
  671. data/doc/files/bin/backlog.src/M000003.html +0 -20
  672. data/doc/files/bin/backlog.src/M000004.html +0 -18
  673. data/doc/files/bin/copy_production2development_rb.html +0 -153
  674. data/doc/files/bin/copy_production2development_rb.src/M000001.html +0 -19
  675. data/doc/files/bin/copy_production2development_rb.src/M000002.html +0 -19
  676. data/doc/files/lib/array_helper_rb.html +0 -107
  677. data/doc/files/lib/backlog.html +0 -112
  678. data/doc/files/lib/big_decimal_yaml_fix_rb.html +0 -117
  679. data/doc/files/lib/class_table_inheritance_rb.html +0 -106
  680. data/doc/files/lib/clock_rb.html +0 -107
  681. data/doc/files/lib/localization_rb.html +0 -115
  682. data/doc/files/lib/tasks/backup_rake.html +0 -204
  683. data/doc/files/lib/tasks/capistrano_rake.html +0 -214
  684. data/doc/files/lib/user_system_rb.html +0 -107
  685. data/doc/files/lib/version_from_history_rb.html +0 -107
  686. data/doc/files/public/robots_txt.html +0 -114
  687. data/doc/files/vendor/rails/railties/html/robots_txt.html +0 -114
  688. data/doc/fr_class_index.html +0 -70
  689. data/doc/fr_file_index.html +0 -118
  690. data/doc/fr_method_index.html +0 -495
  691. data/doc/index.html +0 -24
  692. data/doc/rdoc-style.css +0 -208
  693. data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core.rb +0 -290
@@ -1,3 +1,22 @@
1
+ == 0.9.0 2007-09-07
2
+
3
+ === Features
4
+
5
+ * Support for overriding database settings in system configuration file.
6
+ * Sqlite support.
7
+ * Added automatic login using security token in cookie.
8
+
9
+ === Fixes
10
+
11
+ * Updated RedHillOnRails Core to fix problems with Sqlite.
12
+ * Fixed bug in "New task" view when switching backlog.
13
+ * Cosmetic fixes to task icons.
14
+ * Set focus on description field in "New task" view if description is empty.
15
+ * Changed to use rbconfig instead of "/etc" to install on more configurations.
16
+ * Shortened "Changes" in news post to only last entry in History.txt
17
+ * Excluded "doc" directory from gem distribution since it is generated on install and it saves network bandwidth.
18
+ * Hide password in Edit User view.
19
+
1
20
  == 0.8.1 2007-09-04
2
21
 
3
22
  * Localized "Notes" string.
data/README.txt CHANGED
@@ -46,14 +46,20 @@ If you have concrete needs, and are willing to beta test the integration, please
46
46
 
47
47
  === Configuration
48
48
 
49
- You can set configuration parameters for backlog using the /etc/backlog.conf file.
49
+ You can set configuration parameters for backlog using the /etc/backlog.conf file on unix and "c:\documents and settings\all\backlog.conf" on windows.
50
50
  The format is YAML.
51
- Currently only port number is settable.
52
51
 
53
52
  Example:
54
53
 
55
54
  port: 3000
56
55
 
56
+ database:
57
+ adapter: postgresql
58
+ database: backlog_production
59
+ username: root
60
+ password: verySecret42
61
+ host: localhost
62
+
57
63
  === Charts
58
64
 
59
65
  The charts in Backlog are made using Gruff (http://nubyonrails.com/pages/gruff).
data/Rakefile CHANGED
@@ -19,11 +19,11 @@ Hoe.new("backlog", APP::VERSION) do |p|
19
19
  p.author = 'Uwe Kubosch'
20
20
  p.email = 'uwe@kubosch.no'
21
21
  p.remote_rdoc_dir = '' # Release to root
22
- p.changes = p.paragraphs_of('History.txt', 0..3).join("\n\n")
22
+ p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
23
23
  p.rdoc_pattern = /^(app\/(controllers|helpers|models)|lib|bin)|txt$/
24
24
  p.clean_globs = ['doc']
25
25
  p.spec_extras = {
26
- :files => Dir['**/*'].reject{|file_name| file_name =~ /^(log|pkg|tmp)/},
26
+ :files => Dir['**/*'].reject{|file_name| file_name =~ /^(doc|log|pkg|tmp)/},
27
27
  :rdoc_options => ['--inline-source'],
28
28
  :executables => ['backlog'],
29
29
  :requirements => ['ImageMagick or GraphicsMagick', 'PostgreSQL']
@@ -12,6 +12,7 @@ class TasksController < ApplicationController
12
12
 
13
13
  def new
14
14
  redirect_to params if request.post?
15
+ params[:task].delete :file if params[:task]
15
16
  @task = Task.new params[:task]
16
17
  @task.backlog_id ||= @task.period && @task.period.most_frequent_backlog
17
18
  @backlogs = Backlog.find(:all, :order => 'name')
@@ -3,17 +3,16 @@ class UserController < ApplicationController
3
3
 
4
4
  def login
5
5
  return if generate_blank_form
6
- if params[:user][:autologin]
7
- if params[:user][:autologin] == '1'
8
- cookies[:autologin] = {:value => params[:user][:login], :expires =>30.days.from_now}
9
- end
10
- params[:user].delete(:autologin)
11
- end
6
+ remember_me = params[:user].delete(:autologin)
12
7
  @user = User.new(params['user'])
13
8
  user = User.authenticate(params['user']['login'], params['user']['password'])
14
9
  if user
15
10
  self.current_user = user
16
11
  flash['notice'] = 'Login succeeded'
12
+ if remember_me && remember_me == '1'
13
+ cookies[:autologin] = {:value => user.id.to_s, :expires =>90.days.from_now}
14
+ cookies[:token] = {:value => user.security_token, :expires =>90.days.from_now}
15
+ end
17
16
  back_or_redirect_to :controller => 'backlogs', :action => :index
18
17
  else
19
18
  @login = params['user']['login']
@@ -47,9 +47,9 @@ class User < Party
47
47
  end
48
48
 
49
49
  def self.authenticate(login, pass)
50
- u = find(:first, :conditions => ["login = ? AND verified = TRUE AND deleted = FALSE", login])
50
+ u = find(:first, :conditions => ["login = ? AND verified = ? AND deleted = ?", login, true, false])
51
51
  return nil if u.nil?
52
- find(:first, :conditions => ["login = ? AND salted_password = ? AND verified = TRUE", login, salted_password(u.salt, hashed(pass))])
52
+ find(:first, :conditions => ["login = ? AND salted_password = ? AND verified = ?", login, salted_password(u.salt, hashed(pass)), true])
53
53
  end
54
54
 
55
55
  def self.authenticate_by_token(id, token)
@@ -3,6 +3,7 @@
3
3
  <th align="center"><%=active ? '#' : l(:resolution_abr)%></th>
4
4
  <th><%=l :task %></th>
5
5
  <th><%=l :start if backlog.track_times? && track_times %></th>
6
+ <th/>
6
7
  <th><%=l :done if backlog.track_done? %></th>
7
8
  <th width="*"><%=l :todo if backlog.track_todo? %></th>
8
9
  </tr>
@@ -66,5 +66,5 @@ end.join(' ')%><br clear="all"/>
66
66
 
67
67
 
68
68
  <script type="text/JavaScript">
69
- document.getElementById('<%=@task.backlog.nil? ? 'task_backlog_id' : @task.period.nil? ? 'task_period_id' : @task.description.nil? ? 'task_description' : 'task_notes' %>').focus();
69
+ document.getElementById('<%=@task.backlog.nil? ? 'task_backlog_id' : @task.period.nil? ? 'task_period_id' : (@task.description.nil? || @task.description.empty?) ? 'task_description' : 'task_notes' %>').focus();
70
70
  </script>
@@ -29,13 +29,19 @@
29
29
  <% if @task.work_started? -%>
30
30
  <%= text_field 'work', 'started_at_time', :tabindex => i+1, :value => @task.started_work.started_at.strftime('%H:%M'),
31
31
  :class => :task_time, :maxlength => 5, :onkeypress => "handleEvent(this, event, #{@task.id})" %>
32
- <%= image_detour_to('ernes_stop.png', l(:end_work), {:controller => 'tasks', :action => :end_work, :id => @task.id}, nil, true) %>
33
32
  <% elsif @task.track_times? && @task.period && @task.period.active? %>
34
33
  <%= image_detour_to 'hammer.png', l(:start_work), {:controller => 'tasks', :action => :start_work, :id => @task.id}, nil, true %>
35
34
  <% end -%>
36
35
  <% end %>
37
36
  <% end -%>
38
37
  </td>
38
+ <td align="right" nowrap="true" width="1">
39
+ <% if active && @task.loggable? && @task.work_started? -%>
40
+ <% form_tag({:controller => 'works', :action => 'update', :id => @task.started_work}) do %>
41
+ <%= image_detour_to('ernes_stop.png', l(:end_work), {:controller => 'tasks', :action => :end_work, :id => @task.id}, nil, true) %>
42
+ <% end -%>
43
+ <% end -%>
44
+ </td>
39
45
  <td align="<%=@task.loggable? ? 'center' : 'left'%>" nowrap="true" width="1">
40
46
  <% if @task.track_done? %>
41
47
  <% if @task.loggable? || @task.finished_at -%>
@@ -4,11 +4,11 @@
4
4
  <table>
5
5
  <tr class="two_columns">
6
6
  <td class="prompt"><label>Password:</label></td>
7
- <td class="value"><%= password_field 'user', 'password', :size => 16 %></td>
7
+ <td class="value"><%= password_field 'user', 'password', :size => 16, :value => '' %></td>
8
8
  </tr>
9
9
  <tr class="two_columns">
10
10
  <td class="prompt"><label>Password confirmation:</label></td>
11
- <td class="value"><%= password_field 'user', 'password_confirmation', :size => 16 %></td>
11
+ <td class="value"><%= password_field 'user', 'password_confirmation', :size => 16, :value => '' %></td>
12
12
  </tr>
13
13
  <% if submit %>
14
14
  <tr>
@@ -21,7 +21,7 @@ else
21
21
  INSTALL_DIR = "/usr/local/backlog/current"
22
22
  end
23
23
 
24
- config_file = '/etc/backlog.conf'
24
+ config_file = Config::CONFIG["sysconfdir"] + '/backlog.conf'
25
25
  config = {}
26
26
  config = File.open(config_file) {|f| YAML::load(f)} if File.exists? config_file
27
27
 
@@ -1,7 +1,7 @@
1
1
  development:
2
2
  adapter: postgresql
3
3
  database: backlog_development
4
- username: #{`whoami`}
4
+ username: root
5
5
  host: localhost
6
6
 
7
7
  # Warning: The database defined as 'test' will be erased and
@@ -10,11 +10,10 @@ development:
10
10
  test:
11
11
  adapter: postgresql
12
12
  database: backlog_test
13
- username: postgres
14
- host: localhost
15
13
 
16
14
  production:
17
15
  adapter: postgresql
18
16
  database: backlog_production
19
- username: #{`whoami`}
17
+ username: root
20
18
  host: localhost
19
+
@@ -1,3 +1,21 @@
1
+ require 'yaml'
2
+ require 'rbconfig'
3
+
4
+ # The following section has been added to load database settings from system config.
5
+ APP_CONFIG_FILE = Config::CONFIG["sysconfdir"] + '/backlog.conf'
6
+ if File.exists? APP_CONFIG_FILE
7
+ module Rails
8
+ class Configuration
9
+ def database_configuration
10
+ db_conf = YAML::load(ERB.new(IO.read(database_configuration_file)).result)
11
+ app_conf = YAML::load(ERB.new(IO.read(APP_CONFIG_FILE)).result)
12
+ db_conf['production'] = app_conf['database'] if app_conf['database']
13
+ db_conf
14
+ end
15
+ end
16
+ end
17
+ end
18
+
1
19
  # Be sure to restart your web server when you modify this file.
2
20
 
3
21
  # Uncomment below to force Rails into production mode when
@@ -15,14 +33,14 @@ Rails::Initializer.run do |config|
15
33
 
16
34
  # Skip frameworks you're not going to use
17
35
  # config.frameworks -= [ :action_web_service, :action_mailer ]
18
-
36
+
19
37
  # Add additional load paths for your own custom dirs
20
38
  # config.load_paths += %W( #{RAILS_ROOT}/extras )
21
-
39
+
22
40
  # Force all environments to use the same logger level
23
41
  # (by default production uses :info, the others :debug)
24
42
  # config.log_level = :debug
25
-
43
+
26
44
  # Use the database for sessions instead of the file system
27
45
  # (create the session table with 'rake db:sessions:create')
28
46
  # config.action_controller.session_store = :active_record_store
@@ -32,10 +50,10 @@ Rails::Initializer.run do |config|
32
50
  # This is necessary if your schema can't be completely dumped by the schema dumper,
33
51
  # like if you have constraints or database-specific column types
34
52
  # config.active_record.schema_format = :sql
35
-
53
+
36
54
  # Activate observers that should always be running
37
55
  # config.active_record.observers = :cacher, :garbage_collector
38
-
56
+
39
57
  # Make Active Record use UTC-base instead of local time
40
58
  # config.active_record.default_timezone = :utc
41
59
 
Binary file
@@ -3,8 +3,8 @@ class CreateBacklogs < ActiveRecord::Migration
3
3
  create_table :backlogs do |table|
4
4
  table.column :name, :string, :limit => 32, :null => false
5
5
  end
6
- tasks_exist = Task.count > 0
7
- if tasks_exist
6
+
7
+ if Task.count > 0
8
8
  default_backlog = Backlog.create! :name => 'Default Backlog'
9
9
  add_column :tasks, :backlog_id, :integer, :null => false, :default => default_backlog.id
10
10
 
@@ -89,26 +89,26 @@ ActiveRecord::Schema.define(:version => 20) do
89
89
  t.boolean "invoice"
90
90
  end
91
91
 
92
- add_foreign_key "estimates", ["task_id"], "tasks", ["id"]
93
- add_foreign_key "estimates", ["user_id"], "users", ["party_id"]
92
+ add_foreign_key "estimates", ["task_id"], "tasks", ["id"], :name => "estimates_task_id_fkey"
93
+ add_foreign_key "estimates", ["user_id"], "users", ["party_id"], :name => "estimates_user_id_fkey"
94
94
 
95
- add_foreign_key "groups", ["party_id"], "parties", ["id"]
95
+ add_foreign_key "groups", ["party_id"], "parties", ["id"], :name => "groups_party_id_fkey"
96
96
 
97
- add_foreign_key "groups_users", ["group_id"], "groups", ["party_id"]
98
- add_foreign_key "groups_users", ["user_id"], "users", ["party_id"]
97
+ add_foreign_key "groups_users", ["group_id"], "groups", ["party_id"], :name => "groups_users_group_id_fkey"
98
+ add_foreign_key "groups_users", ["user_id"], "users", ["party_id"], :name => "groups_users_user_id_fkey"
99
99
 
100
- add_foreign_key "periods", ["party_id"], "parties", ["id"]
100
+ add_foreign_key "periods", ["party_id"], "parties", ["id"], :name => "periods_party_id_fkey"
101
101
 
102
- add_foreign_key "task_files", ["task_id"], "tasks", ["id"]
102
+ add_foreign_key "task_files", ["task_id"], "tasks", ["id"], :name => "task_files_task_id_fkey"
103
103
 
104
- add_foreign_key "tasks", ["period_id"], "periods", ["id"]
105
- add_foreign_key "tasks", ["parent_id"], "tasks", ["id"]
106
- add_foreign_key "tasks", ["previous_task_id"], "tasks", ["id"]
107
- add_foreign_key "tasks", ["backlog_id"], "backlogs", ["id"]
104
+ add_foreign_key "tasks", ["period_id"], "periods", ["id"], :name => "tasks_period_id_fkey"
105
+ add_foreign_key "tasks", ["parent_id"], "tasks", ["id"], :name => "tasks_parent_id_fkey"
106
+ add_foreign_key "tasks", ["previous_task_id"], "tasks", ["id"], :name => "tasks_previous_task_id_fkey"
107
+ add_foreign_key "tasks", ["backlog_id"], "backlogs", ["id"], :name => "tasks_backlog_id_fkey"
108
108
 
109
- add_foreign_key "users", ["party_id"], "parties", ["id"]
109
+ add_foreign_key "users", ["party_id"], "parties", ["id"], :name => "users_party_id_fkey"
110
110
 
111
- add_foreign_key "works", ["task_id"], "tasks", ["id"]
112
- add_foreign_key "works", ["user_id"], "users", ["party_id"]
111
+ add_foreign_key "works", ["task_id"], "tasks", ["id"], :name => "works_task_id_fkey"
112
+ add_foreign_key "works", ["user_id"], "users", ["party_id"], :name => "works_user_id_fkey"
113
113
 
114
114
  end
Binary file
@@ -1 +1,16 @@
1
- port: 3000
1
+ # Uncomment the followinf section to override the database connection settings.
2
+
3
+ # port: 3000
4
+
5
+ # Uncomment one of the following sections to override the database connection settings.
6
+
7
+ # database:
8
+ # adapter: postgresql
9
+ # database: backlog_production
10
+ # username: root
11
+ # password:
12
+ # host: localhost
13
+
14
+ # database:
15
+ # adapter: sqlite
16
+ # database: /var/db/backlog_production.db
@@ -52,7 +52,21 @@ module UserSystem
52
52
  else
53
53
  raise "Unknown cookie class: #{cookie.class}"
54
54
  end
55
- cookie_user = User.authenticate(cookie_value, '')
55
+ token = cookies[:token] && case cookies[:token]
56
+ when String:
57
+ cookies[:token]
58
+ when Hash:
59
+ cookies[:token][:value].first
60
+ else
61
+ raise "Unknown cookie class: #{cookie.class}"
62
+ end
63
+ begin
64
+ cookie_user = User.authenticate_by_token(Integer(cookie_value), token)
65
+ rescue ArgumentError => e
66
+ logger.warn e
67
+ end
68
+ cookie_user ||= User.authenticate(cookie_value, '')
69
+
56
70
  return cookie_user if cookie_user
57
71
  end
58
72
 
@@ -71,10 +85,10 @@ module UserSystem
71
85
  def current_user
72
86
  Thread.current[:user]
73
87
  end
74
-
88
+
75
89
  def current_user= user
76
90
  session[:user_id] = user && user.id
77
91
  Thread.current[:user] = user
78
92
  end
79
-
93
+
80
94
  end
@@ -7,6 +7,8 @@ tesla:
7
7
  salt: 7f8b036f9b647d46d22abdbfc8113f44a88f9889
8
8
  email: tesla@example.com
9
9
  verified: true
10
+ security_token: random_token_string
11
+ token_expiry: <%= (Clock.now + 1.day) %> # for mysql, add .strftime("%y-%m-%d %H:%M:%S")
10
12
  deleted: false
11
13
 
12
14
  long_user:
@@ -6,8 +6,10 @@ require 'user_notify'
6
6
  class UserController; def rescue_action(e) raise e end; end
7
7
 
8
8
  class UserControllerTest < Test::Unit::TestCase
9
+ include UserSystem
10
+
9
11
  self.use_transactional_fixtures = false
10
- fixtures :parties, :users, :groups, :groups_users, :periods, :tasks, :task_files, :estimates, :works
12
+ fixtures :parties, :users, :groups, :groups_users, :backlogs, :periods, :tasks, :task_files, :estimates, :works
11
13
 
12
14
  def setup
13
15
  @controller = UserController.new
@@ -217,16 +219,34 @@ class UserControllerTest < Test::Unit::TestCase
217
219
  assert_logged_in users(:tesla)
218
220
  assert_response :redirect
219
221
  assert_equal @controller.url_for(:controller => 'backlogs', :action => :index), @response.redirect_url
220
- assert_cookie :autologin, :value => 'tesla'
222
+ assert_cookie :autologin, :value => '1000001'
223
+ assert_cookie :token, :value => 'random_token_string'
221
224
  end
222
225
 
223
- def test_autologin
226
+ def test_autologin_with_username_and_blank_password
224
227
  @request.cookies['autologin'] = CGI::Cookie.new('autologin', {:value => ['no_password_user'], :expires =>30.days.from_now})
225
228
  get :welcome
226
229
  assert_logged_in users(:no_password_user)
227
230
  assert_response :ok
228
231
  end
229
232
 
233
+ def test_autologin_with_token
234
+ @request.cookies['autologin'] = CGI::Cookie.new('autologin', {:value => ['1000007'], :expires =>30.days.from_now})
235
+ @request.cookies['token'] = CGI::Cookie.new('autologin', {:value => ['random_token_string'], :expires =>30.days.from_now})
236
+ get :welcome
237
+ assert_logged_in users(:no_password_user)
238
+ assert_response :ok
239
+ end
240
+
241
+ def test_autologin_unverified_user_with_token
242
+ @request.cookies['autologin'] = CGI::Cookie.new('autologin', {:value => ['1000007'], :expires =>30.days.from_now})
243
+ @request.cookies['token'] = CGI::Cookie.new('autologin', {:value => ['random_token_string'], :expires =>30.days.from_now})
244
+ get :welcome
245
+ assert_logged_in users(:no_password_user)
246
+ assert current_user.verified?
247
+ assert_response :ok
248
+ end
249
+
230
250
  private
231
251
 
232
252
  # TODO (uwe): This method should be removed
@@ -1,3 +1,68 @@
1
+ [REVISION 20070905]
2
+
3
+ [NEW] Explicitly ignore add_foreign_key() and remove_foreign_key() when running under SQLite. This solves issues when migrating schema from other databases.
4
+
5
+ [REVISION 20070707]
6
+
7
+ [NEW] Make the table name in table definition accessible.
8
+
9
+ [REVISION 20070529]
10
+
11
+ [FIXED] Undefined constant errors when patching connection adapters. Rails now only loads the connection adapter for the specified database (it used to load them all).
12
+
13
+ [REVISION 20070503]
14
+
15
+ [NEW] Support for SQL92 [NOT] DEFERRABLE on foreign keys.
16
+ [CHANGED] Foreign key names are now assigned by the database unless an explicit name is given (using :name).
17
+
18
+ [REVISION 20070221]
19
+
20
+ [NEW] Where possible, determine if a column is case sensitive (or not) based on the presence of case-insensitive indexes.
21
+
22
+ [REVISION 20070220]
23
+
24
+ [CHANGED] :ignore_case => true option when creating indexes change to :case_sensitive => false in keeping with the new Rails 1.2 option of the same name on validates_uniqueness_of. You may need to re-create your schema.rb (by using rake db:schema:dump) to pickup the new syntax.
25
+
26
+ [FIXED] Multi-column, case-insensitive indexes only selecting one of the columns!
27
+
28
+ [REVISION 20070219]
29
+
30
+ [FIXED] Can't drop table referenced in a foreign-key. All reverse foreign keys are now dropped before dropping the table.
31
+
32
+ [CHANGED] Upgrade to Rails 1.2.2.
33
+
34
+ [REVISION 20070217]
35
+
36
+ [NEW] Support reverse_foreign_keys for MySQL using the (typically bastardised) MySQL flavour of information_schema.
37
+
38
+ [CHANGED] Merged ForiegnKey and ForeignKeyDefinition as they were practically the same.
39
+
40
+ [REVISION 20070214]
41
+
42
+ [NEW] :name option when creating foreign keys.
43
+
44
+ [FIXED] Foreign key names are preserved in schema dumps. This means they will be copied from one database to another rather than leaving it up to the target database to make one up.
45
+
46
+ [NEW] Foreign keys are automatically assigned a name (fkey_<tablename>_col1_and_col2_and_col3) if none is specified.
47
+
48
+ [REVISION 20061206]
49
+
50
+ [NEW] Added :ignore_case option to add_index in PostgreSQL to support case-insensitive indexes. The generated indexes are actually expression indexes of the form: lower(column_name).
51
+
52
+ [REVISION 20061206]
53
+
54
+ [NEW] reverse_foreign_keys methods.
55
+
56
+ [REVISION 20061202]
57
+
58
+ [CHANGED] Use Rails 1.2 alias_method_chain.
59
+
60
+ [CHANGED] Separate modules into individual files.
61
+
62
+ [REVISION 20061129]
63
+
64
+ [FIXED] Foreign-key ON DELETE and ON UPDATE flipped in schema dump.
65
+
1
66
  [REVISION 20061121]
2
67
 
3
68
  [FIXED] MySQL doesn't support SQL92 'DROP CONSTRAINT SYNTAX'; use 'DROP FOREIGN KEY' instead.