API to close/reopen projects (#35507).

Patch by Yuichi HARADA.


git-svn-id: http://svn.redmine.org/redmine/trunk@21066 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA
2021-07-09 02:42:47 +00:00
parent 9178bf7336
commit 5fa84c0b4e
3 changed files with 28 additions and 5 deletions

View File

@@ -30,7 +30,7 @@ class ProjectsController < ApplicationController
before_action :authorize_global, :only => [:new, :create]
before_action :require_admin, :only => [:copy, :archive, :unarchive]
accept_rss_auth :index
accept_api_auth :index, :show, :create, :update, :destroy, :archive, :unarchive
accept_api_auth :index, :show, :create, :update, :destroy, :archive, :unarchive, :close, :reopen
require_sudo_mode :destroy
helper :custom_fields
@@ -275,12 +275,18 @@ class ProjectsController < ApplicationController
def close
@project.close
redirect_to project_path(@project)
respond_to do |format|
format.html { redirect_to project_path(@project) }
format.api { render_api_ok }
end
end
def reopen
@project.reopen
redirect_to project_path(@project)
respond_to do |format|
format.html { redirect_to project_path(@project) }
format.api { render_api_ok }
end
end
# Delete @project

View File

@@ -133,8 +133,8 @@ Rails.application.routes.draw do
get 'settings(/:tab)', :action => 'settings', :as => 'settings'
match 'archive', :via => [:post, :put]
match 'unarchive', :via => [:post, :put]
post 'close'
post 'reopen'
match 'close', :via => [:post, :put]
match 'reopen', :via => [:post, :put]
match 'copy', :via => [:get, :post]
match 'bookmark', :via => [:delete, :post]
end

View File

@@ -373,4 +373,21 @@ class Redmine::ApiTest::ProjectsTest < Redmine::ApiTest::Base
assert p = Project.find_by_id(2)
assert p.active?
end
test "PUT /projects/:id/close.xml should close project" do
put '/projects/1/close.xml', :headers => credentials('admin')
assert_response :no_content
assert_equal '', @response.body
assert p = Project.find(1)
assert p.closed?
end
test "PUT /projects/:id/reopen.xml should reopen project" do
Project.find(1).update_column :status, Project::STATUS_CLOSED
put '/projects/1/reopen.xml', :headers => credentials('admin')
assert_response :no_content
assert_equal '', @response.body
assert p = Project.find(1)
assert p.active?
end
end