diff --git a/app/helpers/routes_helper.rb b/app/helpers/routes_helper.rb index 06f292d36..b8415a510 100644 --- a/app/helpers/routes_helper.rb +++ b/app/helpers/routes_helper.rb @@ -29,6 +29,14 @@ module RoutesHelper end end + def _new_project_issue_path(project, *args) + if project + new_project_issue_path(project, *args) + else + new_issue_path(*args) + end + end + def _project_calendar_path(project, *args) project ? project_calendar_path(project, *args) : issues_calendar_path(*args) end diff --git a/app/views/issues/index.html.erb b/app/views/issues/index.html.erb index 2e971711f..7dcba2629 100644 --- a/app/views/issues/index.html.erb +++ b/app/views/issues/index.html.erb @@ -1,6 +1,6 @@
- <% if @project && User.current.allowed_to?(:add_issues, @project) && @project.trackers.any? %> - <%= link_to l(:label_issue_new), new_project_issue_path(@project), :class => 'icon icon-add new-issue' %> + <% if User.current.allowed_to?(:add_issues, @project, :global => true) && (@project.nil? || @project.trackers.any?) %> + <%= link_to l(:label_issue_new), _new_project_issue_path(@project), :class => 'icon icon-add new-issue' %> <% end %>
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index f6e6459c7..14489dcb8 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -1081,6 +1081,12 @@ class IssuesControllerTest < ActionController::TestCase assert_select 'a.new-issue', 0 end + def test_index_without_project_should_include_new_issue_link + @request.session[:user_id] = 2 + get :index + assert_select 'a.new-issue[href="/issues/new"]', :text => 'New issue' + end + def test_show_by_anonymous get :show, :id => 1 assert_response :success