From 0781cb04699cacc93ac4b739c7d7b998ffc2905e Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Sat, 27 Feb 2021 15:28:48 +0200 Subject: [PATCH] Add button to "Create and follow" when adding a subtask from the parent issue. Using this button, the user will be redirected to the new issue instead of the parent task (which is the behaviour for "Create" button --- app/controllers/issues_controller.rb | 2 ++ app/views/issues/new.html.erb | 3 +++ config/locales/en.yml | 1 + test/functional/issues_controller_test.rb | 24 +++++++++++++++++++++++ 4 files changed, 30 insertions(+) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index ce4e5814b..4fc1eb86b 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -669,6 +669,8 @@ class IssuesController < ApplicationController url_params[:issue][:project_id] = @issue.project_id redirect_to new_issue_path(url_params) end + elsif params[:follow] + redirect_to issue_path(@issue) else redirect_back_or_default issue_path(@issue) end diff --git a/app/views/issues/new.html.erb b/app/views/issues/new.html.erb index 22a174a11..92f6f251a 100644 --- a/app/views/issues/new.html.erb +++ b/app/views/issues/new.html.erb @@ -38,6 +38,9 @@ <%= submit_tag l(:button_create) %> + <% if params[:back_url] && params[:issue] && params[:issue][:parent_issue_id] %> + <%= submit_tag l(:button_create_and_follow), name: 'follow' %> + <% end %> <%= submit_tag l(:button_create_and_continue), :name => 'continue' %> <% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 979417a32..9890a39c1 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1162,6 +1162,7 @@ en: button_filter: Filter button_actions: Actions button_add_subtask: Add subtask + button_create_and_follow: Create and follow status_active: active status_registered: registered diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index a8296b9bc..5bb767fb5 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -3161,6 +3161,11 @@ class IssuesControllerTest < Redmine::ControllerTest assert_select 'select[name=?]', 'issue[done_ratio]' assert_select 'input[name=?][value=?]', 'issue[custom_field_values][2]', 'Default string' assert_select 'input[name=?]', 'issue[watcher_user_ids][]' + + # Assert submit buttons + assert_select 'input[type=submit][name=?]', 'commit' + assert_select 'input[type=submit][name=?]', 'continue' + assert_select 'input[type=submit][name=?]', 'follow', 0 end # Be sure we don't display inactive IssuePriorities @@ -3773,6 +3778,25 @@ class IssuesControllerTest < Redmine::ControllerTest assert_select 'div#trackers_description', 0 end + def test_get_new_should_show_create_and_follow_button_when_issue_is_subtask_and_back_urL_is_present + @request.session[:user_id] = 2 + get :new, params: { + project_id: 1, + issue: { + parent_issue_id: 2 + }, + back_url: "/issues/2" + } + assert_response :success + + assert_select 'form#issue-form' do + # Assert submit buttons + assert_select 'input[type=submit][name=?]', 'commit' + assert_select 'input[type=submit][name=?]', 'continue' + assert_select 'input[type=submit][name=?]', 'follow' + end + end + def test_update_form_for_new_issue @request.session[:user_id] = 2 post( -- 2.22.0