diff --git a/app/views/context_menus/issues.html.erb b/app/views/context_menus/issues.html.erb index 7919472af0..63fd4da37c 100644 --- a/app/views/context_menus/issues.html.erb +++ b/app/views/context_menus/issues.html.erb @@ -2,8 +2,10 @@ <%= call_hook(:view_issues_context_menu_start, {:issues => @issues, :can => @can, :back => @back }) %> <% if @issue -%> -
  • <%= context_menu_link l(:button_edit), edit_issue_path(@issue), + <% if @back != issue_url(@issue.id, :only_path => false) -%> +
  • <%= context_menu_link l(:button_edit), edit_issue_path(@issue), :class => 'icon icon-edit', :disabled => !@can[:edit] %>
  • + <% end %> <% else %>
  • <%= context_menu_link l(:button_edit), bulk_edit_issues_path(:ids => @issue_ids), :class => 'icon icon-edit', :disabled => !@can[:edit] %>
  • @@ -129,7 +131,7 @@ <% end %> -<% if User.current.logged? %> +<% if User.current.logged? && (@issue.nil? || @back != issue_url(@issue.id, :only_path => false)) -%>
  • <%= watcher_link(@issues, User.current) %>
  • <% end %> @@ -139,18 +141,21 @@ <% end %> <% if @issue.present? %> - <% if @can[:log_time] -%> -
  • <%= context_menu_link l(:button_log_time), new_issue_time_entry_path(@issue), - :class => 'icon icon-time-add' %>
  • + <% if @back != issue_url(@issue.id, :only_path => false) -%> + <% if @can[:log_time] -%> +
  • <%= context_menu_link l(:button_log_time), new_issue_time_entry_path(@issue), + :class => 'icon icon-time-add' %>
  • + <% end %> +
  • <%= context_menu_link l(:button_copy), project_copy_issue_path(@project, @issue), + :class => 'icon icon-copy', :disabled => !@can[:copy] %>
  • <% end %> -
  • <%= context_menu_link l(:button_copy), project_copy_issue_path(@project, @issue), - :class => 'icon icon-copy', :disabled => !@can[:copy] %>
  • <% else %>
  • <%= context_menu_link l(:button_copy), bulk_edit_issues_path(:ids => @issue_ids, :copy => '1'), :class => 'icon icon-copy', :disabled => !@can[:copy] %>
  • <% end %> +<% if @issue.nil? || @back != issue_url(@issue.id, :only_path => false) -%>
  • <%= context_menu_link l(:button_delete), issues_path(:ids => @issue_ids, :back_url => @back), :method => :delete, :data => {:confirm => issues_destroy_confirmation_message(@issues)}, :class => 'icon icon-del', :disabled => !@can[:delete] %>
  • - +<% end %> <%= call_hook(:view_issues_context_menu_end, {:issues => @issues, :can => @can, :back => @back }) %> diff --git a/app/views/issues/_action_menu.html.erb b/app/views/issues/_action_menu.html.erb index 6398583946..06c59541ae 100644 --- a/app/views/issues/_action_menu.html.erb +++ b/app/views/issues/_action_menu.html.erb @@ -4,10 +4,12 @@ <%= watcher_link(@issue, User.current) %> <%= link_to l(:button_copy), project_copy_issue_path(@project, @issue), :class => 'icon icon-copy' if User.current.allowed_to?(:copy_issues, @project) && Issue.allowed_target_projects.any? %> <%= link_to l(:button_delete), issue_path(@issue), :data => {:confirm => issues_destroy_confirmation_message(@issue)}, :method => :delete, :class => 'icon icon-del' if @issue.deletable? %> -<%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do %> - - <%= check_box_tag("ids[]", @issue.id, false, :style => 'display:none;', :id => nil) %> - <%= link_to_context_menu %> - +<% if @issue.new_statuses_allowed_to.present? %> + <%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do %> + + <%= check_box_tag("ids[]", @issue.id, false, :style => 'display:none;', :id => nil) %> + <%= link_to_context_menu %> + + <% end %> <% end %> \ No newline at end of file diff --git a/public/stylesheets/responsive.css b/public/stylesheets/responsive.css index 3157444063..0d75bc9fbc 100644 --- a/public/stylesheets/responsive.css +++ b/public/stylesheets/responsive.css @@ -625,10 +625,11 @@ } .contextual span.hascontextmenu a.js-contextmenu { - width: initial !important; - height: initial !important; - margin-top: 3px !important; + width: auto; + height: auto; + margin-top: 2px !important; padding-left: 25px !important; + font-size: 100%; } .contextual span.hascontextmenu a.js-contextmenu::after { content: ''; } diff --git a/test/functional/context_menus_controller_test.rb b/test/functional/context_menus_controller_test.rb index 60ffdb819f..4fc08fd379 100644 --- a/test/functional/context_menus_controller_test.rb +++ b/test/functional/context_menus_controller_test.rb @@ -66,6 +66,19 @@ class ContextMenusControllerTest < Redmine::ControllerTest assert_select 'a.icon-del.disabled[href="#"]', :text => 'Delete' end end + def test_context_menu_one_issue_if_the_back_url_is_issue_path + @request.session[:user_id] = 2 + @request.env['HTTP_REFERER'] = issue_url(1, :only_path => false) + get :issues, :params => { + :ids => [1] + } + assert_response :success + assert_select 'a.icon-edit[href=?]', '/issues/1/edit', { :text => 'Edit', :count => 0 } + assert_select 'a.icon-time-add[href=?]', '/issues/1/time_entries/new', { :text => 'Log time', :count => 0 } + assert_select 'a.icon-fav-off[href=?]', '/watchers/watch?object_id=1&object_type=issue', { :text => 'Watch', :count => 0 } + assert_select 'a.icon-copy[href=?]', '/projects/ecookbook/issues/1/copy', { :text => 'Copy', :count => 0 } + assert_select 'a.icon-del[href=?]', '/issues?ids%5B%5D=1', { :text => 'Delete', :count => 0 } + end def test_context_menu_multiple_issues_of_same_project @request.session[:user_id] = 2 diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 35c5053450..6608ae0198 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -1577,9 +1577,6 @@ class IssuesControllerTest < Redmine::ControllerTest # action_menu for anonymous role assert_select 'div.contextual' do assert_select 'a[href=?]', '/issues/1/edit' - assert_select "form[data-cm-url=?]", '/issues/context_menu' do - assert_select 'span[class=?]', 'hascontextmenu' - end end end