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
+ accept_api_auth :index, :show, :create, :update, :destroy, :archive, :unarchive
require_sudo_mode :destroy
helper :custom_fields
def archive
unless @project.archive
- flash[:error] = l(:error_can_not_archive_project)
+ error = l(:error_can_not_archive_project)
+ end
+ respond_to do |format|
+ format.html do
+ flash[:error] = error if error
+ redirect_to_referer_or admin_projects_path(:status => params[:status])
+ end
+ format.api do
+ if error
+ render_api_errors error
+ else
+ render_api_ok
+ end
+ end
end
- redirect_to_referer_or admin_projects_path(:status => params[:status])
end
def unarchive
unless @project.active?
@project.unarchive
end
- redirect_to_referer_or admin_projects_path(:status => params[:status])
+ respond_to do |format|
+ format.html{ redirect_to_referer_or admin_projects_path(:status => params[:status]) }
+ format.api{ render_api_ok }
+ end
end
def bookmark
member do
get 'settings(/:tab)', :action => 'settings', :as => 'settings'
- post 'archive'
- post 'unarchive'
+ match 'archive', :via => [:post, :put]
+ match 'unarchive', :via => [:post, :put]
post 'close'
post 'reopen'
match 'copy', :via => [:get, :post]
assert_equal '', @response.body
assert_nil Project.find_by_id(2)
end
+
+ test "PUT /projects/:id/archive.xml should archive project" do
+ put '/projects/1/archive.xml', :headers => credentials('admin')
+ assert_response :no_content
+ assert_equal '', @response.body
+ assert p = Project.find(1)
+ assert_not p.active?
+ end
+
+ test "PUT /projects/:id/unarchive.xml should unarchive project" do
+ Project.find(1).update_column :status, Project::STATUS_ARCHIVED
+ put '/projects/1/unarchive.xml', :headers => credentials('admin')
+ assert_response :no_content
+ assert_equal '', @response.body
+ assert p = Project.find_by_id(2)
+ assert p.active?
+ end
end