@@ -42,7 +42,12 class WorkflowsController < ApplicationController | |||
|
42 | 42 | end |
|
43 | 43 | @roles = Role.find(:all, :order => 'builtin, position') |
|
44 | 44 | @trackers = Tracker.find(:all, :order => 'position') |
|
45 | @statuses = IssueStatus.find(:all, :order => 'position') | |
|
45 | ||
|
46 | @used_statuses_only = (params[:used_statuses_only] == '0' ? false : true) | |
|
47 | if @tracker && @used_statuses_only && @tracker.issue_statuses.any? | |
|
48 | @statuses = @tracker.issue_statuses | |
|
49 | end | |
|
50 | @statuses ||= IssueStatus.find(:all, :order => 'position') | |
|
46 | 51 | end |
|
47 | 52 | |
|
48 | 53 | def copy |
@@ -43,6 +43,23 class Tracker < ActiveRecord::Base | |||
|
43 | 43 | find(:all, :order => 'position') |
|
44 | 44 | end |
|
45 | 45 | |
|
46 | # Returns an array of IssueStatus that are used | |
|
47 | # in the tracker's workflows | |
|
48 | def issue_statuses | |
|
49 | if @issue_statuses | |
|
50 | return @issue_statuses | |
|
51 | elsif new_record? | |
|
52 | return [] | |
|
53 | end | |
|
54 | ||
|
55 | ids = Workflow. | |
|
56 | connection.select_rows("SELECT DISTINCT old_status_id, new_status_id FROM #{Workflow.table_name} WHERE tracker_id = #{id}"). | |
|
57 | flatten. | |
|
58 | uniq | |
|
59 | ||
|
60 | @issue_statuses = IssueStatus.find_all_by_id(ids).sort | |
|
61 | end | |
|
62 | ||
|
46 | 63 | private |
|
47 | 64 | def check_integrity |
|
48 | 65 | raise "Can't delete tracker" if Issue.find(:first, :conditions => ["tracker_id=?", self.id]) |
@@ -11,8 +11,12 | |||
|
11 | 11 | |
|
12 | 12 | <label><%=l(:label_tracker)%>:</label> |
|
13 | 13 | <%= select_tag 'tracker_id', options_from_collection_for_select(@trackers, "id", "name", @tracker && @tracker.id) %> |
|
14 | ||
|
15 | <%= submit_tag l(:button_edit), :name => nil %> | |
|
14 | ||
|
15 | <%= hidden_field_tag 'used_statuses_only', '0' %> | |
|
16 | <label><%= check_box_tag 'used_statuses_only', '1', @used_statuses_only %> <%= l(:label_display_used_statuses_only) %></label> | |
|
17 | </p> | |
|
18 | <p> | |
|
19 | <%= submit_tag l(:button_edit), :name => nil %> | |
|
16 | 20 | </p> |
|
17 | 21 | <% end %> |
|
18 | 22 |
@@ -855,3 +855,4 bg: | |||
|
855 | 855 | label_update_issue_done_ratios: Update issue done ratios |
|
856 | 856 | setting_start_of_week: Start calendars on |
|
857 | 857 | permission_view_issues: View Issues |
|
858 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -879,3 +879,4 bs: | |||
|
879 | 879 | label_update_issue_done_ratios: Update issue done ratios |
|
880 | 880 | setting_start_of_week: Start calendars on |
|
881 | 881 | permission_view_issues: View Issues |
|
882 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -858,3 +858,4 ca: | |||
|
858 | 858 | label_update_issue_done_ratios: Update issue done ratios |
|
859 | 859 | setting_start_of_week: Start calendars on |
|
860 | 860 | permission_view_issues: View Issues |
|
861 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -861,3 +861,4 cs: | |||
|
861 | 861 | label_update_issue_done_ratios: Update issue done ratios |
|
862 | 862 | setting_start_of_week: Start calendars on |
|
863 | 863 | permission_view_issues: View Issues |
|
864 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -881,3 +881,4 da: | |||
|
881 | 881 | label_update_issue_done_ratios: Update issue done ratios |
|
882 | 882 | setting_start_of_week: Start calendars on |
|
883 | 883 | permission_view_issues: View Issues |
|
884 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -881,3 +881,4 de: | |||
|
881 | 881 | label_update_issue_done_ratios: Update issue done ratios |
|
882 | 882 | setting_start_of_week: Start calendars on |
|
883 | 883 | permission_view_issues: View Issues |
|
884 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -861,3 +861,4 el: | |||
|
861 | 861 | label_update_issue_done_ratios: Update issue done ratios |
|
862 | 862 | setting_start_of_week: Start calendars on |
|
863 | 863 | permission_view_issues: View Issues |
|
864 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -727,6 +727,7 en: | |||
|
727 | 727 | label_copy_source: Source |
|
728 | 728 | label_copy_target: Target |
|
729 | 729 | label_copy_same_as_target: Same as target |
|
730 | label_display_used_statuses_only: Only display statuses that are used by this tracker | |
|
730 | 731 | |
|
731 | 732 | button_login: Login |
|
732 | 733 | button_submit: Submit |
@@ -902,3 +902,4 es: | |||
|
902 | 902 | label_update_issue_done_ratios: Update issue done ratios |
|
903 | 903 | setting_start_of_week: Start calendars on |
|
904 | 904 | permission_view_issues: View Issues |
|
905 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -891,3 +891,4 fi: | |||
|
891 | 891 | label_update_issue_done_ratios: Update issue done ratios |
|
892 | 892 | setting_start_of_week: Start calendars on |
|
893 | 893 | permission_view_issues: View Issues |
|
894 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -742,6 +742,7 fr: | |||
|
742 | 742 | label_copy_target: Cible |
|
743 | 743 | label_copy_same_as_target: Comme la cible |
|
744 | 744 | label_update_issue_done_ratios: Mettre à jour l'avancement des demandes |
|
745 | label_display_used_statuses_only: N'afficher que les statuts utilisés dans ce tracker | |
|
745 | 746 | |
|
746 | 747 | button_login: Connexion |
|
747 | 748 | button_submit: Soumettre |
@@ -881,3 +881,4 gl: | |||
|
881 | 881 | label_update_issue_done_ratios: Update issue done ratios |
|
882 | 882 | setting_start_of_week: Start calendars on |
|
883 | 883 | permission_view_issues: View Issues |
|
884 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -865,3 +865,4 he: | |||
|
865 | 865 | label_update_issue_done_ratios: Update issue done ratios |
|
866 | 866 | setting_start_of_week: Start calendars on |
|
867 | 867 | permission_view_issues: View Issues |
|
868 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -886,3 +886,4 | |||
|
886 | 886 | label_update_issue_done_ratios: Update issue done ratios |
|
887 | 887 | setting_start_of_week: Start calendars on |
|
888 | 888 | permission_view_issues: View Issues |
|
889 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -868,3 +868,4 it: | |||
|
868 | 868 | label_update_issue_done_ratios: Update issue done ratios |
|
869 | 869 | setting_start_of_week: Start calendars on |
|
870 | 870 | permission_view_issues: View Issues |
|
871 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -890,3 +890,4 ja: | |||
|
890 | 890 | label_update_issue_done_ratios: Update issue done ratios |
|
891 | 891 | setting_start_of_week: Start calendars on |
|
892 | 892 | permission_view_issues: View Issues |
|
893 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -921,3 +921,4 ko: | |||
|
921 | 921 | label_update_issue_done_ratios: Update issue done ratios |
|
922 | 922 | setting_start_of_week: Start calendars on |
|
923 | 923 | permission_view_issues: View Issues |
|
924 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -929,3 +929,4 lt: | |||
|
929 | 929 | error_workflow_copy_source: Please select a source tracker or role |
|
930 | 930 | label_update_issue_done_ratios: Update issue done ratios |
|
931 | 931 | permission_view_issues: View Issues |
|
932 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -843,3 +843,4 nl: | |||
|
843 | 843 | label_update_issue_done_ratios: Update issue done ratios |
|
844 | 844 | setting_start_of_week: Start calendars on |
|
845 | 845 | permission_view_issues: View Issues |
|
846 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -856,3 +856,4 | |||
|
856 | 856 | label_update_issue_done_ratios: Update issue done ratios |
|
857 | 857 | setting_start_of_week: Start calendars on |
|
858 | 858 | permission_view_issues: View Issues |
|
859 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -884,3 +884,4 pl: | |||
|
884 | 884 | label_update_issue_done_ratios: Update issue done ratios |
|
885 | 885 | setting_start_of_week: Start calendars on |
|
886 | 886 | permission_view_issues: View Issues |
|
887 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -889,3 +889,4 pt-BR: | |||
|
889 | 889 | field_watcher: Observador |
|
890 | 890 | |
|
891 | 891 | permission_view_issues: View Issues |
|
892 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -873,3 +873,4 pt: | |||
|
873 | 873 | label_update_issue_done_ratios: Update issue done ratios |
|
874 | 874 | setting_start_of_week: Start calendars on |
|
875 | 875 | permission_view_issues: View Issues |
|
876 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -858,3 +858,4 ro: | |||
|
858 | 858 | label_update_issue_done_ratios: Update issue done ratios |
|
859 | 859 | setting_start_of_week: Start calendars on |
|
860 | 860 | permission_view_issues: View Issues |
|
861 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -969,3 +969,4 ru: | |||
|
969 | 969 | label_update_issue_done_ratios: Update issue done ratios |
|
970 | 970 | setting_start_of_week: Start calendars on |
|
971 | 971 | permission_view_issues: View Issues |
|
972 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -860,3 +860,4 sk: | |||
|
860 | 860 | label_update_issue_done_ratios: Update issue done ratios |
|
861 | 861 | setting_start_of_week: Start calendars on |
|
862 | 862 | permission_view_issues: View Issues |
|
863 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -857,3 +857,4 sl: | |||
|
857 | 857 | label_update_issue_done_ratios: Update issue done ratios |
|
858 | 858 | setting_start_of_week: Start calendars on |
|
859 | 859 | permission_view_issues: View Issues |
|
860 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -876,3 +876,4 | |||
|
876 | 876 | label_update_issue_done_ratios: Update issue done ratios |
|
877 | 877 | setting_start_of_week: Start calendars on |
|
878 | 878 | permission_view_issues: View Issues |
|
879 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -910,3 +910,4 sv: | |||
|
910 | 910 | label_update_issue_done_ratios: Update issue done ratios |
|
911 | 911 | setting_start_of_week: Start calendars on |
|
912 | 912 | permission_view_issues: View Issues |
|
913 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -858,3 +858,4 th: | |||
|
858 | 858 | label_update_issue_done_ratios: Update issue done ratios |
|
859 | 859 | setting_start_of_week: Start calendars on |
|
860 | 860 | permission_view_issues: View Issues |
|
861 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -888,3 +888,4 tr: | |||
|
888 | 888 | label_update_issue_done_ratios: Update issue done ratios |
|
889 | 889 | setting_start_of_week: Start calendars on |
|
890 | 890 | permission_view_issues: View Issues |
|
891 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -857,3 +857,4 uk: | |||
|
857 | 857 | label_update_issue_done_ratios: Update issue done ratios |
|
858 | 858 | setting_start_of_week: Start calendars on |
|
859 | 859 | permission_view_issues: View Issues |
|
860 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -920,3 +920,4 vi: | |||
|
920 | 920 | label_update_issue_done_ratios: Update issue done ratios |
|
921 | 921 | setting_start_of_week: Start calendars on |
|
922 | 922 | permission_view_issues: View Issues |
|
923 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -954,3 +954,4 | |||
|
954 | 954 | error_workflow_copy_source: Please select a source tracker or role |
|
955 | 955 | label_update_issue_done_ratios: Update issue done ratios |
|
956 | 956 | permission_view_issues: View Issues |
|
957 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -885,3 +885,4 zh: | |||
|
885 | 885 | label_update_issue_done_ratios: Update issue done ratios |
|
886 | 886 | setting_start_of_week: Start calendars on |
|
887 | 887 | permission_view_issues: View Issues |
|
888 | label_display_used_statuses_only: Only display statuses that are used by this tracker |
@@ -22,7 +22,7 require 'workflows_controller' | |||
|
22 | 22 | class WorkflowsController; def rescue_action(e) raise e end; end |
|
23 | 23 | |
|
24 | 24 | class WorkflowsControllerTest < ActionController::TestCase |
|
25 | fixtures :roles, :trackers, :workflows, :users | |
|
25 | fixtures :roles, :trackers, :workflows, :users, :issue_statuses | |
|
26 | 26 | |
|
27 | 27 | def setup |
|
28 | 28 | @controller = WorkflowsController.new |
@@ -51,18 +51,46 class WorkflowsControllerTest < ActionController::TestCase | |||
|
51 | 51 | end |
|
52 | 52 | |
|
53 | 53 | def test_get_edit_with_role_and_tracker |
|
54 | Workflow.delete_all | |
|
55 | Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 2, :new_status_id => 3) | |
|
56 | Workflow.create!(:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 5) | |
|
57 | ||
|
54 | 58 | get :edit, :role_id => 2, :tracker_id => 1 |
|
55 | 59 | assert_response :success |
|
56 | 60 | assert_template 'edit' |
|
61 | ||
|
62 | # used status only | |
|
63 | assert_not_nil assigns(:statuses) | |
|
64 | assert_equal [2, 3, 5], assigns(:statuses).collect(&:id) | |
|
65 | ||
|
57 | 66 | # allowed transitions |
|
58 | 67 | assert_tag :tag => 'input', :attributes => { :type => 'checkbox', |
|
59 |
:name => 'issue_status[ |
|
|
60 |
:value => ' |
|
|
68 | :name => 'issue_status[3][]', | |
|
69 | :value => '5', | |
|
61 | 70 | :checked => 'checked' } |
|
62 | 71 | # not allowed |
|
63 | 72 | assert_tag :tag => 'input', :attributes => { :type => 'checkbox', |
|
64 |
:name => 'issue_status[ |
|
|
65 |
:value => ' |
|
|
73 | :name => 'issue_status[3][]', | |
|
74 | :value => '2', | |
|
75 | :checked => nil } | |
|
76 | # unused | |
|
77 | assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', | |
|
78 | :name => 'issue_status[4][]' } | |
|
79 | end | |
|
80 | ||
|
81 | def test_get_edit_with_role_and_tracker_and_all_statuses | |
|
82 | Workflow.delete_all | |
|
83 | ||
|
84 | get :edit, :role_id => 2, :tracker_id => 1, :used_statuses_only => '0' | |
|
85 | assert_response :success | |
|
86 | assert_template 'edit' | |
|
87 | ||
|
88 | assert_not_nil assigns(:statuses) | |
|
89 | assert_equal IssueStatus.count, assigns(:statuses).size | |
|
90 | ||
|
91 | assert_tag :tag => 'input', :attributes => { :type => 'checkbox', | |
|
92 | :name => 'issue_status[1][]', | |
|
93 | :value => '1', | |
|
66 | 94 | :checked => nil } |
|
67 | 95 | end |
|
68 | 96 |
@@ -18,7 +18,7 | |||
|
18 | 18 | require File.dirname(__FILE__) + '/../test_helper' |
|
19 | 19 | |
|
20 | 20 | class TrackerTest < ActiveSupport::TestCase |
|
21 | fixtures :trackers, :workflows | |
|
21 | fixtures :trackers, :workflows, :issue_statuses, :roles | |
|
22 | 22 | |
|
23 | 23 | def test_copy_workflows |
|
24 | 24 | source = Tracker.find(1) |
@@ -30,4 +30,20 class TrackerTest < ActiveSupport::TestCase | |||
|
30 | 30 | target.reload |
|
31 | 31 | assert_equal 89, target.workflows.size |
|
32 | 32 | end |
|
33 | ||
|
34 | def test_issue_statuses | |
|
35 | tracker = Tracker.find(1) | |
|
36 | Workflow.delete_all | |
|
37 | Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 2, :new_status_id => 3) | |
|
38 | Workflow.create!(:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 5) | |
|
39 | ||
|
40 | assert_kind_of Array, tracker.issue_statuses | |
|
41 | assert_kind_of IssueStatus, tracker.issue_statuses.first | |
|
42 | assert_equal [2, 3, 5], Tracker.find(1).issue_statuses.collect(&:id) | |
|
43 | end | |
|
44 | ||
|
45 | def test_issue_statuses_empty | |
|
46 | Workflow.delete_all("tracker_id = 1") | |
|
47 | assert_equal [], Tracker.find(1).issue_statuses | |
|
48 | end | |
|
33 | 49 | end |
General Comments 0
You need to be logged in to leave comments.
Login now