##// 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 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[2][]',
60 :value => '1',
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[2][]',
65 :value => '3',
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