backlog 0.7.12 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +9 -0
- data/Rakefile +2 -2
- data/app/controllers/estimates_controller.rb +20 -3
- data/app/controllers/task_files_controller.rb +19 -0
- data/app/controllers/tasks_controller.rb +7 -2
- data/app/helpers/task_files_helper.rb +2 -0
- data/app/models/task.rb +3 -3
- data/app/models/task_file.rb +7 -0
- data/app/views/layouts/_left_top.rhtml +12 -2
- data/app/views/tasks/_form.rhtml +16 -1
- data/app/views/tasks/edit.rhtml +1 -1
- data/db/migrate/020_create_task_files.rb +17 -0
- data/db/schema.rb +11 -21
- data/doc/classes/ActiveRecord/Base.html +40 -40
- data/doc/classes/ActiveRecord/Base.src/M000432.html +13 -56
- data/doc/classes/ActiveRecord/Base.src/M000433.html +14 -3
- data/doc/classes/ActiveRecord/Base.src/{M000428.html → M000434.html} +0 -0
- data/doc/classes/ActiveRecord/Base.src/{M000429.html → M000435.html} +0 -0
- data/doc/classes/ActiveRecord/Base.src/{M000426.html → M000436.html} +0 -0
- data/doc/classes/ActiveRecord/Base.src/{M000427.html → M000437.html} +0 -0
- data/doc/classes/ActiveRecord/Base.src/M000438.html +72 -0
- data/doc/classes/ActiveRecord/Base.src/M000439.html +16 -0
- data/doc/classes/ApplicationController.html +18 -18
- data/doc/classes/ApplicationController.src/{M000318.html → M000322.html} +0 -0
- data/doc/classes/ApplicationController.src/{M000319.html → M000323.html} +0 -0
- data/doc/classes/ApplicationHelper.html +91 -91
- data/doc/classes/ApplicationHelper.src/M000440.html +7 -4
- data/doc/classes/ApplicationHelper.src/M000441.html +4 -8
- data/doc/classes/ApplicationHelper.src/M000442.html +11 -15
- data/doc/classes/ApplicationHelper.src/M000443.html +6 -7
- data/doc/classes/ApplicationHelper.src/M000444.html +6 -4
- data/doc/classes/ApplicationHelper.src/M000445.html +7 -11
- data/doc/classes/ApplicationHelper.src/M000446.html +4 -6
- data/doc/classes/ApplicationHelper.src/M000447.html +8 -6
- data/doc/classes/ApplicationHelper.src/M000448.html +15 -7
- data/doc/classes/ApplicationHelper.src/M000449.html +7 -4
- data/doc/classes/ApplicationHelper.src/M000450.html +4 -8
- data/doc/classes/ApplicationHelper.src/M000451.html +11 -15
- data/doc/classes/ApplicationHelper.src/{M000437.html → M000452.html} +0 -0
- data/doc/classes/ApplicationHelper.src/{M000438.html → M000453.html} +0 -0
- data/doc/classes/ApplicationHelper.src/{M000439.html → M000454.html} +0 -0
- data/doc/classes/ApplicationHelper.src/M000455.html +18 -0
- data/doc/classes/ApplicationHelper.src/M000456.html +22 -0
- data/doc/classes/ApplicationHelper.src/M000457.html +30 -0
- data/doc/classes/Backlog.html +1 -1
- data/doc/classes/BacklogsHelper.html +1 -1
- data/doc/classes/BigDecimal.html +10 -10
- data/doc/classes/BigDecimal.src/{M000364.html → M000366.html} +0 -0
- data/doc/classes/BigDecimal.src/{M000365.html → M000367.html} +0 -0
- data/doc/classes/Chart.html +1 -1
- data/doc/classes/Clock.html +30 -30
- data/doc/classes/Clock.src/{M000394.html → M000400.html} +0 -0
- data/doc/classes/Clock.src/{M000395.html → M000401.html} +0 -0
- data/doc/classes/Clock.src/{M000396.html → M000402.html} +0 -0
- data/doc/classes/Clock.src/{M000397.html → M000403.html} +0 -0
- data/doc/classes/Clock.src/{M000398.html → M000404.html} +0 -0
- data/doc/classes/Clock.src/{M000399.html → M000405.html} +0 -0
- data/doc/classes/Estimate.html +11 -11
- data/doc/classes/Estimate.src/{M000400.html → M000406.html} +0 -0
- data/doc/classes/Estimate.src/{M000401.html → M000407.html} +0 -0
- data/doc/classes/EstimatesController.html +10 -10
- data/doc/classes/EstimatesController.src/M000398.html +39 -0
- data/doc/classes/EstimatesController.src/M000399.html +39 -0
- data/doc/classes/EstimatesHelper.html +1 -1
- data/doc/classes/Group.html +1 -1
- data/doc/classes/GroupsController.html +80 -80
- data/doc/classes/GroupsController.src/M000324.html +5 -4
- data/doc/classes/GroupsController.src/M000325.html +4 -10
- data/doc/classes/GroupsController.src/M000326.html +4 -7
- data/doc/classes/GroupsController.src/M000327.html +8 -8
- data/doc/classes/GroupsController.src/M000328.html +7 -5
- data/doc/classes/GroupsController.src/M000329.html +7 -9
- data/doc/classes/GroupsController.src/M000330.html +5 -5
- data/doc/classes/GroupsController.src/M000331.html +12 -4
- data/doc/classes/GroupsController.src/M000332.html +5 -4
- data/doc/classes/GroupsController.src/M000333.html +4 -10
- data/doc/classes/GroupsController.src/M000334.html +4 -7
- data/doc/classes/GroupsController.src/M000335.html +8 -8
- data/doc/classes/GroupsController.src/M000336.html +7 -5
- data/doc/classes/GroupsController.src/M000337.html +7 -9
- data/doc/classes/GroupsController.src/{M000323.html → M000338.html} +5 -4
- data/doc/classes/GroupsController.src/M000339.html +26 -0
- data/doc/classes/GroupsHelper.html +1 -1
- data/doc/classes/Localization.html +30 -30
- data/doc/classes/Localization.src/{M000414.html → M000420.html} +0 -0
- data/doc/classes/Localization.src/{M000415.html → M000421.html} +0 -0
- data/doc/classes/Localization.src/{M000416.html → M000422.html} +0 -0
- data/doc/classes/Localization.src/{M000417.html → M000423.html} +0 -0
- data/doc/classes/Localization.src/{M000418.html → M000424.html} +0 -0
- data/doc/classes/Localization.src/{M000419.html → M000425.html} +0 -0
- data/doc/classes/Localization/LString.html +20 -20
- data/doc/classes/Localization/LString.src/{M000420.html → M000426.html} +0 -0
- data/doc/classes/Localization/LString.src/{M000421.html → M000427.html} +0 -0
- data/doc/classes/Localization/LString.src/{M000422.html → M000428.html} +0 -0
- data/doc/classes/Localization/LString.src/{M000423.html → M000429.html} +0 -0
- data/doc/classes/PartiesHelper.html +1 -1
- data/doc/classes/Party.html +41 -41
- data/doc/classes/Party.src/M000340.html +4 -4
- data/doc/classes/Party.src/M000341.html +4 -11
- data/doc/classes/Party.src/M000342.html +4 -4
- data/doc/classes/Party.src/M000343.html +11 -4
- data/doc/classes/Party.src/M000344.html +4 -4
- data/doc/classes/Party.src/M000345.html +4 -11
- data/doc/classes/Party.src/{M000338.html → M000346.html} +4 -4
- data/doc/classes/Party.src/M000347.html +25 -0
- data/doc/classes/Period.html +1 -1
- data/doc/classes/PeriodsController.html +130 -130
- data/doc/classes/PeriodsController.src/M000372.html +9 -8
- data/doc/classes/PeriodsController.src/M000373.html +19 -6
- data/doc/classes/PeriodsController.src/M000374.html +5 -4
- data/doc/classes/PeriodsController.src/M000375.html +15 -4
- data/doc/classes/PeriodsController.src/M000376.html +11 -4
- data/doc/classes/PeriodsController.src/M000377.html +3 -5
- data/doc/classes/PeriodsController.src/M000378.html +8 -6
- data/doc/classes/PeriodsController.src/M000379.html +6 -11
- data/doc/classes/PeriodsController.src/M000380.html +4 -19
- data/doc/classes/PeriodsController.src/M000381.html +4 -5
- data/doc/classes/PeriodsController.src/M000382.html +4 -15
- data/doc/classes/PeriodsController.src/M000383.html +6 -11
- data/doc/classes/PeriodsController.src/M000384.html +8 -4
- data/doc/classes/PeriodsController.src/M000385.html +9 -8
- data/doc/classes/PeriodsController.src/M000386.html +19 -6
- data/doc/classes/PeriodsController.src/M000387.html +5 -4
- data/doc/classes/PeriodsController.src/M000388.html +15 -4
- data/doc/classes/PeriodsController.src/M000389.html +11 -4
- data/doc/classes/PeriodsController.src/M000390.html +3 -5
- data/doc/classes/PeriodsController.src/M000391.html +8 -6
- data/doc/classes/PeriodsController.src/M000392.html +20 -0
- data/doc/classes/{GroupsController.src/M000322.html → PeriodsController.src/M000393.html} +4 -5
- data/doc/classes/PeriodsController.src/{M000371.html → M000394.html} +4 -4
- data/doc/classes/{Party.src/M000339.html → PeriodsController.src/M000395.html} +4 -4
- data/doc/classes/PeriodsController.src/M000396.html +20 -0
- data/doc/classes/PeriodsController.src/M000397.html +22 -0
- data/doc/classes/PeriodsHelper.html +1 -1
- data/doc/classes/SearchHelper.html +1 -1
- data/doc/classes/SearchResult.html +11 -11
- data/doc/classes/SearchResult.src/{M000239.html → M000241.html} +0 -0
- data/doc/classes/SearchResult.src/{M000240.html → M000242.html} +0 -0
- data/doc/classes/Task.html +385 -385
- data/doc/classes/Task.src/M000243.html +7 -14
- data/doc/classes/Task.src/M000244.html +4 -4
- data/doc/classes/Task.src/M000245.html +16 -4
- data/doc/classes/Task.src/M000246.html +4 -24
- data/doc/classes/Task.src/M000247.html +4 -4
- data/doc/classes/Task.src/M000248.html +24 -11
- data/doc/classes/Task.src/M000249.html +4 -6
- data/doc/classes/Task.src/M000250.html +11 -12
- data/doc/classes/Task.src/M000251.html +6 -10
- data/doc/classes/Task.src/M000252.html +9 -40
- data/doc/classes/Task.src/M000253.html +8 -10
- data/doc/classes/Task.src/M000254.html +42 -7
- data/doc/classes/Task.src/M000255.html +12 -4
- data/doc/classes/Task.src/M000256.html +8 -4
- data/doc/classes/Task.src/M000257.html +4 -4
- data/doc/classes/Task.src/M000258.html +4 -4
- data/doc/classes/Task.src/M000259.html +4 -4
- data/doc/classes/Task.src/M000260.html +4 -4
- data/doc/classes/Task.src/M000261.html +4 -4
- data/doc/classes/Task.src/M000262.html +4 -6
- data/doc/classes/Task.src/M000263.html +4 -4
- data/doc/classes/Task.src/M000264.html +6 -4
- data/doc/classes/Task.src/M000265.html +4 -4
- data/doc/classes/Task.src/M000266.html +4 -4
- data/doc/classes/Task.src/M000267.html +4 -4
- data/doc/classes/Task.src/M000268.html +4 -4
- data/doc/classes/Task.src/M000269.html +4 -4
- data/doc/classes/Task.src/M000270.html +4 -4
- data/doc/classes/Task.src/M000271.html +4 -10
- data/doc/classes/Task.src/M000272.html +4 -19
- data/doc/classes/Task.src/M000273.html +9 -9
- data/doc/classes/Task.src/M000274.html +17 -18
- data/doc/classes/Task.src/M000275.html +10 -4
- data/doc/classes/Task.src/M000276.html +20 -4
- data/doc/classes/Task.src/M000277.html +4 -4
- data/doc/classes/Task.src/M000278.html +4 -9
- data/doc/classes/Task.src/M000279.html +4 -9
- data/doc/classes/Task.src/M000280.html +9 -4
- data/doc/classes/Task.src/M000281.html +7 -14
- data/doc/classes/Task.src/M000282.html +4 -4
- data/doc/classes/Task.src/M000283.html +16 -4
- data/doc/classes/Task.src/M000284.html +4 -24
- data/doc/classes/Task.src/M000285.html +4 -4
- data/doc/classes/Task.src/M000286.html +24 -11
- data/doc/classes/Task.src/M000287.html +4 -6
- data/doc/classes/Task.src/M000288.html +11 -12
- data/doc/classes/Task.src/M000289.html +6 -10
- data/doc/classes/Task.src/M000290.html +9 -40
- data/doc/classes/Task.src/M000291.html +8 -10
- data/doc/classes/Task.src/M000292.html +42 -7
- data/doc/classes/Task.src/M000293.html +12 -4
- data/doc/classes/Task.src/M000294.html +8 -4
- data/doc/classes/Task.src/M000295.html +4 -4
- data/doc/classes/Task.src/M000296.html +4 -4
- data/doc/classes/Task.src/M000297.html +4 -4
- data/doc/classes/Task.src/M000298.html +4 -4
- data/doc/classes/Task.src/M000299.html +4 -4
- data/doc/classes/Task.src/M000300.html +4 -6
- data/doc/classes/Task.src/M000301.html +4 -4
- data/doc/classes/Task.src/M000302.html +6 -4
- data/doc/classes/Task.src/M000303.html +4 -4
- data/doc/classes/Task.src/M000304.html +4 -4
- data/doc/classes/Task.src/M000305.html +4 -4
- data/doc/classes/Task.src/M000306.html +4 -4
- data/doc/classes/Task.src/M000307.html +4 -4
- data/doc/classes/Task.src/M000308.html +18 -0
- data/doc/classes/Task.src/M000309.html +4 -4
- data/doc/classes/Task.src/M000311.html +4 -19
- data/doc/classes/Task.src/M000312.html +9 -9
- data/doc/classes/Task.src/M000313.html +17 -18
- data/doc/classes/Task.src/M000314.html +10 -4
- data/doc/classes/Task.src/M000315.html +20 -4
- data/doc/classes/Task.src/M000316.html +4 -4
- data/doc/classes/Task.src/M000317.html +4 -9
- data/doc/classes/Task.src/M000318.html +18 -0
- data/doc/classes/Task.src/M000319.html +23 -0
- data/doc/classes/TaskFile.html +165 -0
- data/doc/classes/TaskFile.src/M000239.html +18 -0
- data/doc/classes/TaskFile.src/M000240.html +18 -0
- data/doc/classes/TaskFilesController.html +195 -0
- data/doc/classes/TaskFilesController.src/M000368.html +22 -0
- data/doc/classes/TaskFilesController.src/M000369.html +24 -0
- data/doc/classes/TaskFilesController.src/M000370.html +22 -0
- data/doc/classes/TaskFilesController.src/M000371.html +24 -0
- data/doc/classes/TaskFilesHelper.html +115 -0
- data/doc/classes/TasksController.src/M000107.html +6 -1
- data/doc/classes/TasksController.src/M000108.html +1 -1
- data/doc/classes/TasksController.src/M000109.html +1 -1
- data/doc/classes/TasksController.src/M000110.html +1 -1
- data/doc/classes/TasksController.src/M000111.html +1 -1
- data/doc/classes/TasksController.src/M000112.html +1 -1
- data/doc/classes/TasksController.src/M000113.html +1 -1
- data/doc/classes/TasksController.src/M000114.html +1 -1
- data/doc/classes/TasksController.src/M000115.html +1 -1
- data/doc/classes/TasksController.src/M000116.html +1 -1
- data/doc/classes/TasksController.src/M000117.html +1 -1
- data/doc/classes/TasksController.src/M000118.html +1 -1
- data/doc/classes/TasksController.src/M000119.html +1 -1
- data/doc/classes/TasksController.src/M000120.html +1 -1
- data/doc/classes/TasksController.src/M000121.html +2 -2
- data/doc/classes/TasksController.src/M000122.html +1 -1
- data/doc/classes/TasksController.src/M000127.html +6 -1
- data/doc/classes/TasksController.src/M000128.html +1 -1
- data/doc/classes/TasksController.src/M000129.html +1 -1
- data/doc/classes/TasksController.src/M000130.html +1 -1
- data/doc/classes/TasksController.src/M000131.html +1 -1
- data/doc/classes/TasksController.src/M000132.html +1 -1
- data/doc/classes/TasksController.src/M000133.html +1 -1
- data/doc/classes/TasksController.src/M000134.html +1 -1
- data/doc/classes/TasksController.src/M000135.html +1 -1
- data/doc/classes/TasksController.src/M000136.html +1 -1
- data/doc/classes/TasksController.src/M000137.html +1 -1
- data/doc/classes/TasksController.src/M000138.html +1 -1
- data/doc/classes/TasksController.src/M000139.html +1 -1
- data/doc/classes/TasksController.src/M000140.html +1 -1
- data/doc/classes/TasksController.src/M000141.html +2 -2
- data/doc/classes/TasksController.src/M000142.html +1 -1
- data/doc/classes/TasksHelper.html +1 -1
- data/doc/classes/Time.html +1 -1
- data/doc/classes/User.html +1 -1
- data/doc/classes/UserHelper.html +55 -55
- data/doc/classes/UserHelper.src/{M000402.html → M000414.html} +0 -0
- data/doc/classes/UserHelper.src/{M000403.html → M000415.html} +0 -0
- data/doc/classes/UserHelper.src/{M000404.html → M000416.html} +0 -0
- data/doc/classes/UserHelper.src/{M000405.html → M000417.html} +0 -0
- data/doc/classes/UserHelper.src/{M000406.html → M000418.html} +0 -0
- data/doc/classes/UserHelper.src/{M000407.html → M000419.html} +0 -0
- data/doc/classes/UserNotify.html +1 -1
- data/doc/classes/UserSystem.html +56 -56
- data/doc/classes/UserSystem.src/{M000452.html → M000464.html} +0 -0
- data/doc/classes/UserSystem.src/{M000453.html → M000465.html} +0 -0
- data/doc/classes/UserSystem.src/{M000454.html → M000466.html} +0 -0
- data/doc/classes/UserSystem.src/{M000455.html → M000467.html} +0 -0
- data/doc/classes/UserSystem.src/{M000456.html → M000468.html} +0 -0
- data/doc/classes/UserSystem.src/{M000457.html → M000469.html} +0 -0
- data/doc/classes/Work.html +91 -91
- data/doc/classes/Work.src/M000348.html +4 -14
- data/doc/classes/Work.src/M000349.html +4 -24
- data/doc/classes/Work.src/M000350.html +14 -4
- data/doc/classes/Work.src/M000351.html +24 -4
- data/doc/classes/Work.src/M000352.html +4 -7
- data/doc/classes/Work.src/M000353.html +4 -4
- data/doc/classes/Work.src/M000354.html +5 -5
- data/doc/classes/Work.src/M000355.html +4 -4
- data/doc/classes/Work.src/M000356.html +7 -4
- data/doc/classes/Work.src/M000357.html +4 -14
- data/doc/classes/Work.src/M000358.html +4 -24
- data/doc/classes/Work.src/M000359.html +14 -4
- data/doc/classes/Work.src/M000360.html +24 -4
- data/doc/classes/Work.src/M000361.html +4 -7
- data/doc/classes/Work.src/M000362.html +4 -4
- data/doc/classes/Work.src/M000363.html +5 -5
- data/doc/classes/Work.src/{M000346.html → M000364.html} +4 -4
- data/doc/classes/Work.src/M000365.html +21 -0
- data/doc/classes/WorksHelper.html +11 -11
- data/doc/classes/WorksHelper.src/{M000424.html → M000430.html} +0 -0
- data/doc/classes/WorksHelper.src/{M000425.html → M000431.html} +0 -0
- data/doc/created.rid +1 -1
- data/doc/dot/f_0.png +0 -0
- data/doc/dot/f_1.png +0 -0
- data/doc/dot/f_2.png +0 -0
- data/doc/dot/f_24.png +0 -0
- data/doc/dot/f_25.png +0 -0
- data/doc/dot/f_26.png +0 -0
- data/doc/dot/f_27.png +0 -0
- data/doc/dot/f_28.png +0 -0
- data/doc/dot/f_29.png +0 -0
- data/doc/dot/f_3.png +0 -0
- data/doc/dot/f_30.png +0 -0
- data/doc/dot/f_31.png +0 -0
- data/doc/dot/f_32.png +0 -0
- data/doc/dot/f_33.png +0 -0
- data/doc/dot/f_34.dot +32 -0
- data/doc/dot/f_34.png +0 -0
- data/doc/dot/f_4.png +0 -0
- data/doc/dot/f_46.dot +4 -4
- data/doc/dot/f_46.png +0 -0
- data/doc/dot/f_47.dot +4 -18
- data/doc/dot/f_47.png +0 -0
- data/doc/dot/f_48.dot +4 -13
- data/doc/dot/f_48.png +0 -0
- data/doc/dot/f_49.dot +18 -4
- data/doc/dot/f_49.png +0 -0
- data/doc/dot/f_5.png +0 -0
- data/doc/dot/f_50.dot +13 -4
- data/doc/dot/f_50.png +0 -0
- data/doc/dot/f_51.dot +4 -4
- data/doc/dot/f_51.png +0 -0
- data/doc/dot/f_52.dot +4 -4
- data/doc/dot/f_52.png +0 -0
- data/doc/dot/f_53.dot +4 -4
- data/doc/dot/f_53.png +0 -0
- data/doc/dot/{f_44.dot → f_54.dot} +4 -4
- data/doc/dot/f_54.png +0 -0
- data/doc/dot/{f_65.dot → f_55.dot} +4 -4
- data/doc/dot/f_55.png +0 -0
- data/doc/dot/{f_45.dot → f_56.dot} +4 -4
- data/doc/dot/f_56.png +0 -0
- data/doc/dot/f_6.png +0 -0
- data/doc/dot/f_68.dot +4 -4
- data/doc/dot/f_68.png +0 -0
- data/doc/dot/f_69.dot +15 -31
- data/doc/dot/f_69.png +0 -0
- data/doc/dot/f_7.png +0 -0
- data/doc/dot/f_70.dot +12 -3
- data/doc/dot/f_70.png +0 -0
- data/doc/dot/f_71.dot +7 -7
- data/doc/dot/f_71.png +0 -0
- data/doc/dot/f_72.dot +4 -4
- data/doc/dot/f_72.png +0 -0
- data/doc/dot/f_73.dot +9 -9
- data/doc/dot/f_73.png +0 -0
- data/doc/dot/f_74.dot +3 -12
- data/doc/dot/f_74.png +0 -0
- data/doc/dot/{f_64.dot → f_75.dot} +4 -4
- data/doc/dot/f_75.png +0 -0
- data/doc/dot/{f_67.dot → f_76.dot} +7 -7
- data/doc/dot/f_76.png +0 -0
- data/doc/dot/f_77.dot +32 -0
- data/doc/dot/f_77.png +0 -0
- data/doc/dot/f_78.dot +46 -0
- data/doc/dot/f_78.png +0 -0
- data/doc/dot/{f_66.dot → f_79.dot} +4 -4
- data/doc/dot/f_79.png +0 -0
- data/doc/dot/{m_48_0.dot → m_50_0.dot} +0 -0
- data/doc/dot/{m_48_0.png → m_50_0.png} +0 -0
- data/doc/files/History_txt.html +23 -2
- data/doc/files/app/controllers/estimates_controller_rb.html +1 -1
- data/doc/files/app/controllers/task_files_controller_rb.html +108 -0
- data/doc/files/app/controllers/tasks_controller_rb.html +1 -1
- data/doc/files/app/helpers/application_helper_rb.html +1 -1
- data/doc/files/app/helpers/backlogs_helper_rb.html +1 -1
- data/doc/files/app/helpers/estimates_helper_rb.html +1 -1
- data/doc/files/app/helpers/groups_helper_rb.html +1 -1
- data/doc/files/app/helpers/parties_helper_rb.html +1 -1
- data/doc/files/app/helpers/periods_helper_rb.html +1 -1
- data/doc/files/app/helpers/search_helper_rb.html +1 -1
- data/doc/files/app/helpers/task_files_helper_rb.html +107 -0
- data/doc/files/app/helpers/tasks_helper_rb.html +1 -1
- data/doc/files/app/helpers/user_helper_rb.html +1 -1
- data/doc/files/app/helpers/works_helper_rb.html +1 -1
- data/doc/files/app/models/backlog_rb.html +1 -1
- data/doc/files/app/models/chart_rb.html +1 -1
- data/doc/files/app/models/estimate_rb.html +1 -1
- data/doc/files/app/models/group_rb.html +1 -1
- data/doc/files/app/models/party_rb.html +1 -1
- data/doc/files/app/models/period_rb.html +1 -1
- data/doc/files/app/models/search_result_rb.html +1 -1
- data/doc/files/app/models/task_file_rb.html +108 -0
- data/doc/files/app/models/task_rb.html +2 -2
- data/doc/files/app/models/user_notify_rb.html +1 -1
- data/doc/files/app/models/user_rb.html +1 -1
- data/doc/files/app/models/work_rb.html +1 -1
- data/doc/fr_class_index.html +3 -0
- data/doc/fr_file_index.html +6 -0
- data/doc/fr_method_index.html +295 -289
- data/doc/index.html +2 -2
- data/lang/en.yaml +2 -0
- data/lang/no.yaml +2 -0
- data/post-clean.rb +12 -0
- data/post-install.rb +51 -0
- data/post-setup.rb +254 -0
- data/public/500.html +2 -1
- data/public/images/text-x-generic.png +0 -0
- data/public/stylesheets/backlog.css +15 -2
- data/public/stylesheets/mwrt002.css +1 -1
- data/public/stylesheets/user.css +1 -1
- data/test/fixtures/task_files.yml +13 -0
- data/test/functional/backlogs_controller_test.rb +2 -1
- data/test/functional/estimates_controller_test.rb +2 -0
- data/test/functional/groups_controller_test.rb +1 -1
- data/test/functional/periods_controller_test.rb +1 -1
- data/test/functional/task_files_controller_test.rb +29 -0
- data/test/functional/tasks_controller_test.rb +2 -2
- data/test/functional/user_controller_test.rb +1 -1
- data/test/functional/works_controller_test.rb +1 -1
- data/test/unit/estimate_test.rb +1 -1
- data/test/unit/period_test.rb +1 -1
- data/test/unit/task_file_test.rb +10 -0
- data/test/unit/task_test.rb +1 -1
- metadata +115 -88
- data/doc/classes/ActiveRecord/Base.src/M000430.html +0 -29
- data/doc/classes/ActiveRecord/Base.src/M000431.html +0 -27
- data/doc/classes/ApplicationHelper.src/M000434.html +0 -21
- data/doc/classes/ApplicationHelper.src/M000435.html +0 -18
- data/doc/classes/ApplicationHelper.src/M000436.html +0 -26
- data/doc/classes/EstimatesController.src/M000392.html +0 -22
- data/doc/classes/EstimatesController.src/M000393.html +0 -22
- data/doc/classes/PeriodsController.src/M000366.html +0 -25
- data/doc/classes/PeriodsController.src/M000367.html +0 -33
- data/doc/classes/PeriodsController.src/M000368.html +0 -19
- data/doc/classes/PeriodsController.src/M000369.html +0 -29
- data/doc/classes/PeriodsController.src/M000370.html +0 -25
- data/doc/classes/Task.src/M000241.html +0 -23
- data/doc/classes/Task.src/M000242.html +0 -18
- data/doc/classes/Task.src/M000310.html +0 -24
- data/doc/classes/Work.src/M000347.html +0 -18
- data/doc/dot/f_44.png +0 -0
- data/doc/dot/f_45.png +0 -0
- data/doc/dot/f_64.png +0 -0
- data/doc/dot/f_65.png +0 -0
- data/doc/dot/f_66.png +0 -0
- data/doc/dot/f_67.png +0 -0
- data/vendor/plugins/activerecord_foreign_key_extensions/init.rb +0 -2
- data/vendor/plugins/activerecord_foreign_key_extensions/lib/active_record_extensions.rb +0 -215
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>find_with_default_eager_loading (ActiveRecord::Base)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/class_table_inheritance.rb, line 7</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">find_with_default_eager_loading</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">params</span>)
|
|
15
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">default_eager_loading</span>
|
|
16
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
|
|
17
|
-
<span class="ruby-identifier">opts</span> = <span class="ruby-identifier">params</span>.<span class="ruby-identifier">last</span>
|
|
18
|
-
<span class="ruby-keyword kw">else</span>
|
|
19
|
-
<span class="ruby-identifier">opts</span> = {}
|
|
20
|
-
<span class="ruby-identifier">params</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">opts</span>)
|
|
21
|
-
<span class="ruby-keyword kw">end</span>
|
|
22
|
-
<span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:include</span>] <span class="ruby-operator">||=</span> []
|
|
23
|
-
<span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:include</span>] = [<span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:include</span>]] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:include</span>].<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
|
|
24
|
-
<span class="ruby-identifier">opts</span>[<span class="ruby-identifier">:include</span>] <span class="ruby-operator">+=</span> <span class="ruby-identifier">default_eager_loading</span>
|
|
25
|
-
<span class="ruby-keyword kw">end</span>
|
|
26
|
-
<span class="ruby-identifier">find_without_default_eager_loading</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">params</span>)
|
|
27
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
28
|
-
</body>
|
|
29
|
-
</html>
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>class_table_inheritance (ActiveRecord::Base)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File lib/class_table_inheritance.rb, line 24</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">class_table_inheritance</span>(<span class="ruby-identifier">options</span> = {})
|
|
15
|
-
<span class="ruby-identifier">table_name</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:subclass_table</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">demodulize</span>.<span class="ruby-identifier">tableize</span>
|
|
16
|
-
<span class="ruby-identifier">primary_key_name</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:subclass_foreign_key</span>] <span class="ruby-operator">||</span> <span class="ruby-node">"#{superclass.name.demodulize.underscore}_id"</span>
|
|
17
|
-
|
|
18
|
-
<span class="ruby-identifier">has_extra_columns_from</span>(
|
|
19
|
-
<span class="ruby-identifier">:table</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">table_name</span>, <span class="ruby-identifier">:foreign_key</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">primary_key_name</span>,
|
|
20
|
-
<span class="ruby-identifier">:proxy_class_name</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'ExtraColumns'</span>,
|
|
21
|
-
<span class="ruby-identifier">:proxy_class_belongs_to</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">name</span>,
|
|
22
|
-
<span class="ruby-identifier">:delegate_new_associations</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">true</span>,
|
|
23
|
-
<span class="ruby-identifier">:save_before_superclass_callbacks</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">true</span>
|
|
24
|
-
)
|
|
25
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
26
|
-
</body>
|
|
27
|
-
</html>
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>image_button_to (ApplicationHelper)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/helpers/application_helper.rb, line 6</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">image_button_to</span>(<span class="ruby-identifier">image_source</span>, <span class="ruby-identifier">title</span>, <span class="ruby-identifier">options</span>)
|
|
15
|
-
<span class="ruby-identifier">html</span> = <span class="ruby-value str">''</span>
|
|
16
|
-
<span class="ruby-identifier">html</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">image_submit_tag</span> <span class="ruby-identifier">image_source</span>, <span class="ruby-identifier">:class</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'image-submit'</span>, <span class="ruby-identifier">:alt</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">title</span>, <span class="ruby-identifier">:title</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">title</span>,
|
|
17
|
-
<span class="ruby-identifier">:id</span> =<span class="ruby-operator">></span> <span class="ruby-node">"#{title}_#{options[:id]}"</span>, <span class="ruby-identifier">:name</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">title</span>,
|
|
18
|
-
<span class="ruby-identifier">:onclick</span> =<span class="ruby-operator">></span> <span class="ruby-node">"form.action='#{url_for(options)}'"</span>
|
|
19
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
20
|
-
</body>
|
|
21
|
-
</html>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>detour_to (ApplicationHelper)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/helpers/application_helper.rb, line 13</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">detour_to</span>(<span class="ruby-identifier">title</span>, <span class="ruby-identifier">options</span>, <span class="ruby-identifier">html_options</span> = <span class="ruby-keyword kw">nil</span>)
|
|
15
|
-
<span class="ruby-identifier">link_to</span> <span class="ruby-identifier">title</span>, <span class="ruby-identifier">with_detour</span>(<span class="ruby-identifier">options</span>), <span class="ruby-identifier">html_options</span>
|
|
16
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
17
|
-
</body>
|
|
18
|
-
</html>
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>with_detour (ApplicationHelper)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/helpers/application_helper.rb, line 17</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">with_detour</span>(<span class="ruby-identifier">options</span>)
|
|
15
|
-
<span class="ruby-identifier">detour_options</span> = {<span class="ruby-identifier">:detour</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">params</span>.<span class="ruby-identifier">reject</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span><span class="ruby-operator">|</span> [<span class="ruby-identifier">:detour</span>, <span class="ruby-identifier">:return_from_detour</span>].<span class="ruby-identifier">include?</span> <span class="ruby-identifier">k</span>.<span class="ruby-identifier">to_sym</span>}}.<span class="ruby-identifier">update</span>(<span class="ruby-identifier">options</span>)
|
|
16
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:layout</span>]<span class="ruby-operator">==</span> <span class="ruby-keyword kw">false</span>
|
|
17
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:action</span>] <span class="ruby-operator">!~</span> <span class="ruby-regexp re">/_no_layout$/</span>
|
|
18
|
-
<span class="ruby-identifier">detour_options</span>[<span class="ruby-identifier">:detour</span>].<span class="ruby-identifier">update</span>({<span class="ruby-identifier">:action</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:action</span>] <span class="ruby-operator">+</span> <span class="ruby-value str">'_no_layout'</span>})
|
|
19
|
-
<span class="ruby-keyword kw">end</span>
|
|
20
|
-
<span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:action</span>] <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/_no_layout$/</span>
|
|
21
|
-
<span class="ruby-identifier">detour_options</span>[<span class="ruby-identifier">:detour</span>].<span class="ruby-identifier">update</span>({<span class="ruby-identifier">:action</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:action</span>][<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">-11</span>]})
|
|
22
|
-
<span class="ruby-keyword kw">end</span>
|
|
23
|
-
<span class="ruby-identifier">detour_options</span>
|
|
24
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
25
|
-
</body>
|
|
26
|
-
</html>
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>create (EstimatesController)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/controllers/estimates_controller.rb, line 4</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create</span>
|
|
15
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:id</span>] <span class="ruby-operator">&&</span> <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:estimate</span>]
|
|
16
|
-
<span class="ruby-ivar">@task</span> = <span class="ruby-constant">Task</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">params</span>[<span class="ruby-identifier">:id</span>])
|
|
17
|
-
<span class="ruby-ivar">@task</span>.<span class="ruby-identifier">estimate</span>(<span class="ruby-identifier">params</span>[<span class="ruby-identifier">:estimate</span>][<span class="ruby-identifier">:todo</span>])
|
|
18
|
-
<span class="ruby-identifier">redirect_to</span> <span class="ruby-identifier">:controller</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'periods'</span>, <span class="ruby-identifier">:action</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">:show</span>, <span class="ruby-identifier">:id</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">period</span>, <span class="ruby-identifier">:task_id</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">id</span>
|
|
19
|
-
<span class="ruby-keyword kw">end</span>
|
|
20
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
21
|
-
</body>
|
|
22
|
-
</html>
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>create (EstimatesController)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/controllers/estimates_controller.rb, line 4</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create</span>
|
|
15
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:id</span>] <span class="ruby-operator">&&</span> <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:estimate</span>]
|
|
16
|
-
<span class="ruby-ivar">@task</span> = <span class="ruby-constant">Task</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">params</span>[<span class="ruby-identifier">:id</span>])
|
|
17
|
-
<span class="ruby-ivar">@task</span>.<span class="ruby-identifier">estimate</span>(<span class="ruby-identifier">params</span>[<span class="ruby-identifier">:estimate</span>][<span class="ruby-identifier">:todo</span>])
|
|
18
|
-
<span class="ruby-identifier">redirect_to</span> <span class="ruby-identifier">:controller</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'periods'</span>, <span class="ruby-identifier">:action</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">:show</span>, <span class="ruby-identifier">:id</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">period</span>, <span class="ruby-identifier">:task_id</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@task</span>.<span class="ruby-identifier">id</span>
|
|
19
|
-
<span class="ruby-keyword kw">end</span>
|
|
20
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
21
|
-
</body>
|
|
22
|
-
</html>
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>index (PeriodsController)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/controllers/periods_controller.rb, line 5</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">index</span>
|
|
15
|
-
<span class="ruby-identifier">active_periods</span> = <span class="ruby-constant">Period</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>).<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">period</span><span class="ruby-operator">|</span> <span class="ruby-identifier">period</span>.<span class="ruby-identifier">active?</span>(<span class="ruby-keyword kw">true</span>)}
|
|
16
|
-
<span class="ruby-identifier">my_active_periods</span> = <span class="ruby-identifier">active_periods</span>.<span class="ruby-identifier">select</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">period</span><span class="ruby-operator">|</span> <span class="ruby-identifier">period</span>.<span class="ruby-identifier">party</span>.<span class="ruby-identifier">includes?</span>(<span class="ruby-identifier">current_user</span>)}
|
|
17
|
-
<span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">my_active_periods</span>.<span class="ruby-identifier">empty?</span>
|
|
18
|
-
<span class="ruby-identifier">most_urgent_period</span> = <span class="ruby-identifier">my_active_periods</span>.<span class="ruby-identifier">sort_by</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">required_speed</span>}.<span class="ruby-identifier">last</span>
|
|
19
|
-
<span class="ruby-keyword kw">else</span>
|
|
20
|
-
<span class="ruby-identifier">most_urgent_period</span> = <span class="ruby-identifier">active_periods</span>.<span class="ruby-identifier">sort_by</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">required_speed</span>}.<span class="ruby-identifier">last</span>
|
|
21
|
-
<span class="ruby-keyword kw">end</span>
|
|
22
|
-
<span class="ruby-identifier">redirect_to</span> <span class="ruby-identifier">:action</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'show'</span>, <span class="ruby-identifier">:id</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">most_urgent_period</span>
|
|
23
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
24
|
-
</body>
|
|
25
|
-
</html>
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>show (PeriodsController)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/controllers/periods_controller.rb, line 19</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">show</span>
|
|
15
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:task_id</span>]
|
|
16
|
-
<span class="ruby-ivar">@selected_task</span> = <span class="ruby-constant">Task</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">params</span>[<span class="ruby-identifier">:task_id</span>])
|
|
17
|
-
<span class="ruby-keyword kw">end</span>
|
|
18
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@selected_task</span>
|
|
19
|
-
<span class="ruby-ivar">@period</span> = <span class="ruby-ivar">@selected_task</span>.<span class="ruby-identifier">period</span>
|
|
20
|
-
<span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:id</span>] <span class="ruby-operator">&&</span> <span class="ruby-ivar">@period</span> = <span class="ruby-constant">Period</span>.<span class="ruby-identifier">find_by_id</span>(<span class="ruby-identifier">params</span>[<span class="ruby-identifier">:id</span>])
|
|
21
|
-
<span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@period</span> = <span class="ruby-constant">Period</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">:first</span>)
|
|
22
|
-
<span class="ruby-keyword kw">else</span>
|
|
23
|
-
<span class="ruby-identifier">redirect_to</span> <span class="ruby-identifier">:action</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">:new</span>
|
|
24
|
-
<span class="ruby-keyword kw">return</span>
|
|
25
|
-
<span class="ruby-keyword kw">end</span>
|
|
26
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@selected_task</span>.<span class="ruby-identifier">nil?</span>
|
|
27
|
-
<span class="ruby-ivar">@selected_task</span> = <span class="ruby-constant">Task</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">:first</span>, <span class="ruby-identifier">:conditions</span> =<span class="ruby-operator">></span> <span class="ruby-node">"position = 1 AND period_id = #{@period.id}"</span>)
|
|
28
|
-
<span class="ruby-keyword kw">end</span>
|
|
29
|
-
<span class="ruby-ivar">@tasks</span> = <span class="ruby-ivar">@period</span>.<span class="ruby-identifier">open_tasks</span>
|
|
30
|
-
<span class="ruby-ivar">@completed_tasks</span> = <span class="ruby-ivar">@period</span>.<span class="ruby-identifier">completed_tasks</span>.<span class="ruby-identifier">reverse</span>
|
|
31
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
32
|
-
</body>
|
|
33
|
-
</html>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>show_no_layout (PeriodsController)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/controllers/periods_controller.rb, line 38</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">show_no_layout</span>
|
|
15
|
-
<span class="ruby-identifier">show</span>
|
|
16
|
-
<span class="ruby-identifier">render</span> <span class="ruby-identifier">:partial</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'show_active'</span>, <span class="ruby-identifier">:layout</span> =<span class="ruby-operator">></span> <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">:locals</span> =<span class="ruby-operator">></span> {<span class="ruby-identifier">:i</span> =<span class="ruby-operator">></span> <span class="ruby-value">0</span>}
|
|
17
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
18
|
-
</body>
|
|
19
|
-
</html>
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>new (PeriodsController)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/controllers/periods_controller.rb, line 43</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">new</span>
|
|
15
|
-
<span class="ruby-ivar">@period</span> = <span class="ruby-constant">Period</span>.<span class="ruby-identifier">new</span>
|
|
16
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:period</span>] <span class="ruby-operator">&&</span> <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:period</span>][<span class="ruby-identifier">:party_id</span>]
|
|
17
|
-
<span class="ruby-ivar">@period</span>.<span class="ruby-identifier">party_id</span> = <span class="ruby-identifier">params</span>[<span class="ruby-identifier">:period</span>][<span class="ruby-identifier">:party_id</span>]
|
|
18
|
-
<span class="ruby-identifier">previous</span> = <span class="ruby-ivar">@period</span>.<span class="ruby-identifier">party</span>.<span class="ruby-identifier">periods</span>.<span class="ruby-identifier">last</span>
|
|
19
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">previous</span>
|
|
20
|
-
<span class="ruby-ivar">@period</span>.<span class="ruby-identifier">start_on</span> = <span class="ruby-identifier">previous</span>.<span class="ruby-identifier">end_on</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
|
|
21
|
-
<span class="ruby-ivar">@period</span>.<span class="ruby-identifier">end_on</span> = <span class="ruby-identifier">previous</span>.<span class="ruby-identifier">end_on</span> <span class="ruby-operator">+</span> (<span class="ruby-value">1</span> <span class="ruby-operator">+</span> (<span class="ruby-identifier">previous</span>.<span class="ruby-identifier">end_on</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">previous</span>.<span class="ruby-identifier">start_on</span>))
|
|
22
|
-
<span class="ruby-keyword kw">else</span>
|
|
23
|
-
<span class="ruby-ivar">@period</span>.<span class="ruby-identifier">start_on</span> = <span class="ruby-constant">Date</span>.<span class="ruby-identifier">today</span>
|
|
24
|
-
<span class="ruby-keyword kw">end</span>
|
|
25
|
-
<span class="ruby-keyword kw">end</span>
|
|
26
|
-
<span class="ruby-ivar">@parties</span> = <span class="ruby-constant">Party</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>)
|
|
27
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
28
|
-
</body>
|
|
29
|
-
</html>
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>create (PeriodsController)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/controllers/periods_controller.rb, line 58</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">create</span>
|
|
15
|
-
<span class="ruby-ivar">@period</span> = <span class="ruby-constant">Period</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">params</span>[<span class="ruby-identifier">:period</span>])
|
|
16
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@period</span>.<span class="ruby-identifier">save</span>
|
|
17
|
-
<span class="ruby-ivar">@period</span>.<span class="ruby-identifier">reload</span>
|
|
18
|
-
<span class="ruby-identifier">flash</span>[<span class="ruby-identifier">:notice</span>] = <span class="ruby-value str">'Period was successfully created.'</span>
|
|
19
|
-
<span class="ruby-identifier">back_or_redirect_to</span> <span class="ruby-identifier">:action</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'show'</span>, <span class="ruby-identifier">:id</span> =<span class="ruby-operator">></span> <span class="ruby-ivar">@period</span>.<span class="ruby-identifier">higher_item</span> <span class="ruby-value">? </span><span class="ruby-ivar">@period</span>.<span class="ruby-identifier">higher_item</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@period</span>
|
|
20
|
-
<span class="ruby-keyword kw">else</span>
|
|
21
|
-
<span class="ruby-identifier">render</span> <span class="ruby-identifier">:action</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'new'</span>
|
|
22
|
-
<span class="ruby-keyword kw">end</span>
|
|
23
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
24
|
-
</body>
|
|
25
|
-
</html>
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>validate (Task)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/models/task.rb, line 36</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">validate</span>
|
|
15
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">parent_id</span> <span class="ruby-operator">&&</span> (<span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">period_id</span> <span class="ruby-operator">||</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">backlog_id</span>)
|
|
16
|
-
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span> <span class="ruby-identifier">:parent_id</span>, <span class="ruby-value str">"A subtask may not have neither period nor backlog set."</span>
|
|
17
|
-
<span class="ruby-keyword kw">end</span>
|
|
18
|
-
<span class="ruby-keyword kw">if</span> <span class="ruby-identifier">new_record?</span> <span class="ruby-operator">&&</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">period</span> <span class="ruby-operator">&&</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">period</span>.<span class="ruby-identifier">passed?</span>
|
|
19
|
-
<span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span> <span class="ruby-identifier">:period_id</span>, <span class="ruby-value str">"You may not add a task to a past period."</span>
|
|
20
|
-
<span class="ruby-keyword kw">end</span>
|
|
21
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
22
|
-
</body>
|
|
23
|
-
</html>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>find_open (Task)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/models/task.rb, line 45</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">find_open</span>
|
|
15
|
-
<span class="ruby-identifier">find</span>(<span class="ruby-identifier">:all</span>, <span class="ruby-identifier">:conditions</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'finished_at IS NULL'</span>, <span class="ruby-identifier">:order</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'description'</span>)
|
|
16
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
17
|
-
</body>
|
|
18
|
-
</html>
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>depth (Task)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/models/task.rb, line 270</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">depth</span>
|
|
15
|
-
<span class="ruby-identifier">root_task</span> = <span class="ruby-keyword kw">self</span>
|
|
16
|
-
<span class="ruby-identifier">depth</span> = <span class="ruby-value">0</span>
|
|
17
|
-
<span class="ruby-keyword kw">while</span> <span class="ruby-operator">!</span><span class="ruby-identifier">root_task</span>.<span class="ruby-identifier">root?</span>
|
|
18
|
-
<span class="ruby-identifier">root_task</span> = <span class="ruby-identifier">root_task</span>.<span class="ruby-identifier">parent</span>
|
|
19
|
-
<span class="ruby-identifier">depth</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
20
|
-
<span class="ruby-keyword kw">end</span>
|
|
21
|
-
<span class="ruby-identifier">depth</span>
|
|
22
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
23
|
-
</body>
|
|
24
|
-
</html>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
2
|
-
<!DOCTYPE html
|
|
3
|
-
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
4
|
-
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
5
|
-
|
|
6
|
-
<html>
|
|
7
|
-
<head>
|
|
8
|
-
<title>track_times? (Work)</title>
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
10
|
-
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
11
|
-
</head>
|
|
12
|
-
<body class="standalone-code">
|
|
13
|
-
<pre><span class="ruby-comment cmt"># File app/models/work.rb, line 14</span>
|
|
14
|
-
<span class="ruby-keyword kw">def</span> <span class="ruby-identifier">track_times?</span>
|
|
15
|
-
<span class="ruby-identifier">task</span>.<span class="ruby-identifier">backlog</span>.<span class="ruby-identifier">track_times?</span>
|
|
16
|
-
<span class="ruby-keyword kw">end</span></pre>
|
|
17
|
-
</body>
|
|
18
|
-
</html>
|
data/doc/dot/f_44.png
DELETED
|
Binary file
|
data/doc/dot/f_45.png
DELETED
|
Binary file
|
data/doc/dot/f_64.png
DELETED
|
Binary file
|
data/doc/dot/f_65.png
DELETED
|
Binary file
|
data/doc/dot/f_66.png
DELETED
|
Binary file
|
data/doc/dot/f_67.png
DELETED
|
Binary file
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
# Postgres and MySQL by bubbleware.com
|
|
2
|
-
# Oracle and cleanups by atmos.org
|
|
3
|
-
require 'digest/sha1'
|
|
4
|
-
|
|
5
|
-
module ActiveRecord
|
|
6
|
-
class SchemaDumper
|
|
7
|
-
private
|
|
8
|
-
alias old_tables tables
|
|
9
|
-
def tables(stream)
|
|
10
|
-
old_tables(stream)
|
|
11
|
-
@connection.tables.sort.each do |tbl|
|
|
12
|
-
next if tbl == "schema_info"
|
|
13
|
-
foreign_key_constraints(tbl, stream)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def foreign_key_constraints(table, stream)
|
|
18
|
-
keys = @connection.foreign_key_constraints(table)
|
|
19
|
-
keys.each do |key|
|
|
20
|
-
stream.print " add_foreign_key_constraint #{table.inspect}, #{key.foreign_key.inspect}, #{key.reference_table.inspect}, #{key.reference_column.inspect}, :name => #{key.name.inspect}, :on_update => #{key.on_update.inspect}, :on_delete => #{key.on_delete.inspect}"
|
|
21
|
-
stream.puts
|
|
22
|
-
end
|
|
23
|
-
stream.puts unless keys.empty?
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
module ConnectionAdapters
|
|
28
|
-
class ForeignKeyConstraintDefinition < Struct.new(:name, :foreign_key, :reference_table, :reference_column, :on_update, :on_delete) #:nodoc:
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
class AbstractAdapter
|
|
32
|
-
protected
|
|
33
|
-
def symbolize_foreign_key_constraint_action(constraint_action)
|
|
34
|
-
constraint_action.downcase.gsub(/\s/, '_').to_sym
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
class PostgreSQLAdapter < AbstractAdapter
|
|
39
|
-
def foreign_key_constraints(table, name = nil)
|
|
40
|
-
sql = "SELECT conname, pg_catalog.pg_get_constraintdef(oid) AS consrc FROM pg_catalog.pg_constraint WHERE contype='f' "
|
|
41
|
-
sql += "AND conrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='#{table}')"
|
|
42
|
-
|
|
43
|
-
query(sql,name).collect do |row|
|
|
44
|
-
if row[1] =~ /FOREIGN KEY \((.+)\) REFERENCES (.+)\((.+)\)(?: ON UPDATE (\w+))?(?: ON DELETE (\w+))?/
|
|
45
|
-
ForeignKeyConstraintDefinition.new(row[0], $1, $2, $3,
|
|
46
|
-
($4 ? symbolize_foreign_key_constraint_action($4) : nil),
|
|
47
|
-
($5 ? symbolize_foreign_key_constraint_action($5) : nil))
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def remove_foreign_key_constraint(table_name, constraint_name)
|
|
53
|
-
execute "ALTER TABLE #{table_name} DROP CONSTRAINT #{constraint_name}"
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
alias old_default_value default_value
|
|
57
|
-
def default_value(value)
|
|
58
|
-
return ":now" if value =~ /^now\(\)|^\('now'::text\)::(date|timestamp)/i
|
|
59
|
-
return old_default_value(value)
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
class OracleAdapter < AbstractAdapter
|
|
64
|
-
def foreign_key_constraints(table, name = nil)
|
|
65
|
-
uc = 'user_constraints'
|
|
66
|
-
ucc = 'user_cons_columns'
|
|
67
|
-
|
|
68
|
-
sql = %Q{SELECT
|
|
69
|
-
c.table_name, cc.column_name,
|
|
70
|
-
r.table_name as rtable_name, rc.column_name as rcolumn_name,
|
|
71
|
-
c.delete_rule
|
|
72
|
-
from
|
|
73
|
-
#{uc} c, #{uc} r, #{ucc} cc, #{ucc} rc
|
|
74
|
-
where
|
|
75
|
-
c.constraint_type = 'R' and
|
|
76
|
-
c.table_name = UPPER('#{table}') and
|
|
77
|
-
c.r_constraint_name = r.constraint_name and
|
|
78
|
-
c.constraint_name = cc.constraint_name and
|
|
79
|
-
r.constraint_name = rc.constraint_name and
|
|
80
|
-
cc.position = rc.position}.gsub(/(\n|^\W+)/, ' ')
|
|
81
|
-
|
|
82
|
-
select(sql).collect do |row|
|
|
83
|
-
ForeignKeyConstraintDefinition.new('', row['column_name'].downcase,
|
|
84
|
-
row['rtable_name'].downcase, row['rcolumn_name'].downcase,
|
|
85
|
-
nil, symbolize_foreign_key_constraint_action(row['delete_rule']))
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
def remove_foreign_key_constraint(table_name, constraint_name)
|
|
89
|
-
constraint = 'c'+Digest::SHA1.hexdigest(constraint_name)[0,29]
|
|
90
|
-
execute "ALTER TABLE #{table_name} DROP FOREIGN KEY #{constraint}"
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
class MysqlAdapter < AbstractAdapter
|
|
95
|
-
def foreign_key_constraints(table, name = nil)
|
|
96
|
-
constraints = []
|
|
97
|
-
execute("SHOW CREATE TABLE #{table}", name).each do |row|
|
|
98
|
-
row[1].each do |create_line|
|
|
99
|
-
if create_line.strip =~ /CONSTRAINT `([^`]+)` FOREIGN KEY \(`([^`]+)`\) REFERENCES `([^`]+)` \(`([^`]+)`\)([^,]*)/
|
|
100
|
-
constraint = ForeignKeyConstraintDefinition.new(Regexp.last_match(1), Regexp.last_match(2), Regexp.last_match(3), Regexp.last_match(4), nil, nil)
|
|
101
|
-
|
|
102
|
-
constraint_params = {}
|
|
103
|
-
|
|
104
|
-
unless Regexp.last_match(5).nil?
|
|
105
|
-
Regexp.last_match(5).strip.split('ON ').each do |param|
|
|
106
|
-
constraint_params[Regexp.last_match(1).upcase] = Regexp.last_match(2).strip.upcase if param.strip =~ /([^ ]+) (.+)/
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
constraint.on_update = symbolize_foreign_key_constraint_action(constraint_params['UPDATE']) if constraint_params.include? 'UPDATE'
|
|
111
|
-
constraint.on_delete = symbolize_foreign_key_constraint_action(constraint_params['DELETE']) if constraint_params.include? 'DELETE'
|
|
112
|
-
|
|
113
|
-
constraints << constraint
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
constraints
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
def remove_foreign_key_constraint(table_name, constraint_name)
|
|
122
|
-
execute "ALTER TABLE #{table_name} DROP FOREIGN KEY #{constraint_name}"
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
alias :rename_column_without_foreign_keys :rename_column
|
|
126
|
-
def rename_column(table_name, old_column_name, new_column_name)
|
|
127
|
-
f_keys = tables.map {|t| foreign_keys(t)}.flatten
|
|
128
|
-
in_keys = f_keys.select {|f_key| f_key.references_table_name == table_name.to_s}
|
|
129
|
-
out_keys = f_keys.select {|f_key| f_key.table_name == table_name.to_s}
|
|
130
|
-
(in_keys + out_keys).each do |f_key|
|
|
131
|
-
remove_foreign_key(f_key.table_name, f_key.name)
|
|
132
|
-
end
|
|
133
|
-
rename_column_without_foreign_keys(table_name, old_column_name, new_column_name)
|
|
134
|
-
in_keys.each do |f_key|
|
|
135
|
-
add_foreign_key(f_key.table_name,
|
|
136
|
-
f_key.column_names,
|
|
137
|
-
f_key.references_table_name,
|
|
138
|
-
f_key.references_column_names.map {|col| col == old_column_name.to_s ? new_column_name.to_s : col},
|
|
139
|
-
{:on_update => f_key.on_update, :on_delete => f_key.on_delete})
|
|
140
|
-
end
|
|
141
|
-
out_keys.each do |f_key|
|
|
142
|
-
add_foreign_key(f_key.table_name,
|
|
143
|
-
f_key.column_names.map {|col| col == old_column_name.to_s ? new_column_name.to_s : col},
|
|
144
|
-
f_key.references_table_name,
|
|
145
|
-
f_key.references_column_names,
|
|
146
|
-
{:on_update => f_key.on_update, :on_delete => f_key.on_delete})
|
|
147
|
-
end
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
alias :remove_column_without_keys :remove_column
|
|
151
|
-
def remove_column(table_name, column_name)
|
|
152
|
-
indexes = indexes(table_name).select {|i| i.columns.include? column_name.to_s}
|
|
153
|
-
indexes.each do |i|
|
|
154
|
-
remove_index(i.table, :name => i.name)
|
|
155
|
-
end
|
|
156
|
-
remove_column_without_keys(table_name, column_name)
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
end
|
|
160
|
-
class Column
|
|
161
|
-
private
|
|
162
|
-
alias old_extract_limit extract_limit
|
|
163
|
-
def extract_limit(sql_type)
|
|
164
|
-
return 255 if sql_type =~ /enum/i
|
|
165
|
-
old_extract_limit(sql_type)
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
alias old_simplified_type simplified_type
|
|
169
|
-
def simplified_type(field_type)
|
|
170
|
-
return :string if field_type =~ /enum/i
|
|
171
|
-
old_simplified_type(field_type)
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
|
|
175
|
-
module SchemaStatements
|
|
176
|
-
# Adds a new foreign key constraint to the table.
|
|
177
|
-
#
|
|
178
|
-
# The constrinat will be named after the table and the reference table and column
|
|
179
|
-
# unless you pass +:name+ as an option.
|
|
180
|
-
#
|
|
181
|
-
# options: :name, :on_update, :on_delete
|
|
182
|
-
def foreign_key_constraint_statement(condition, fkc_sym)
|
|
183
|
-
action = { :restrict => 'RESTRICT', :cascade => 'CASCADE', :set_null => 'SET NULL' }[fkc_sym]
|
|
184
|
-
action ? ' ON ' << condition << ' ' << action : ''
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
def add_foreign_key_constraint(table_name, foreign_key, reference_table, reference_column, options = {})
|
|
188
|
-
constraint_name = options[:name] || "#{table_name}_ibfk_#{foreign_key}"
|
|
189
|
-
|
|
190
|
-
# oracle chokes on constraints longer than 30 chars
|
|
191
|
-
if adapter_name =~ /^(oci|oracle)$/i
|
|
192
|
-
constraint_name = 'c'+Digest::SHA1.hexdigest(constraint_name)[0,29]
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
sql = "ALTER TABLE #{table_name} ADD CONSTRAINT #{constraint_name} FOREIGN KEY (#{foreign_key}) REFERENCES #{reference_table} (#{reference_column})"
|
|
196
|
-
|
|
197
|
-
sql << foreign_key_constraint_statement('UPDATE', options[:on_update])
|
|
198
|
-
sql << foreign_key_constraint_statement('DELETE', options[:on_delete])
|
|
199
|
-
|
|
200
|
-
execute sql
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
# options: Must enter one of the two options:
|
|
204
|
-
# 1) :name => the name of the foreign key constraint
|
|
205
|
-
# 2) :foreign_key => the name of the column for which the foreign key was created
|
|
206
|
-
# (only if the default constraint_name was used)
|
|
207
|
-
def remove_foreign_key_constraint(table_name, options={})
|
|
208
|
-
constraint_name = options[:name] || "#{table_name}_ibfk_#{foreign_key}"
|
|
209
|
-
raise ArgumentError, "You must specify the constraint name" if constraint_name.blank?
|
|
210
|
-
|
|
211
|
-
@connection.remove_foreign_key_constraint(table_name, constraint_name)
|
|
212
|
-
end
|
|
213
|
-
end
|
|
214
|
-
end
|
|
215
|
-
end
|