| 
									
										
										
										
											2009-10-25 11:10:35 +00:00
										 |  |  | # Redmine - project management software | 
					
						
							| 
									
										
										
										
											2014-01-29 22:45:39 +00:00
										 |  |  | # Copyright (C) 2006-2014  Jean-Philippe Lang | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  | # | 
					
						
							|  |  |  | # This program is free software; you can redistribute it and/or | 
					
						
							|  |  |  | # modify it under the terms of the GNU General Public License | 
					
						
							|  |  |  | # as published by the Free Software Foundation; either version 2 | 
					
						
							|  |  |  | # of the License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  | # This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  | # but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  | # GNU General Public License for more details. | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | # | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  | # You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  | # along with this program; if not, write to the Free Software | 
					
						
							|  |  |  | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ProjectsController < ApplicationController | 
					
						
							| 
									
										
										
										
											2008-01-19 11:53:43 +00:00
										 |  |  |   menu_item :overview | 
					
						
							|  |  |  |   menu_item :roadmap, :only => :roadmap | 
					
						
							|  |  |  |   menu_item :settings, :only => :settings | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-07 15:00:27 +00:00
										 |  |  |   before_filter :find_project, :except => [ :index, :list, :new, :create, :copy ] | 
					
						
							|  |  |  |   before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy] | 
					
						
							|  |  |  |   before_filter :authorize_global, :only => [:new, :create] | 
					
						
							| 
									
										
										
										
											2009-05-17 12:59:14 +00:00
										 |  |  |   before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ] | 
					
						
							| 
									
										
										
										
											2011-07-09 08:56:07 +00:00
										 |  |  |   accept_rss_auth :index | 
					
						
							|  |  |  |   accept_api_auth :index, :show, :create, :update, :destroy | 
					
						
							| 
									
										
										
										
											2010-09-08 16:01:51 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   after_filter :only => [:create, :edit, :update, :archive, :unarchive, :destroy] do |controller| | 
					
						
							| 
									
										
										
										
											2009-01-27 17:27:50 +00:00
										 |  |  |     if controller.request.post? | 
					
						
							| 
									
										
										
										
											2011-12-12 18:05:13 +00:00
										 |  |  |       controller.send :expire_action, :controller => 'welcome', :action => 'robots' | 
					
						
							| 
									
										
										
										
											2009-01-27 17:27:50 +00:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2010-09-08 16:01:51 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   helper :sort | 
					
						
							|  |  |  |   include SortHelper | 
					
						
							|  |  |  |   helper :custom_fields | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  |   include CustomFieldsHelper | 
					
						
							| 
									
										
										
										
											2007-10-03 17:20:04 +00:00
										 |  |  |   helper :issues | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   helper :queries | 
					
						
							|  |  |  |   include QueriesHelper | 
					
						
							| 
									
										
										
										
											2007-06-12 20:12:05 +00:00
										 |  |  |   helper :repositories | 
					
						
							|  |  |  |   include RepositoriesHelper | 
					
						
							| 
									
										
										
										
											2007-08-26 07:55:57 +00:00
										 |  |  |   include ProjectsHelper | 
					
						
							| 
									
										
										
										
											2013-01-18 17:57:16 +00:00
										 |  |  |   helper :members | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-14 19:55:51 +00:00
										 |  |  |   # Lists visible projects | 
					
						
							| 
									
										
										
										
											2008-05-26 20:10:32 +00:00
										 |  |  |   def index | 
					
						
							| 
									
										
										
										
											2008-05-27 16:49:18 +00:00
										 |  |  |     respond_to do |format| | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  |       format.html { | 
					
						
							| 
									
										
										
										
											2012-06-25 17:49:35 +00:00
										 |  |  |         scope = Project | 
					
						
							|  |  |  |         unless params[:closed] | 
					
						
							|  |  |  |           scope = scope.active | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2014-10-22 17:37:16 +00:00
										 |  |  |         @projects = scope.visible.order('lft').to_a | 
					
						
							| 
									
										
										
										
											2008-05-27 16:49:18 +00:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2010-12-03 12:06:14 +00:00
										 |  |  |       format.api  { | 
					
						
							| 
									
										
										
										
											2010-12-23 13:34:44 +00:00
										 |  |  |         @offset, @limit = api_offset_and_limit | 
					
						
							|  |  |  |         @project_count = Project.visible.count | 
					
						
							| 
									
										
										
										
											2014-10-22 17:37:16 +00:00
										 |  |  |         @projects = Project.visible.offset(@offset).limit(@limit).order('lft').to_a | 
					
						
							| 
									
										
										
										
											2010-01-14 20:00:17 +00:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2008-05-27 16:49:18 +00:00
										 |  |  |       format.atom { | 
					
						
							| 
									
										
										
										
											2014-10-22 17:37:16 +00:00
										 |  |  |         projects = Project.visible.order('created_on DESC').limit(Setting.feeds_limit.to_i).to_a | 
					
						
							| 
									
										
										
										
											2009-01-24 11:31:15 +00:00
										 |  |  |         render_feed(projects, :title => "#{Setting.app_title}: #{l(:label_project_latest)}") | 
					
						
							| 
									
										
										
										
											2008-05-27 16:49:18 +00:00
										 |  |  |       } | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-07 15:00:27 +00:00
										 |  |  |   def new | 
					
						
							| 
									
										
										
										
											2014-10-22 17:37:16 +00:00
										 |  |  |     @issue_custom_fields = IssueCustomField.sorted.to_a | 
					
						
							|  |  |  |     @trackers = Tracker.sorted.to_a | 
					
						
							| 
									
										
										
										
											2012-03-06 19:52:10 +00:00
										 |  |  |     @project = Project.new | 
					
						
							|  |  |  |     @project.safe_attributes = params[:project] | 
					
						
							| 
									
										
										
										
											2010-09-06 14:53:08 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def create | 
					
						
							| 
									
										
										
										
											2014-10-22 17:37:16 +00:00
										 |  |  |     @issue_custom_fields = IssueCustomField.sorted.to_a | 
					
						
							|  |  |  |     @trackers = Tracker.sorted.to_a | 
					
						
							| 
									
										
										
										
											2010-12-12 13:19:07 +00:00
										 |  |  |     @project = Project.new | 
					
						
							|  |  |  |     @project.safe_attributes = params[:project] | 
					
						
							| 
									
										
										
										
											2010-09-06 14:53:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if validate_parent_id && @project.save | 
					
						
							|  |  |  |       @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') | 
					
						
							| 
									
										
										
										
											2013-07-06 00:04:35 +00:00
										 |  |  |       # Add current user as a project member if current user is not admin | 
					
						
							| 
									
										
										
										
											2010-09-06 14:53:08 +00:00
										 |  |  |       unless User.current.admin? | 
					
						
							|  |  |  |         r = Role.givable.find_by_id(Setting.new_project_user_role_id.to_i) || Role.givable.first | 
					
						
							|  |  |  |         m = Member.new(:user => User.current, :roles => [r]) | 
					
						
							|  |  |  |         @project.members << m | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |       respond_to do |format| | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  |         format.html { | 
					
						
							| 
									
										
										
										
											2010-09-06 14:53:08 +00:00
										 |  |  |           flash[:notice] = l(:notice_successful_create) | 
					
						
							| 
									
										
										
										
											2012-12-11 19:39:47 +00:00
										 |  |  |           if params[:continue] | 
					
						
							|  |  |  |             attrs = {:parent_id => @project.parent_id}.reject {|k,v| v.nil?} | 
					
						
							|  |  |  |             redirect_to new_project_path(attrs) | 
					
						
							|  |  |  |           else | 
					
						
							|  |  |  |             redirect_to settings_project_path(@project) | 
					
						
							|  |  |  |           end | 
					
						
							| 
									
										
										
										
											2010-09-06 14:53:08 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-12-04 17:43:39 +00:00
										 |  |  |         format.api  { render :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => @project.id) } | 
					
						
							| 
									
										
										
										
											2010-09-06 14:53:08 +00:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2010-09-06 14:53:08 +00:00
										 |  |  |       respond_to do |format| | 
					
						
							| 
									
										
										
										
											2010-09-07 15:00:27 +00:00
										 |  |  |         format.html { render :action => 'new' } | 
					
						
							| 
									
										
										
										
											2010-12-03 12:06:14 +00:00
										 |  |  |         format.api  { render_validation_errors(@project) } | 
					
						
							| 
									
										
										
										
											2009-05-17 12:59:14 +00:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2010-09-06 14:53:08 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-03 21:25:37 +00:00
										 |  |  |   def copy | 
					
						
							| 
									
										
										
										
											2014-10-22 17:37:16 +00:00
										 |  |  |     @issue_custom_fields = IssueCustomField.sorted.to_a | 
					
						
							|  |  |  |     @trackers = Tracker.sorted.to_a | 
					
						
							| 
									
										
										
										
											2009-10-25 11:10:35 +00:00
										 |  |  |     @source_project = Project.find(params[:id]) | 
					
						
							| 
									
										
										
										
											2009-05-03 21:25:37 +00:00
										 |  |  |     if request.get? | 
					
						
							| 
									
										
										
										
											2009-10-25 11:10:35 +00:00
										 |  |  |       @project = Project.copy_from(@source_project) | 
					
						
							| 
									
										
										
										
											2012-12-01 17:57:30 +00:00
										 |  |  |       @project.identifier = Project.next_identifier if Setting.sequential_project_identifiers? | 
					
						
							| 
									
										
										
										
											2009-05-03 21:25:37 +00:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2010-03-21 11:17:29 +00:00
										 |  |  |       Mailer.with_deliveries(params[:notifications] == '1') do | 
					
						
							| 
									
										
										
										
											2010-12-12 13:19:07 +00:00
										 |  |  |         @project = Project.new | 
					
						
							|  |  |  |         @project.safe_attributes = params[:project] | 
					
						
							| 
									
										
										
										
											2010-03-21 11:17:29 +00:00
										 |  |  |         if validate_parent_id && @project.copy(@source_project, :only => params[:only]) | 
					
						
							|  |  |  |           @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') | 
					
						
							|  |  |  |           flash[:notice] = l(:notice_successful_create) | 
					
						
							| 
									
										
										
										
											2012-12-11 19:39:47 +00:00
										 |  |  |           redirect_to settings_project_path(@project) | 
					
						
							| 
									
										
										
										
											2010-03-21 11:17:29 +00:00
										 |  |  |         elsif !@project.new_record? | 
					
						
							|  |  |  |           # Project was created | 
					
						
							|  |  |  |           # But some objects were not copied due to validation failures | 
					
						
							|  |  |  |           # (eg. issues from disabled trackers) | 
					
						
							|  |  |  |           # TODO: inform about that | 
					
						
							| 
									
										
										
										
											2012-12-11 19:39:47 +00:00
										 |  |  |           redirect_to settings_project_path(@project) | 
					
						
							| 
									
										
										
										
											2010-03-21 11:17:29 +00:00
										 |  |  |         end | 
					
						
							| 
									
										
										
										
											2009-12-26 10:18:28 +00:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2009-10-29 18:51:10 +00:00
										 |  |  |     end | 
					
						
							|  |  |  |   rescue ActiveRecord::RecordNotFound | 
					
						
							| 
									
										
										
										
											2012-12-01 17:57:30 +00:00
										 |  |  |     # source_project not found | 
					
						
							|  |  |  |     render_404 | 
					
						
							| 
									
										
										
										
											2009-05-03 21:25:37 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2013-02-17 10:15:10 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   # Show @project | 
					
						
							|  |  |  |   def show | 
					
						
							| 
									
										
										
										
											2013-01-20 15:09:57 +00:00
										 |  |  |     # try to redirect to the requested menu item | 
					
						
							|  |  |  |     if params[:jump] && redirect_to_project_menu_item(@project, params[:jump]) | 
					
						
							| 
									
										
										
										
											2013-01-20 13:54:42 +00:00
										 |  |  |       return | 
					
						
							| 
									
										
										
										
											2008-12-30 14:24:51 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-12 19:04:52 +00:00
										 |  |  |     @users_by_role = @project.users_by_role | 
					
						
							| 
									
										
										
										
											2014-10-22 17:37:16 +00:00
										 |  |  |     @subprojects = @project.children.visible.to_a | 
					
						
							|  |  |  |     @news = @project.news.limit(5).includes(:author, :project).reorder("#{News.table_name}.created_on DESC").to_a | 
					
						
							| 
									
										
										
										
											2008-02-28 21:57:03 +00:00
										 |  |  |     @trackers = @project.rolled_up_trackers | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-27 18:22:12 +00:00
										 |  |  |     cond = @project.project_condition(Setting.display_subprojects_issues?) | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-10 07:46:53 +00:00
										 |  |  |     @open_issues_by_tracker = Issue.visible.open.where(cond).group(:tracker).count | 
					
						
							|  |  |  |     @total_issues_by_tracker = Issue.visible.where(cond).group(:tracker).count | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 17:29:30 +00:00
										 |  |  |     if User.current.allowed_to?(:view_time_entries, @project) | 
					
						
							| 
									
										
										
										
											2013-06-12 19:13:25 +00:00
										 |  |  |       @total_hours = TimeEntry.visible.where(cond).sum(:hours).to_f | 
					
						
							| 
									
										
										
										
											2008-02-27 20:50:19 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-29 16:52:35 +00:00
										 |  |  |     @key = User.current.rss_key | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-01-14 20:00:17 +00:00
										 |  |  |     respond_to do |format| | 
					
						
							|  |  |  |       format.html | 
					
						
							| 
									
										
										
										
											2010-12-04 17:43:39 +00:00
										 |  |  |       format.api | 
					
						
							| 
									
										
										
										
											2010-01-14 20:00:17 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2006-07-09 16:30:01 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def settings | 
					
						
							| 
									
										
										
										
											2014-10-22 17:37:16 +00:00
										 |  |  |     @issue_custom_fields = IssueCustomField.sorted.to_a | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |     @issue_category ||= IssueCategory.new | 
					
						
							|  |  |  |     @member ||= @project.members.new | 
					
						
							| 
									
										
										
										
											2014-10-22 17:37:16 +00:00
										 |  |  |     @trackers = Tracker.sorted.to_a | 
					
						
							| 
									
										
										
										
											2007-09-14 11:34:08 +00:00
										 |  |  |     @wiki ||= @project.wiki | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   def edit | 
					
						
							| 
									
										
										
										
											2010-09-08 16:01:51 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def update | 
					
						
							| 
									
										
										
										
											2010-12-12 13:19:07 +00:00
										 |  |  |     @project.safe_attributes = params[:project] | 
					
						
							| 
									
										
										
										
											2010-09-08 16:01:51 +00:00
										 |  |  |     if validate_parent_id && @project.save | 
					
						
							|  |  |  |       @project.set_allowed_parent!(params[:project]['parent_id']) if params[:project].has_key?('parent_id') | 
					
						
							|  |  |  |       respond_to do |format| | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  |         format.html { | 
					
						
							| 
									
										
										
										
											2010-09-08 16:01:51 +00:00
										 |  |  |           flash[:notice] = l(:notice_successful_update) | 
					
						
							| 
									
										
										
										
											2012-12-11 19:39:47 +00:00
										 |  |  |           redirect_to settings_project_path(@project) | 
					
						
							| 
									
										
										
										
											2010-09-08 16:01:51 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2012-07-14 08:13:55 +00:00
										 |  |  |         format.api  { render_api_ok } | 
					
						
							| 
									
										
										
										
											2010-09-08 16:01:51 +00:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2010-01-14 20:00:17 +00:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2010-09-08 16:01:51 +00:00
										 |  |  |       respond_to do |format| | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  |         format.html { | 
					
						
							| 
									
										
										
										
											2010-09-08 16:01:51 +00:00
										 |  |  |           settings | 
					
						
							|  |  |  |           render :action => 'settings' | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-12-03 12:06:14 +00:00
										 |  |  |         format.api  { render_validation_errors(@project) } | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2006-07-09 16:30:01 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-01-06 20:57:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-14 11:34:08 +00:00
										 |  |  |   def modules | 
					
						
							| 
									
										
										
										
											2011-01-06 20:57:17 +00:00
										 |  |  |     @project.enabled_module_names = params[:enabled_module_names] | 
					
						
							| 
									
										
										
										
											2010-03-12 13:51:00 +00:00
										 |  |  |     flash[:notice] = l(:notice_successful_update) | 
					
						
							| 
									
										
										
										
											2012-12-11 19:39:47 +00:00
										 |  |  |     redirect_to settings_project_path(@project, :tab => 'modules') | 
					
						
							| 
									
										
										
										
											2007-09-14 11:34:08 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-27 17:42:04 +00:00
										 |  |  |   def archive | 
					
						
							| 
									
										
										
										
											2009-12-06 10:28:20 +00:00
										 |  |  |     if request.post? | 
					
						
							|  |  |  |       unless @project.archive | 
					
						
							|  |  |  |         flash[:error] = l(:error_can_not_archive_project) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2012-12-11 19:39:47 +00:00
										 |  |  |     redirect_to admin_projects_path(:status => params[:status]) | 
					
						
							| 
									
										
										
										
											2007-05-27 17:42:04 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-27 17:42:04 +00:00
										 |  |  |   def unarchive | 
					
						
							|  |  |  |     @project.unarchive if request.post? && !@project.active? | 
					
						
							| 
									
										
										
										
											2012-12-11 19:39:47 +00:00
										 |  |  |     redirect_to admin_projects_path(:status => params[:status]) | 
					
						
							| 
									
										
										
										
											2007-05-27 17:42:04 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2011-08-31 12:02:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-25 17:49:35 +00:00
										 |  |  |   def close | 
					
						
							|  |  |  |     @project.close | 
					
						
							|  |  |  |     redirect_to project_path(@project) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def reopen | 
					
						
							|  |  |  |     @project.reopen | 
					
						
							|  |  |  |     redirect_to project_path(@project) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-07-29 09:32:58 +00:00
										 |  |  |   # Delete @project | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   def destroy | 
					
						
							| 
									
										
										
										
											2007-05-27 17:42:04 +00:00
										 |  |  |     @project_to_destroy = @project | 
					
						
							| 
									
										
										
										
											2011-12-10 09:32:41 +00:00
										 |  |  |     if api_request? || params[:confirm] | 
					
						
							|  |  |  |       @project_to_destroy.destroy | 
					
						
							|  |  |  |       respond_to do |format| | 
					
						
							| 
									
										
										
										
											2012-12-11 19:39:47 +00:00
										 |  |  |         format.html { redirect_to admin_projects_path } | 
					
						
							| 
									
										
										
										
											2012-07-14 08:13:55 +00:00
										 |  |  |         format.api  { render_api_ok } | 
					
						
							| 
									
										
										
										
											2010-01-14 20:00:17 +00:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2007-05-27 17:42:04 +00:00
										 |  |  |     # hide project in layout | 
					
						
							|  |  |  |     @project = nil | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-23 14:19:42 +00:00
										 |  |  |   private | 
					
						
							| 
									
										
										
										
											2008-03-11 19:33:38 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-24 16:18:15 +00:00
										 |  |  |   # Validates parent_id param according to user's permissions | 
					
						
							|  |  |  |   # TODO: move it to Project model in a validation that depends on User.current | 
					
						
							|  |  |  |   def validate_parent_id | 
					
						
							|  |  |  |     return true if User.current.admin? | 
					
						
							|  |  |  |     parent_id = params[:project] && params[:project][:parent_id] | 
					
						
							|  |  |  |     if parent_id || @project.new_record? | 
					
						
							|  |  |  |       parent = parent_id.blank? ? nil : Project.find_by_id(parent_id.to_i) | 
					
						
							|  |  |  |       unless @project.allowed_parents.include?(parent) | 
					
						
							|  |  |  |         @project.errors.add :parent_id, :invalid | 
					
						
							|  |  |  |         return false | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |     true | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2006-06-28 18:11:03 +00:00
										 |  |  | end |