From bcfec6ea11ef41083c917499fbc9fdee8ae665ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20G=C3=BCnther?= Date: Thu, 24 Oct 2019 08:25:51 +0200 Subject: [PATCH] [31513] Re-add the parent_id in the SetAttributeService https://community.openproject.com/wp/31513 --- app/controllers/projects_controller.rb | 2 +- app/helpers/projects_helper.rb | 2 +- app/views/project_settings/show.html.erb | 2 +- spec/controllers/projects_controller_spec.rb | 11 +++++++++++ spec_legacy/functional/projects_controller_spec.rb | 3 ++- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 347d469282b..f07820e9d23 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -70,7 +70,7 @@ class ProjectsController < ApplicationController Projects::SetAttributesService .new(user: current_user, model: @project, contract_class: EmptyContract) - .call({}) + .call(params.permit(:parent_id)) render layout: 'no_menu' end diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index b7a8d51dd8f..95bff11f2eb 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -160,7 +160,7 @@ module ProjectsHelper def project_more_menu_subproject_item(project) if User.current.allowed_to? :add_subprojects, project [t(:label_subproject_new), - new_project_path(parent_id: project), + new_project_path(parent_id: project.id), class: 'icon-context icon-add', title: t(:label_subproject_new)] end diff --git a/app/views/project_settings/show.html.erb b/app/views/project_settings/show.html.erb index b172b508d17..8dbdeaf395d 100644 --- a/app/views/project_settings/show.html.erb +++ b/app/views/project_settings/show.html.erb @@ -31,7 +31,7 @@ See docs/COPYRIGHT.rdoc for more details. <%= toolbar title: l(:label_project_settings) do %> <% if User.current.allowed_to?(:add_subprojects, @project) %>
  • - <%= link_to new_project_path(parent_id: @project), + <%= link_to new_project_path(parent_id: @project.id), { class: 'button -alt-highlight', aria: {label: t(:label_subproject_new)}, title: t(:label_subproject_new)} do %> diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb index 4aa0a88d874..59291d4aaab 100644 --- a/spec/controllers/projects_controller_spec.rb +++ b/spec/controllers/projects_controller_spec.rb @@ -49,6 +49,17 @@ describe ProjectsController, type: :controller do expect(response).to be_successful expect(response).to render_template 'new' end + + context 'with parent project' do + let!(:parent) { FactoryBot.create :project, name: 'Parent' } + + it 'sets the parent of the project' do + get 'new', params: { parent_id: parent.id } + expect(response).to be_successful + expect(response).to render_template 'new' + expect(assigns(:project).parent).to eq parent + end + end end describe 'index.html' do diff --git a/spec_legacy/functional/projects_controller_spec.rb b/spec_legacy/functional/projects_controller_spec.rb index 0d3dfaa036a..78bbb92e533 100644 --- a/spec_legacy/functional/projects_controller_spec.rb +++ b/spec_legacy/functional/projects_controller_spec.rb @@ -65,7 +65,8 @@ describe ProjectsController, type: :controller do end it 'should accept get' do - get :new, params: { parent_id: 'ecookbook' } + project = Project.find_by(identifier: 'ecookbook') + get :new, params: { parent_id: project.id } assert_response :success assert_template 'new' # parent project selected