backlog 0.8.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +19 -0
- data/README.txt +8 -2
- data/Rakefile +2 -2
- data/app/controllers/tasks_controller.rb +1 -0
- data/app/controllers/user_controller.rb +5 -6
- data/app/models/user.rb +2 -2
- data/app/views/tasks/_fields_header.rhtml +1 -0
- data/app/views/tasks/_form.rhtml +1 -1
- data/app/views/tasks/_task.rhtml +7 -1
- data/app/views/user/_password.rhtml +2 -2
- data/bin/backlog +1 -1
- data/config/database.yml +3 -4
- data/config/environment.rb +23 -5
- data/db/development.db +0 -0
- data/db/migrate/002_create_backlogs.rb +2 -2
- data/db/schema.rb +14 -14
- data/db/test.db +0 -0
- data/etc/backlog.conf +16 -1
- data/lib/user_system.rb +17 -3
- data/test/fixtures/users.yml +2 -0
- data/test/functional/user_controller_test.rb +23 -3
- data/vendor/plugins/redhillonrails_core/CHANGELOG +65 -0
- data/vendor/plugins/redhillonrails_core/README +27 -0
- data/vendor/plugins/redhillonrails_core/init.rb +19 -9
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/base.rb +54 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/abstract_adapter.rb +31 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/column.rb +21 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/foreign_key_definition.rb +26 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/index_definition.rb +11 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_adapter.rb +74 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_column.rb +8 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/postgresql_adapter.rb +99 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/schema_statements.rb +16 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/sqlite3_adapter.rb +9 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/table_definition.rb +27 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema.rb +27 -0
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema_dumper.rb +47 -0
- metadata +20 -710
- data/doc/classes/APP.html +0 -133
- data/doc/classes/ActiveRecord.html +0 -114
- data/doc/classes/ActiveRecord/Base.html +0 -271
- data/doc/classes/ActiveRecord/Base.src/M000432.html +0 -29
- data/doc/classes/ActiveRecord/Base.src/M000433.html +0 -27
- data/doc/classes/ActiveRecord/Base.src/M000434.html +0 -72
- data/doc/classes/ActiveRecord/Base.src/M000435.html +0 -16
- data/doc/classes/ActiveRecord/Base.src/M000436.html +0 -29
- data/doc/classes/ActiveRecord/Base.src/M000437.html +0 -27
- data/doc/classes/ActiveRecord/Base.src/M000438.html +0 -72
- data/doc/classes/ActiveRecord/Base.src/M000439.html +0 -16
- data/doc/classes/ApplicationController.html +0 -220
- data/doc/classes/ApplicationController.src/M000320.html +0 -19
- data/doc/classes/ApplicationController.src/M000321.html +0 -22
- data/doc/classes/ApplicationController.src/M000322.html +0 -19
- data/doc/classes/ApplicationController.src/M000323.html +0 -22
- data/doc/classes/ApplicationHelper.html +0 -405
- data/doc/classes/ApplicationHelper.src/M000440.html +0 -21
- data/doc/classes/ApplicationHelper.src/M000441.html +0 -18
- data/doc/classes/ApplicationHelper.src/M000442.html +0 -26
- data/doc/classes/ApplicationHelper.src/M000443.html +0 -20
- data/doc/classes/ApplicationHelper.src/M000444.html +0 -20
- data/doc/classes/ApplicationHelper.src/M000445.html +0 -22
- data/doc/classes/ApplicationHelper.src/M000446.html +0 -18
- data/doc/classes/ApplicationHelper.src/M000447.html +0 -22
- data/doc/classes/ApplicationHelper.src/M000448.html +0 -30
- data/doc/classes/ApplicationHelper.src/M000449.html +0 -21
- data/doc/classes/ApplicationHelper.src/M000450.html +0 -18
- data/doc/classes/ApplicationHelper.src/M000451.html +0 -26
- data/doc/classes/ApplicationHelper.src/M000452.html +0 -20
- data/doc/classes/ApplicationHelper.src/M000453.html +0 -20
- data/doc/classes/ApplicationHelper.src/M000454.html +0 -22
- data/doc/classes/ApplicationHelper.src/M000455.html +0 -18
- data/doc/classes/ApplicationHelper.src/M000456.html +0 -22
- data/doc/classes/ApplicationHelper.src/M000457.html +0 -30
- data/doc/classes/Array.html +0 -162
- data/doc/classes/Array.src/M000143.html +0 -22
- data/doc/classes/Array.src/M000144.html +0 -22
- data/doc/classes/Backlog.html +0 -315
- data/doc/classes/Backlog.src/M000005.html +0 -18
- data/doc/classes/Backlog.src/M000006.html +0 -18
- data/doc/classes/Backlog.src/M000007.html +0 -22
- data/doc/classes/Backlog.src/M000008.html +0 -22
- data/doc/classes/Backlog.src/M000009.html +0 -21
- data/doc/classes/Backlog.src/M000010.html +0 -18
- data/doc/classes/Backlog.src/M000011.html +0 -18
- data/doc/classes/Backlog.src/M000012.html +0 -18
- data/doc/classes/Backlog.src/M000013.html +0 -22
- data/doc/classes/Backlog.src/M000014.html +0 -22
- data/doc/classes/Backlog.src/M000015.html +0 -21
- data/doc/classes/Backlog.src/M000016.html +0 -18
- data/doc/classes/BacklogsController.html +0 -465
- data/doc/classes/BacklogsController.src/M000041.html +0 -26
- data/doc/classes/BacklogsController.src/M000042.html +0 -18
- data/doc/classes/BacklogsController.src/M000043.html +0 -31
- data/doc/classes/BacklogsController.src/M000044.html +0 -18
- data/doc/classes/BacklogsController.src/M000045.html +0 -24
- data/doc/classes/BacklogsController.src/M000046.html +0 -18
- data/doc/classes/BacklogsController.src/M000047.html +0 -19
- data/doc/classes/BacklogsController.src/M000048.html +0 -24
- data/doc/classes/BacklogsController.src/M000049.html +0 -20
- data/doc/classes/BacklogsController.src/M000050.html +0 -18
- data/doc/classes/BacklogsController.src/M000051.html +0 -18
- data/doc/classes/BacklogsController.src/M000052.html +0 -26
- data/doc/classes/BacklogsController.src/M000053.html +0 -18
- data/doc/classes/BacklogsController.src/M000054.html +0 -31
- data/doc/classes/BacklogsController.src/M000055.html +0 -18
- data/doc/classes/BacklogsController.src/M000056.html +0 -24
- data/doc/classes/BacklogsController.src/M000057.html +0 -18
- data/doc/classes/BacklogsController.src/M000058.html +0 -19
- data/doc/classes/BacklogsController.src/M000059.html +0 -24
- data/doc/classes/BacklogsController.src/M000060.html +0 -20
- data/doc/classes/BacklogsController.src/M000061.html +0 -18
- data/doc/classes/BacklogsController.src/M000062.html +0 -18
- data/doc/classes/BacklogsHelper.html +0 -115
- data/doc/classes/BigDecimal.html +0 -162
- data/doc/classes/BigDecimal.src/M000366.html +0 -34
- data/doc/classes/BigDecimal.src/M000367.html +0 -34
- data/doc/classes/Chart.html +0 -153
- data/doc/classes/Clock.html +0 -222
- data/doc/classes/Clock.src/M000400.html +0 -19
- data/doc/classes/Clock.src/M000401.html +0 -18
- data/doc/classes/Clock.src/M000402.html +0 -18
- data/doc/classes/Clock.src/M000403.html +0 -19
- data/doc/classes/Clock.src/M000404.html +0 -18
- data/doc/classes/Clock.src/M000405.html +0 -18
- data/doc/classes/Estimate.html +0 -175
- data/doc/classes/Estimate.src/M000406.html +0 -18
- data/doc/classes/Estimate.src/M000407.html +0 -18
- data/doc/classes/EstimatesController.html +0 -165
- data/doc/classes/EstimatesController.src/M000398.html +0 -39
- data/doc/classes/EstimatesController.src/M000399.html +0 -39
- data/doc/classes/EstimatesHelper.html +0 -115
- data/doc/classes/Group.html +0 -165
- data/doc/classes/Group.src/M000097.html +0 -18
- data/doc/classes/Group.src/M000098.html +0 -18
- data/doc/classes/GroupsController.html +0 -375
- data/doc/classes/GroupsController.src/M000324.html +0 -19
- data/doc/classes/GroupsController.src/M000325.html +0 -18
- data/doc/classes/GroupsController.src/M000326.html +0 -18
- data/doc/classes/GroupsController.src/M000327.html +0 -24
- data/doc/classes/GroupsController.src/M000328.html +0 -21
- data/doc/classes/GroupsController.src/M000329.html +0 -24
- data/doc/classes/GroupsController.src/M000330.html +0 -19
- data/doc/classes/GroupsController.src/M000331.html +0 -26
- data/doc/classes/GroupsController.src/M000332.html +0 -19
- data/doc/classes/GroupsController.src/M000333.html +0 -18
- data/doc/classes/GroupsController.src/M000334.html +0 -18
- data/doc/classes/GroupsController.src/M000335.html +0 -24
- data/doc/classes/GroupsController.src/M000336.html +0 -21
- data/doc/classes/GroupsController.src/M000337.html +0 -24
- data/doc/classes/GroupsController.src/M000338.html +0 -19
- data/doc/classes/GroupsController.src/M000339.html +0 -26
- data/doc/classes/GroupsHelper.html +0 -115
- data/doc/classes/Localization.html +0 -243
- data/doc/classes/Localization.src/M000420.html +0 -46
- data/doc/classes/Localization.src/M000421.html +0 -18
- data/doc/classes/Localization.src/M000422.html +0 -38
- data/doc/classes/Localization.src/M000423.html +0 -46
- data/doc/classes/Localization.src/M000424.html +0 -18
- data/doc/classes/Localization.src/M000425.html +0 -38
- data/doc/classes/Localization/LString.html +0 -203
- data/doc/classes/Localization/LString.src/M000426.html +0 -18
- data/doc/classes/Localization/LString.src/M000427.html +0 -18
- data/doc/classes/Localization/LString.src/M000428.html +0 -18
- data/doc/classes/Localization/LString.src/M000429.html +0 -18
- data/doc/classes/PartiesController.html +0 -225
- data/doc/classes/PartiesController.src/M000175.html +0 -18
- data/doc/classes/PartiesController.src/M000176.html +0 -18
- data/doc/classes/PartiesController.src/M000177.html +0 -18
- data/doc/classes/PartiesController.src/M000178.html +0 -18
- data/doc/classes/PartiesController.src/M000179.html +0 -18
- data/doc/classes/PartiesController.src/M000180.html +0 -18
- data/doc/classes/PartiesHelper.html +0 -115
- data/doc/classes/Party.html +0 -255
- data/doc/classes/Party.src/M000340.html +0 -18
- data/doc/classes/Party.src/M000341.html +0 -18
- data/doc/classes/Party.src/M000342.html +0 -18
- data/doc/classes/Party.src/M000343.html +0 -25
- data/doc/classes/Party.src/M000344.html +0 -18
- data/doc/classes/Party.src/M000345.html +0 -18
- data/doc/classes/Party.src/M000346.html +0 -18
- data/doc/classes/Party.src/M000347.html +0 -25
- data/doc/classes/Period.html +0 -1006
- data/doc/classes/Period.src/M000183.html +0 -18
- data/doc/classes/Period.src/M000184.html +0 -18
- data/doc/classes/Period.src/M000185.html +0 -21
- data/doc/classes/Period.src/M000186.html +0 -18
- data/doc/classes/Period.src/M000187.html +0 -18
- data/doc/classes/Period.src/M000188.html +0 -25
- data/doc/classes/Period.src/M000189.html +0 -18
- data/doc/classes/Period.src/M000190.html +0 -18
- data/doc/classes/Period.src/M000191.html +0 -18
- data/doc/classes/Period.src/M000192.html +0 -18
- data/doc/classes/Period.src/M000193.html +0 -22
- data/doc/classes/Period.src/M000194.html +0 -22
- data/doc/classes/Period.src/M000195.html +0 -28
- data/doc/classes/Period.src/M000196.html +0 -18
- data/doc/classes/Period.src/M000197.html +0 -18
- data/doc/classes/Period.src/M000198.html +0 -20
- data/doc/classes/Period.src/M000199.html +0 -26
- data/doc/classes/Period.src/M000200.html +0 -39
- data/doc/classes/Period.src/M000201.html +0 -18
- data/doc/classes/Period.src/M000202.html +0 -18
- data/doc/classes/Period.src/M000203.html +0 -18
- data/doc/classes/Period.src/M000204.html +0 -18
- data/doc/classes/Period.src/M000205.html +0 -18
- data/doc/classes/Period.src/M000206.html +0 -18
- data/doc/classes/Period.src/M000207.html +0 -64
- data/doc/classes/Period.src/M000208.html +0 -18
- data/doc/classes/Period.src/M000209.html +0 -18
- data/doc/classes/Period.src/M000210.html +0 -30
- data/doc/classes/Period.src/M000211.html +0 -18
- data/doc/classes/Period.src/M000212.html +0 -18
- data/doc/classes/Period.src/M000213.html +0 -21
- data/doc/classes/Period.src/M000214.html +0 -18
- data/doc/classes/Period.src/M000215.html +0 -18
- data/doc/classes/Period.src/M000216.html +0 -25
- data/doc/classes/Period.src/M000217.html +0 -18
- data/doc/classes/Period.src/M000218.html +0 -18
- data/doc/classes/Period.src/M000219.html +0 -18
- data/doc/classes/Period.src/M000220.html +0 -18
- data/doc/classes/Period.src/M000221.html +0 -22
- data/doc/classes/Period.src/M000222.html +0 -22
- data/doc/classes/Period.src/M000223.html +0 -28
- data/doc/classes/Period.src/M000224.html +0 -18
- data/doc/classes/Period.src/M000225.html +0 -18
- data/doc/classes/Period.src/M000226.html +0 -20
- data/doc/classes/Period.src/M000227.html +0 -26
- data/doc/classes/Period.src/M000228.html +0 -39
- data/doc/classes/Period.src/M000229.html +0 -18
- data/doc/classes/Period.src/M000230.html +0 -18
- data/doc/classes/Period.src/M000231.html +0 -18
- data/doc/classes/Period.src/M000232.html +0 -18
- data/doc/classes/Period.src/M000233.html +0 -18
- data/doc/classes/Period.src/M000234.html +0 -18
- data/doc/classes/Period.src/M000235.html +0 -64
- data/doc/classes/Period.src/M000236.html +0 -18
- data/doc/classes/Period.src/M000237.html +0 -18
- data/doc/classes/Period.src/M000238.html +0 -30
- data/doc/classes/PeriodsController.html +0 -525
- data/doc/classes/PeriodsController.src/M000372.html +0 -25
- data/doc/classes/PeriodsController.src/M000373.html +0 -33
- data/doc/classes/PeriodsController.src/M000374.html +0 -19
- data/doc/classes/PeriodsController.src/M000375.html +0 -29
- data/doc/classes/PeriodsController.src/M000376.html +0 -25
- data/doc/classes/PeriodsController.src/M000377.html +0 -18
- data/doc/classes/PeriodsController.src/M000378.html +0 -24
- data/doc/classes/PeriodsController.src/M000379.html +0 -20
- data/doc/classes/PeriodsController.src/M000380.html +0 -18
- data/doc/classes/PeriodsController.src/M000381.html +0 -18
- data/doc/classes/PeriodsController.src/M000382.html +0 -18
- data/doc/classes/PeriodsController.src/M000383.html +0 -20
- data/doc/classes/PeriodsController.src/M000384.html +0 -22
- data/doc/classes/PeriodsController.src/M000385.html +0 -25
- data/doc/classes/PeriodsController.src/M000386.html +0 -33
- data/doc/classes/PeriodsController.src/M000387.html +0 -19
- data/doc/classes/PeriodsController.src/M000388.html +0 -29
- data/doc/classes/PeriodsController.src/M000389.html +0 -25
- data/doc/classes/PeriodsController.src/M000390.html +0 -18
- data/doc/classes/PeriodsController.src/M000391.html +0 -24
- data/doc/classes/PeriodsController.src/M000392.html +0 -20
- data/doc/classes/PeriodsController.src/M000393.html +0 -18
- data/doc/classes/PeriodsController.src/M000394.html +0 -18
- data/doc/classes/PeriodsController.src/M000395.html +0 -18
- data/doc/classes/PeriodsController.src/M000396.html +0 -20
- data/doc/classes/PeriodsController.src/M000397.html +0 -22
- data/doc/classes/PeriodsHelper.html +0 -115
- data/doc/classes/SearchController.html +0 -165
- data/doc/classes/SearchController.src/M000181.html +0 -25
- data/doc/classes/SearchController.src/M000182.html +0 -25
- data/doc/classes/SearchHelper.html +0 -115
- data/doc/classes/SearchResult.html +0 -190
- data/doc/classes/SearchResult.src/M000241.html +0 -19
- data/doc/classes/SearchResult.src/M000242.html +0 -19
- data/doc/classes/Task.html +0 -1362
- data/doc/classes/Task.src/M000243.html +0 -23
- data/doc/classes/Task.src/M000244.html +0 -18
- data/doc/classes/Task.src/M000245.html +0 -30
- data/doc/classes/Task.src/M000246.html +0 -18
- data/doc/classes/Task.src/M000247.html +0 -18
- data/doc/classes/Task.src/M000248.html +0 -38
- data/doc/classes/Task.src/M000249.html +0 -18
- data/doc/classes/Task.src/M000250.html +0 -25
- data/doc/classes/Task.src/M000251.html +0 -20
- data/doc/classes/Task.src/M000252.html +0 -26
- data/doc/classes/Task.src/M000253.html +0 -24
- data/doc/classes/Task.src/M000254.html +0 -57
- data/doc/classes/Task.src/M000255.html +0 -26
- data/doc/classes/Task.src/M000256.html +0 -22
- data/doc/classes/Task.src/M000257.html +0 -18
- data/doc/classes/Task.src/M000258.html +0 -18
- data/doc/classes/Task.src/M000259.html +0 -18
- data/doc/classes/Task.src/M000260.html +0 -18
- data/doc/classes/Task.src/M000261.html +0 -18
- data/doc/classes/Task.src/M000262.html +0 -18
- data/doc/classes/Task.src/M000263.html +0 -18
- data/doc/classes/Task.src/M000264.html +0 -20
- data/doc/classes/Task.src/M000265.html +0 -18
- data/doc/classes/Task.src/M000266.html +0 -18
- data/doc/classes/Task.src/M000267.html +0 -18
- data/doc/classes/Task.src/M000268.html +0 -18
- data/doc/classes/Task.src/M000269.html +0 -18
- data/doc/classes/Task.src/M000270.html +0 -18
- data/doc/classes/Task.src/M000271.html +0 -18
- data/doc/classes/Task.src/M000272.html +0 -18
- data/doc/classes/Task.src/M000273.html +0 -24
- data/doc/classes/Task.src/M000274.html +0 -33
- data/doc/classes/Task.src/M000275.html +0 -24
- data/doc/classes/Task.src/M000276.html +0 -34
- data/doc/classes/Task.src/M000277.html +0 -18
- data/doc/classes/Task.src/M000278.html +0 -18
- data/doc/classes/Task.src/M000279.html +0 -18
- data/doc/classes/Task.src/M000280.html +0 -23
- data/doc/classes/Task.src/M000281.html +0 -23
- data/doc/classes/Task.src/M000282.html +0 -18
- data/doc/classes/Task.src/M000283.html +0 -30
- data/doc/classes/Task.src/M000284.html +0 -18
- data/doc/classes/Task.src/M000285.html +0 -18
- data/doc/classes/Task.src/M000286.html +0 -38
- data/doc/classes/Task.src/M000287.html +0 -18
- data/doc/classes/Task.src/M000288.html +0 -25
- data/doc/classes/Task.src/M000289.html +0 -20
- data/doc/classes/Task.src/M000290.html +0 -26
- data/doc/classes/Task.src/M000291.html +0 -24
- data/doc/classes/Task.src/M000292.html +0 -57
- data/doc/classes/Task.src/M000293.html +0 -26
- data/doc/classes/Task.src/M000294.html +0 -22
- data/doc/classes/Task.src/M000295.html +0 -18
- data/doc/classes/Task.src/M000296.html +0 -18
- data/doc/classes/Task.src/M000297.html +0 -18
- data/doc/classes/Task.src/M000298.html +0 -18
- data/doc/classes/Task.src/M000299.html +0 -18
- data/doc/classes/Task.src/M000300.html +0 -18
- data/doc/classes/Task.src/M000301.html +0 -18
- data/doc/classes/Task.src/M000302.html +0 -20
- data/doc/classes/Task.src/M000303.html +0 -18
- data/doc/classes/Task.src/M000304.html +0 -18
- data/doc/classes/Task.src/M000305.html +0 -18
- data/doc/classes/Task.src/M000306.html +0 -18
- data/doc/classes/Task.src/M000307.html +0 -18
- data/doc/classes/Task.src/M000308.html +0 -18
- data/doc/classes/Task.src/M000309.html +0 -18
- data/doc/classes/Task.src/M000311.html +0 -18
- data/doc/classes/Task.src/M000312.html +0 -24
- data/doc/classes/Task.src/M000313.html +0 -33
- data/doc/classes/Task.src/M000314.html +0 -24
- data/doc/classes/Task.src/M000315.html +0 -34
- data/doc/classes/Task.src/M000316.html +0 -18
- data/doc/classes/Task.src/M000317.html +0 -18
- data/doc/classes/Task.src/M000318.html +0 -18
- data/doc/classes/Task.src/M000319.html +0 -23
- data/doc/classes/TaskFile.html +0 -165
- data/doc/classes/TaskFile.src/M000239.html +0 -18
- data/doc/classes/TaskFile.src/M000240.html +0 -18
- data/doc/classes/TaskFilesController.html +0 -195
- data/doc/classes/TaskFilesController.src/M000368.html +0 -22
- data/doc/classes/TaskFilesController.src/M000369.html +0 -24
- data/doc/classes/TaskFilesController.src/M000370.html +0 -22
- data/doc/classes/TaskFilesController.src/M000371.html +0 -24
- data/doc/classes/TaskFilesHelper.html +0 -115
- data/doc/classes/TasksController.html +0 -735
- data/doc/classes/TasksController.src/M000103.html +0 -20
- data/doc/classes/TasksController.src/M000104.html +0 -22
- data/doc/classes/TasksController.src/M000105.html +0 -42
- data/doc/classes/TasksController.src/M000106.html +0 -21
- data/doc/classes/TasksController.src/M000107.html +0 -82
- data/doc/classes/TasksController.src/M000108.html +0 -22
- data/doc/classes/TasksController.src/M000109.html +0 -21
- data/doc/classes/TasksController.src/M000110.html +0 -20
- data/doc/classes/TasksController.src/M000111.html +0 -20
- data/doc/classes/TasksController.src/M000112.html +0 -20
- data/doc/classes/TasksController.src/M000113.html +0 -25
- data/doc/classes/TasksController.src/M000114.html +0 -35
- data/doc/classes/TasksController.src/M000115.html +0 -25
- data/doc/classes/TasksController.src/M000116.html +0 -20
- data/doc/classes/TasksController.src/M000117.html +0 -20
- data/doc/classes/TasksController.src/M000118.html +0 -20
- data/doc/classes/TasksController.src/M000119.html +0 -20
- data/doc/classes/TasksController.src/M000120.html +0 -42
- data/doc/classes/TasksController.src/M000121.html +0 -43
- data/doc/classes/TasksController.src/M000122.html +0 -21
- data/doc/classes/TasksController.src/M000123.html +0 -20
- data/doc/classes/TasksController.src/M000124.html +0 -22
- data/doc/classes/TasksController.src/M000125.html +0 -42
- data/doc/classes/TasksController.src/M000126.html +0 -21
- data/doc/classes/TasksController.src/M000127.html +0 -82
- data/doc/classes/TasksController.src/M000128.html +0 -22
- data/doc/classes/TasksController.src/M000129.html +0 -21
- data/doc/classes/TasksController.src/M000130.html +0 -20
- data/doc/classes/TasksController.src/M000131.html +0 -20
- data/doc/classes/TasksController.src/M000132.html +0 -20
- data/doc/classes/TasksController.src/M000133.html +0 -25
- data/doc/classes/TasksController.src/M000134.html +0 -35
- data/doc/classes/TasksController.src/M000135.html +0 -25
- data/doc/classes/TasksController.src/M000136.html +0 -20
- data/doc/classes/TasksController.src/M000137.html +0 -20
- data/doc/classes/TasksController.src/M000138.html +0 -20
- data/doc/classes/TasksController.src/M000139.html +0 -20
- data/doc/classes/TasksController.src/M000140.html +0 -42
- data/doc/classes/TasksController.src/M000141.html +0 -43
- data/doc/classes/TasksController.src/M000142.html +0 -21
- data/doc/classes/TasksHelper.html +0 -115
- data/doc/classes/Time.html +0 -193
- data/doc/classes/Time.src/M000099.html +0 -20
- data/doc/classes/Time.src/M000100.html +0 -20
- data/doc/classes/Time.src/M000101.html +0 -20
- data/doc/classes/Time.src/M000102.html +0 -20
- data/doc/classes/User.html +0 -639
- data/doc/classes/User.src/M000145.html +0 -19
- data/doc/classes/User.src/M000146.html +0 -18
- data/doc/classes/User.src/M000147.html +0 -20
- data/doc/classes/User.src/M000148.html +0 -29
- data/doc/classes/User.src/M000149.html +0 -18
- data/doc/classes/User.src/M000150.html +0 -23
- data/doc/classes/User.src/M000151.html +0 -20
- data/doc/classes/User.src/M000152.html +0 -18
- data/doc/classes/User.src/M000153.html +0 -18
- data/doc/classes/User.src/M000154.html +0 -18
- data/doc/classes/User.src/M000155.html +0 -18
- data/doc/classes/User.src/M000156.html +0 -19
- data/doc/classes/User.src/M000157.html +0 -21
- data/doc/classes/User.src/M000158.html +0 -23
- data/doc/classes/User.src/M000159.html +0 -19
- data/doc/classes/User.src/M000160.html +0 -19
- data/doc/classes/User.src/M000161.html +0 -18
- data/doc/classes/User.src/M000162.html +0 -20
- data/doc/classes/User.src/M000163.html +0 -29
- data/doc/classes/User.src/M000164.html +0 -18
- data/doc/classes/User.src/M000165.html +0 -23
- data/doc/classes/User.src/M000166.html +0 -20
- data/doc/classes/User.src/M000167.html +0 -18
- data/doc/classes/User.src/M000168.html +0 -18
- data/doc/classes/User.src/M000169.html +0 -18
- data/doc/classes/User.src/M000170.html +0 -18
- data/doc/classes/User.src/M000171.html +0 -19
- data/doc/classes/User.src/M000172.html +0 -21
- data/doc/classes/User.src/M000173.html +0 -23
- data/doc/classes/User.src/M000174.html +0 -19
- data/doc/classes/UserController.html +0 -509
- data/doc/classes/UserController.src/M000017.html +0 -34
- data/doc/classes/UserController.src/M000018.html +0 -36
- data/doc/classes/UserController.src/M000019.html +0 -21
- data/doc/classes/UserController.src/M000020.html +0 -33
- data/doc/classes/UserController.src/M000021.html +0 -48
- data/doc/classes/UserController.src/M000022.html +0 -39
- data/doc/classes/UserController.src/M000023.html +0 -25
- data/doc/classes/UserController.src/M000024.html +0 -17
- data/doc/classes/UserController.src/M000025.html +0 -22
- data/doc/classes/UserController.src/M000026.html +0 -24
- data/doc/classes/UserController.src/M000027.html +0 -26
- data/doc/classes/UserController.src/M000028.html +0 -19
- data/doc/classes/UserController.src/M000029.html +0 -34
- data/doc/classes/UserController.src/M000030.html +0 -36
- data/doc/classes/UserController.src/M000031.html +0 -21
- data/doc/classes/UserController.src/M000032.html +0 -33
- data/doc/classes/UserController.src/M000033.html +0 -48
- data/doc/classes/UserController.src/M000034.html +0 -39
- data/doc/classes/UserController.src/M000035.html +0 -25
- data/doc/classes/UserController.src/M000036.html +0 -17
- data/doc/classes/UserController.src/M000037.html +0 -22
- data/doc/classes/UserController.src/M000038.html +0 -24
- data/doc/classes/UserController.src/M000039.html +0 -26
- data/doc/classes/UserController.src/M000040.html +0 -19
- data/doc/classes/UserHelper.html +0 -324
- data/doc/classes/UserHelper.src/M000408.html +0 -18
- data/doc/classes/UserHelper.src/M000409.html +0 -37
- data/doc/classes/UserHelper.src/M000410.html +0 -19
- data/doc/classes/UserHelper.src/M000411.html +0 -18
- data/doc/classes/UserHelper.src/M000412.html +0 -18
- data/doc/classes/UserHelper.src/M000413.html +0 -18
- data/doc/classes/UserHelper.src/M000414.html +0 -18
- data/doc/classes/UserHelper.src/M000415.html +0 -37
- data/doc/classes/UserHelper.src/M000416.html +0 -19
- data/doc/classes/UserHelper.src/M000417.html +0 -18
- data/doc/classes/UserHelper.src/M000418.html +0 -18
- data/doc/classes/UserHelper.src/M000419.html +0 -18
- data/doc/classes/UserNotify.html +0 -253
- data/doc/classes/UserNotify.src/M000089.html +0 -28
- data/doc/classes/UserNotify.src/M000090.html +0 -27
- data/doc/classes/UserNotify.src/M000091.html +0 -28
- data/doc/classes/UserNotify.src/M000092.html +0 -22
- data/doc/classes/UserNotify.src/M000093.html +0 -28
- data/doc/classes/UserNotify.src/M000094.html +0 -27
- data/doc/classes/UserNotify.src/M000095.html +0 -28
- data/doc/classes/UserNotify.src/M000096.html +0 -22
- data/doc/classes/UserSystem.html +0 -330
- data/doc/classes/UserSystem.src/M000458.html +0 -26
- data/doc/classes/UserSystem.src/M000459.html +0 -18
- data/doc/classes/UserSystem.src/M000460.html +0 -23
- data/doc/classes/UserSystem.src/M000461.html +0 -46
- data/doc/classes/UserSystem.src/M000462.html +0 -18
- data/doc/classes/UserSystem.src/M000463.html +0 -19
- data/doc/classes/UserSystem.src/M000464.html +0 -26
- data/doc/classes/UserSystem.src/M000465.html +0 -18
- data/doc/classes/UserSystem.src/M000466.html +0 -23
- data/doc/classes/UserSystem.src/M000467.html +0 -46
- data/doc/classes/UserSystem.src/M000468.html +0 -18
- data/doc/classes/UserSystem.src/M000469.html +0 -19
- data/doc/classes/Work.html +0 -451
- data/doc/classes/Work.src/M000348.html +0 -18
- data/doc/classes/Work.src/M000349.html +0 -18
- data/doc/classes/Work.src/M000350.html +0 -28
- data/doc/classes/Work.src/M000351.html +0 -38
- data/doc/classes/Work.src/M000352.html +0 -18
- data/doc/classes/Work.src/M000353.html +0 -18
- data/doc/classes/Work.src/M000354.html +0 -21
- data/doc/classes/Work.src/M000355.html +0 -18
- data/doc/classes/Work.src/M000356.html +0 -21
- data/doc/classes/Work.src/M000357.html +0 -18
- data/doc/classes/Work.src/M000358.html +0 -18
- data/doc/classes/Work.src/M000359.html +0 -28
- data/doc/classes/Work.src/M000360.html +0 -38
- data/doc/classes/Work.src/M000361.html +0 -18
- data/doc/classes/Work.src/M000362.html +0 -18
- data/doc/classes/Work.src/M000363.html +0 -21
- data/doc/classes/Work.src/M000364.html +0 -18
- data/doc/classes/Work.src/M000365.html +0 -21
- data/doc/classes/WorksController.html +0 -525
- data/doc/classes/WorksController.src/M000063.html +0 -19
- data/doc/classes/WorksController.src/M000064.html +0 -19
- data/doc/classes/WorksController.src/M000065.html +0 -18
- data/doc/classes/WorksController.src/M000066.html +0 -22
- data/doc/classes/WorksController.src/M000067.html +0 -36
- data/doc/classes/WorksController.src/M000068.html +0 -21
- data/doc/classes/WorksController.src/M000069.html +0 -31
- data/doc/classes/WorksController.src/M000070.html +0 -21
- data/doc/classes/WorksController.src/M000071.html +0 -25
- data/doc/classes/WorksController.src/M000072.html +0 -20
- data/doc/classes/WorksController.src/M000073.html +0 -22
- data/doc/classes/WorksController.src/M000074.html +0 -23
- data/doc/classes/WorksController.src/M000075.html +0 -23
- data/doc/classes/WorksController.src/M000076.html +0 -19
- data/doc/classes/WorksController.src/M000077.html +0 -19
- data/doc/classes/WorksController.src/M000078.html +0 -18
- data/doc/classes/WorksController.src/M000079.html +0 -22
- data/doc/classes/WorksController.src/M000080.html +0 -36
- data/doc/classes/WorksController.src/M000081.html +0 -21
- data/doc/classes/WorksController.src/M000082.html +0 -31
- data/doc/classes/WorksController.src/M000083.html +0 -21
- data/doc/classes/WorksController.src/M000084.html +0 -25
- data/doc/classes/WorksController.src/M000085.html +0 -20
- data/doc/classes/WorksController.src/M000086.html +0 -22
- data/doc/classes/WorksController.src/M000087.html +0 -23
- data/doc/classes/WorksController.src/M000088.html +0 -23
- data/doc/classes/WorksHelper.html +0 -156
- data/doc/classes/WorksHelper.src/M000430.html +0 -18
- data/doc/classes/WorksHelper.src/M000431.html +0 -18
- data/doc/created.rid +0 -1
- data/doc/dot/f_0.dot +0 -14
- data/doc/dot/f_0.png +0 -0
- data/doc/dot/f_1.dot +0 -30
- data/doc/dot/f_1.png +0 -0
- data/doc/dot/f_2.dot +0 -39
- data/doc/dot/f_2.png +0 -0
- data/doc/dot/f_24.dot +0 -32
- data/doc/dot/f_24.png +0 -0
- data/doc/dot/f_25.dot +0 -32
- data/doc/dot/f_25.png +0 -0
- data/doc/dot/f_26.dot +0 -32
- data/doc/dot/f_26.png +0 -0
- data/doc/dot/f_27.dot +0 -32
- data/doc/dot/f_27.png +0 -0
- data/doc/dot/f_28.dot +0 -32
- data/doc/dot/f_28.png +0 -0
- data/doc/dot/f_29.dot +0 -32
- data/doc/dot/f_29.png +0 -0
- data/doc/dot/f_3.dot +0 -23
- data/doc/dot/f_3.png +0 -0
- data/doc/dot/f_30.dot +0 -130
- data/doc/dot/f_30.png +0 -0
- data/doc/dot/f_31.dot +0 -32
- data/doc/dot/f_31.png +0 -0
- data/doc/dot/f_32.dot +0 -32
- data/doc/dot/f_32.png +0 -0
- data/doc/dot/f_33.dot +0 -32
- data/doc/dot/f_33.png +0 -0
- data/doc/dot/f_34.dot +0 -32
- data/doc/dot/f_34.png +0 -0
- data/doc/dot/f_4.dot +0 -23
- data/doc/dot/f_4.png +0 -0
- data/doc/dot/f_46.dot +0 -30
- data/doc/dot/f_46.png +0 -0
- data/doc/dot/f_47.dot +0 -30
- data/doc/dot/f_47.png +0 -0
- data/doc/dot/f_48.dot +0 -30
- data/doc/dot/f_48.png +0 -0
- data/doc/dot/f_49.dot +0 -44
- data/doc/dot/f_49.png +0 -0
- data/doc/dot/f_5.dot +0 -30
- data/doc/dot/f_5.png +0 -0
- data/doc/dot/f_50.dot +0 -39
- data/doc/dot/f_50.png +0 -0
- data/doc/dot/f_51.dot +0 -30
- data/doc/dot/f_51.png +0 -0
- data/doc/dot/f_52.dot +0 -30
- data/doc/dot/f_52.png +0 -0
- data/doc/dot/f_53.dot +0 -30
- data/doc/dot/f_53.png +0 -0
- data/doc/dot/f_54.dot +0 -30
- data/doc/dot/f_54.png +0 -0
- data/doc/dot/f_55.dot +0 -30
- data/doc/dot/f_55.png +0 -0
- data/doc/dot/f_56.dot +0 -30
- data/doc/dot/f_56.png +0 -0
- data/doc/dot/f_6.dot +0 -23
- data/doc/dot/f_6.png +0 -0
- data/doc/dot/f_68.dot +0 -32
- data/doc/dot/f_68.png +0 -0
- data/doc/dot/f_69.dot +0 -30
- data/doc/dot/f_69.png +0 -0
- data/doc/dot/f_7.dot +0 -47
- data/doc/dot/f_7.png +0 -0
- data/doc/dot/f_70.dot +0 -32
- data/doc/dot/f_70.png +0 -0
- data/doc/dot/f_71.dot +0 -32
- data/doc/dot/f_71.png +0 -0
- data/doc/dot/f_72.dot +0 -32
- data/doc/dot/f_72.png +0 -0
- data/doc/dot/f_73.dot +0 -46
- data/doc/dot/f_73.png +0 -0
- data/doc/dot/f_74.dot +0 -23
- data/doc/dot/f_74.png +0 -0
- data/doc/dot/f_75.dot +0 -32
- data/doc/dot/f_75.png +0 -0
- data/doc/dot/f_76.dot +0 -32
- data/doc/dot/f_76.png +0 -0
- data/doc/dot/f_77.dot +0 -32
- data/doc/dot/f_77.png +0 -0
- data/doc/dot/f_78.dot +0 -46
- data/doc/dot/f_78.png +0 -0
- data/doc/dot/f_79.dot +0 -32
- data/doc/dot/f_79.png +0 -0
- data/doc/dot/m_50_0.dot +0 -30
- data/doc/dot/m_50_0.png +0 -0
- data/doc/files/History_txt.html +0 -738
- data/doc/files/README_txt.html +0 -270
- data/doc/files/app/controllers/application_rb.html +0 -123
- data/doc/files/app/controllers/backlogs_controller_rb.html +0 -108
- data/doc/files/app/controllers/estimates_controller_rb.html +0 -108
- data/doc/files/app/controllers/groups_controller_rb.html +0 -108
- data/doc/files/app/controllers/parties_controller_rb.html +0 -108
- data/doc/files/app/controllers/periods_controller_rb.html +0 -108
- data/doc/files/app/controllers/search_controller_rb.html +0 -108
- data/doc/files/app/controllers/task_files_controller_rb.html +0 -108
- data/doc/files/app/controllers/tasks_controller_rb.html +0 -108
- data/doc/files/app/controllers/user_controller_rb.html +0 -108
- data/doc/files/app/controllers/works_controller_rb.html +0 -108
- data/doc/files/app/helpers/application_helper_rb.html +0 -115
- data/doc/files/app/helpers/backlogs_helper_rb.html +0 -107
- data/doc/files/app/helpers/estimates_helper_rb.html +0 -107
- data/doc/files/app/helpers/groups_helper_rb.html +0 -107
- data/doc/files/app/helpers/parties_helper_rb.html +0 -107
- data/doc/files/app/helpers/periods_helper_rb.html +0 -107
- data/doc/files/app/helpers/search_helper_rb.html +0 -107
- data/doc/files/app/helpers/task_files_helper_rb.html +0 -107
- data/doc/files/app/helpers/tasks_helper_rb.html +0 -108
- data/doc/files/app/helpers/user_helper_rb.html +0 -107
- data/doc/files/app/helpers/works_helper_rb.html +0 -107
- data/doc/files/app/models/backlog_rb.html +0 -108
- data/doc/files/app/models/chart_rb.html +0 -107
- data/doc/files/app/models/estimate_rb.html +0 -118
- data/doc/files/app/models/group_rb.html +0 -108
- data/doc/files/app/models/party_rb.html +0 -108
- data/doc/files/app/models/period_rb.html +0 -116
- data/doc/files/app/models/search_result_rb.html +0 -107
- data/doc/files/app/models/task_file_rb.html +0 -108
- data/doc/files/app/models/task_rb.html +0 -109
- data/doc/files/app/models/user_notify_rb.html +0 -108
- data/doc/files/app/models/user_rb.html +0 -115
- data/doc/files/app/models/work_rb.html +0 -108
- data/doc/files/bin/backlog.html +0 -201
- data/doc/files/bin/backlog.src/M000003.html +0 -20
- data/doc/files/bin/backlog.src/M000004.html +0 -18
- data/doc/files/bin/copy_production2development_rb.html +0 -153
- data/doc/files/bin/copy_production2development_rb.src/M000001.html +0 -19
- data/doc/files/bin/copy_production2development_rb.src/M000002.html +0 -19
- data/doc/files/lib/array_helper_rb.html +0 -107
- data/doc/files/lib/backlog.html +0 -112
- data/doc/files/lib/big_decimal_yaml_fix_rb.html +0 -117
- data/doc/files/lib/class_table_inheritance_rb.html +0 -106
- data/doc/files/lib/clock_rb.html +0 -107
- data/doc/files/lib/localization_rb.html +0 -115
- data/doc/files/lib/tasks/backup_rake.html +0 -204
- data/doc/files/lib/tasks/capistrano_rake.html +0 -214
- data/doc/files/lib/user_system_rb.html +0 -107
- data/doc/files/lib/version_from_history_rb.html +0 -107
- data/doc/files/public/robots_txt.html +0 -114
- data/doc/files/vendor/rails/railties/html/robots_txt.html +0 -114
- data/doc/fr_class_index.html +0 -70
- data/doc/fr_file_index.html +0 -118
- data/doc/fr_method_index.html +0 -495
- data/doc/index.html +0 -24
- data/doc/rdoc-style.css +0 -208
- data/vendor/plugins/redhillonrails_core/lib/red_hill_consulting/core.rb +0 -290
data/History.txt
CHANGED
@@ -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..
|
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
|
-
|
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']
|
data/app/models/user.rb
CHANGED
@@ -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 =
|
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 =
|
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>
|
data/app/views/tasks/_form.rhtml
CHANGED
@@ -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>
|
data/app/views/tasks/_task.rhtml
CHANGED
@@ -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>
|
data/bin/backlog
CHANGED
@@ -21,7 +21,7 @@ else
|
|
21
21
|
INSTALL_DIR = "/usr/local/backlog/current"
|
22
22
|
end
|
23
23
|
|
24
|
-
config_file = '/
|
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
|
|
data/config/database.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
development:
|
2
2
|
adapter: postgresql
|
3
3
|
database: backlog_development
|
4
|
-
username:
|
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:
|
17
|
+
username: root
|
20
18
|
host: localhost
|
19
|
+
|
data/config/environment.rb
CHANGED
@@ -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
|
|
data/db/development.db
ADDED
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
|
-
|
7
|
-
if
|
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
|
|
data/db/schema.rb
CHANGED
@@ -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
|
data/db/test.db
ADDED
Binary file
|
data/etc/backlog.conf
CHANGED
@@ -1 +1,16 @@
|
|
1
|
-
|
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
|
data/lib/user_system.rb
CHANGED
@@ -52,7 +52,21 @@ module UserSystem
|
|
52
52
|
else
|
53
53
|
raise "Unknown cookie class: #{cookie.class}"
|
54
54
|
end
|
55
|
-
|
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
|
data/test/fixtures/users.yml
CHANGED
@@ -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 => '
|
222
|
+
assert_cookie :autologin, :value => '1000001'
|
223
|
+
assert_cookie :token, :value => 'random_token_string'
|
221
224
|
end
|
222
225
|
|
223
|
-
def
|
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.
|