##// END OF EJS Templates
By default, only show statuses that are used by the tracker on the workflow edit view....
Jean-Philippe Lang -
r3074:6bf0723d0654
parent child
Show More
@@ -42,7 +42,12 class WorkflowsController < ApplicationController
42 end
42 end
43 @roles = Role.find(:all, :order => 'builtin, position')
43 @roles = Role.find(:all, :order => 'builtin, position')
44 @trackers = Tracker.find(:all, :order => 'position')
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 end
51 end
47
52
48 def copy
53 def copy
@@ -43,6 +43,23 class Tracker < ActiveRecord::Base
43 find(:all, :order => 'position')
43 find(:all, :order => 'position')
44 end
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 private
63 private
47 def check_integrity
64 def check_integrity
48 raise "Can't delete tracker" if Issue.find(:first, :conditions => ["tracker_id=?", self.id])
65 raise "Can't delete tracker" if Issue.find(:first, :conditions => ["tracker_id=?", self.id])
@@ -11,8 +11,12
11
11
12 <label><%=l(:label_tracker)%>:</label>
12 <label><%=l(:label_tracker)%>:</label>
13 <%= select_tag 'tracker_id', options_from_collection_for_select(@trackers, "id", "name", @tracker && @tracker.id) %>
13 <%= select_tag 'tracker_id', options_from_collection_for_select(@trackers, "id", "name", @tracker && @tracker.id) %>
14
14
15 <%= submit_tag l(:button_edit), :name => nil %>
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 </p>
20 </p>
17 <% end %>
21 <% end %>
18
22
@@ -855,3 +855,4 bg:
855 label_update_issue_done_ratios: Update issue done ratios
855 label_update_issue_done_ratios: Update issue done ratios
856 setting_start_of_week: Start calendars on
856 setting_start_of_week: Start calendars on
857 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
879 label_update_issue_done_ratios: Update issue done ratios
880 setting_start_of_week: Start calendars on
880 setting_start_of_week: Start calendars on
881 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
858 label_update_issue_done_ratios: Update issue done ratios
859 setting_start_of_week: Start calendars on
859 setting_start_of_week: Start calendars on
860 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
861 label_update_issue_done_ratios: Update issue done ratios
862 setting_start_of_week: Start calendars on
862 setting_start_of_week: Start calendars on
863 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
881 label_update_issue_done_ratios: Update issue done ratios
882 setting_start_of_week: Start calendars on
882 setting_start_of_week: Start calendars on
883 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
881 label_update_issue_done_ratios: Update issue done ratios
882 setting_start_of_week: Start calendars on
882 setting_start_of_week: Start calendars on
883 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
861 label_update_issue_done_ratios: Update issue done ratios
862 setting_start_of_week: Start calendars on
862 setting_start_of_week: Start calendars on
863 permission_view_issues: View Issues
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 label_copy_source: Source
727 label_copy_source: Source
728 label_copy_target: Target
728 label_copy_target: Target
729 label_copy_same_as_target: Same as target
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 button_login: Login
732 button_login: Login
732 button_submit: Submit
733 button_submit: Submit
@@ -902,3 +902,4 es:
902 label_update_issue_done_ratios: Update issue done ratios
902 label_update_issue_done_ratios: Update issue done ratios
903 setting_start_of_week: Start calendars on
903 setting_start_of_week: Start calendars on
904 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
891 label_update_issue_done_ratios: Update issue done ratios
892 setting_start_of_week: Start calendars on
892 setting_start_of_week: Start calendars on
893 permission_view_issues: View Issues
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 label_copy_target: Cible
742 label_copy_target: Cible
743 label_copy_same_as_target: Comme la cible
743 label_copy_same_as_target: Comme la cible
744 label_update_issue_done_ratios: Mettre Γ  jour l'avancement des demandes
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 button_login: Connexion
747 button_login: Connexion
747 button_submit: Soumettre
748 button_submit: Soumettre
@@ -881,3 +881,4 gl:
881 label_update_issue_done_ratios: Update issue done ratios
881 label_update_issue_done_ratios: Update issue done ratios
882 setting_start_of_week: Start calendars on
882 setting_start_of_week: Start calendars on
883 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
865 label_update_issue_done_ratios: Update issue done ratios
866 setting_start_of_week: Start calendars on
866 setting_start_of_week: Start calendars on
867 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
886 label_update_issue_done_ratios: Update issue done ratios
887 setting_start_of_week: Start calendars on
887 setting_start_of_week: Start calendars on
888 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
868 label_update_issue_done_ratios: Update issue done ratios
869 setting_start_of_week: Start calendars on
869 setting_start_of_week: Start calendars on
870 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
890 label_update_issue_done_ratios: Update issue done ratios
891 setting_start_of_week: Start calendars on
891 setting_start_of_week: Start calendars on
892 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
921 label_update_issue_done_ratios: Update issue done ratios
922 setting_start_of_week: Start calendars on
922 setting_start_of_week: Start calendars on
923 permission_view_issues: View Issues
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 error_workflow_copy_source: Please select a source tracker or role
929 error_workflow_copy_source: Please select a source tracker or role
930 label_update_issue_done_ratios: Update issue done ratios
930 label_update_issue_done_ratios: Update issue done ratios
931 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
843 label_update_issue_done_ratios: Update issue done ratios
844 setting_start_of_week: Start calendars on
844 setting_start_of_week: Start calendars on
845 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
856 label_update_issue_done_ratios: Update issue done ratios
857 setting_start_of_week: Start calendars on
857 setting_start_of_week: Start calendars on
858 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
884 label_update_issue_done_ratios: Update issue done ratios
885 setting_start_of_week: Start calendars on
885 setting_start_of_week: Start calendars on
886 permission_view_issues: View Issues
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 field_watcher: Observador
889 field_watcher: Observador
890
890
891 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
873 label_update_issue_done_ratios: Update issue done ratios
874 setting_start_of_week: Start calendars on
874 setting_start_of_week: Start calendars on
875 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
858 label_update_issue_done_ratios: Update issue done ratios
859 setting_start_of_week: Start calendars on
859 setting_start_of_week: Start calendars on
860 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
969 label_update_issue_done_ratios: Update issue done ratios
970 setting_start_of_week: Start calendars on
970 setting_start_of_week: Start calendars on
971 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
860 label_update_issue_done_ratios: Update issue done ratios
861 setting_start_of_week: Start calendars on
861 setting_start_of_week: Start calendars on
862 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
857 label_update_issue_done_ratios: Update issue done ratios
858 setting_start_of_week: Start calendars on
858 setting_start_of_week: Start calendars on
859 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
876 label_update_issue_done_ratios: Update issue done ratios
877 setting_start_of_week: Start calendars on
877 setting_start_of_week: Start calendars on
878 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
910 label_update_issue_done_ratios: Update issue done ratios
911 setting_start_of_week: Start calendars on
911 setting_start_of_week: Start calendars on
912 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
858 label_update_issue_done_ratios: Update issue done ratios
859 setting_start_of_week: Start calendars on
859 setting_start_of_week: Start calendars on
860 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
888 label_update_issue_done_ratios: Update issue done ratios
889 setting_start_of_week: Start calendars on
889 setting_start_of_week: Start calendars on
890 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
857 label_update_issue_done_ratios: Update issue done ratios
858 setting_start_of_week: Start calendars on
858 setting_start_of_week: Start calendars on
859 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
920 label_update_issue_done_ratios: Update issue done ratios
921 setting_start_of_week: Start calendars on
921 setting_start_of_week: Start calendars on
922 permission_view_issues: View Issues
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 error_workflow_copy_source: Please select a source tracker or role
954 error_workflow_copy_source: Please select a source tracker or role
955 label_update_issue_done_ratios: Update issue done ratios
955 label_update_issue_done_ratios: Update issue done ratios
956 permission_view_issues: View Issues
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 label_update_issue_done_ratios: Update issue done ratios
885 label_update_issue_done_ratios: Update issue done ratios
886 setting_start_of_week: Start calendars on
886 setting_start_of_week: Start calendars on
887 permission_view_issues: View Issues
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 class WorkflowsController; def rescue_action(e) raise e end; end
22 class WorkflowsController; def rescue_action(e) raise e end; end
23
23
24 class WorkflowsControllerTest < ActionController::TestCase
24 class WorkflowsControllerTest < ActionController::TestCase
25 fixtures :roles, :trackers, :workflows, :users
25 fixtures :roles, :trackers, :workflows, :users, :issue_statuses
26
26
27 def setup
27 def setup
28 @controller = WorkflowsController.new
28 @controller = WorkflowsController.new
@@ -51,18 +51,46 class WorkflowsControllerTest < ActionController::TestCase
51 end
51 end
52
52
53 def test_get_edit_with_role_and_tracker
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 get :edit, :role_id => 2, :tracker_id => 1
58 get :edit, :role_id => 2, :tracker_id => 1
55 assert_response :success
59 assert_response :success
56 assert_template 'edit'
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 # allowed transitions
66 # allowed transitions
58 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
67 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
59 :name => 'issue_status[2][]',
68 :name => 'issue_status[3][]',
60 :value => '1',
69 :value => '5',
61 :checked => 'checked' }
70 :checked => 'checked' }
62 # not allowed
71 # not allowed
63 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
72 assert_tag :tag => 'input', :attributes => { :type => 'checkbox',
64 :name => 'issue_status[2][]',
73 :name => 'issue_status[3][]',
65 :value => '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 :checked => nil }
94 :checked => nil }
67 end
95 end
68
96
@@ -18,7 +18,7
18 require File.dirname(__FILE__) + '/../test_helper'
18 require File.dirname(__FILE__) + '/../test_helper'
19
19
20 class TrackerTest < ActiveSupport::TestCase
20 class TrackerTest < ActiveSupport::TestCase
21 fixtures :trackers, :workflows
21 fixtures :trackers, :workflows, :issue_statuses, :roles
22
22
23 def test_copy_workflows
23 def test_copy_workflows
24 source = Tracker.find(1)
24 source = Tracker.find(1)
@@ -30,4 +30,20 class TrackerTest < ActiveSupport::TestCase
30 target.reload
30 target.reload
31 assert_equal 89, target.workflows.size
31 assert_equal 89, target.workflows.size
32 end
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 end
49 end
General Comments 0
You need to be logged in to leave comments. Login now