]> source.dussan.org Git - redmine.git/commitdiff
API to close/reopen projects (#35507).
authorGo MAEDA <maeda@farend.jp>
Fri, 9 Jul 2021 02:42:47 +0000 (02:42 +0000)
committerGo MAEDA <maeda@farend.jp>
Fri, 9 Jul 2021 02:42:47 +0000 (02:42 +0000)
Patch by Yuichi HARADA.

git-svn-id: http://svn.redmine.org/redmine/trunk@21066 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/projects_controller.rb
config/routes.rb
test/integration/api_test/projects_test.rb

index 9d7d37bb159f420b26d6f7ba7b672ad0c7463083..445ff840f36bba3afbc0986603af4333b5026bcb 100644 (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
index 7e5e3eee931b7608eefa0af93f06778429a1162b..1fd513d00e75dac7c2a2e89748f5fe7cdfd50919 100644 (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
index 1d8eb17eb85b25b8253a3af5d31a90bbcce52cf0..0785aecb5b8de20b5c22945ae69806de8b3cb5cb 100644 (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