summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/views/roles/index.html.erb8
-rw-r--r--config/locales/en.yml1
-rw-r--r--test/functional/roles_controller_test.rb18
3 files changed, 27 insertions, 0 deletions
diff --git a/app/views/roles/index.html.erb b/app/views/roles/index.html.erb
index ab0bbe8da..bc8cc9cc7 100644
--- a/app/views/roles/index.html.erb
+++ b/app/views/roles/index.html.erb
@@ -9,11 +9,19 @@
<thead><tr>
<th><%=l(:label_role)%></th>
<th></th>
+ <th></th>
</tr></thead>
<tbody>
<% for role in @roles %>
<tr class="<%= role.builtin? ? "builtin" : "givable" %>">
<td class="name"><%= content_tag(role.builtin? ? 'em' : 'span', link_to(role.name, edit_role_path(role))) %></td>
+ <td>
+ <% unless role.builtin? || role.workflow_rules.exists? %>
+ <span class="icon icon-warning">
+ <%= l(:text_role_no_workflow) %> (<%= link_to l(:button_edit), workflows_edit_path(:role_id => role) %>)
+ </span>
+ <% end %>
+ </td>
<td class="buttons">
<%= reorder_handle(role) unless role.builtin? %>
<%= link_to l(:button_copy), new_role_path(:copy => role), :class => 'icon icon-copy' %>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 74e03d34e..994ab5315 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1130,6 +1130,7 @@ en:
text_caracters_minimum: "Must be at least %{count} characters long."
text_length_between: "Length between %{min} and %{max} characters."
text_tracker_no_workflow: No workflow defined for this tracker
+ text_role_no_workflow: No workflow defined for this role
text_unallowed_characters: Unallowed characters
text_comma_separated: Multiple values allowed (comma separated).
text_line_separated: Multiple values allowed (one line for each value).
diff --git a/test/functional/roles_controller_test.rb b/test/functional/roles_controller_test.rb
index 07167e8be..f401d51d9 100644
--- a/test/functional/roles_controller_test.rb
+++ b/test/functional/roles_controller_test.rb
@@ -35,6 +35,24 @@ class RolesControllerTest < Redmine::ControllerTest
end
end
+ def test_index_should_show_warning_when_no_workflow_is_defined
+ Role.find_by_name('Developer').workflow_rules.destroy_all
+ Role.find_by_name('Anonymous').workflow_rules.destroy_all
+
+ get :index
+ assert_response :success
+ assert_select 'table.roles' do
+ # Manager
+ assert_select 'tr.givable:nth-of-type(1) span.icon-warning', :count => 0
+ # Developer
+ assert_select 'tr.givable:nth-of-type(2) span.icon-warning', :text => /#{I18n.t(:text_role_no_workflow)}/
+ # Reporter
+ assert_select 'tr.givable:nth-of-type(3) span.icon-warning', :count => 0
+ # No warnings for built-in roles such as Anonymous and Non-member
+ assert_select 'tr.builtin span.icon-warning', :count => 0
+ end
+ end
+
def test_new
get :new
assert_response :success