2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# redMine - project management software  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Copyright (C) 2006-2007  Jean-Philippe Lang  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# 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.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# 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.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# 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.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								require  'csv'  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								class  ProjectsController  <  ApplicationController  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  layout  'base' 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-27 17:42:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  before_filter  :find_project ,  :except  = >  [  :index ,  :list ,  :add  ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  before_filter  :authorize ,  :except  = >  [  :index ,  :list ,  :add ,  :archive ,  :unarchive ,  :destroy  ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  before_filter  :require_admin ,  :only  = >  [  :add ,  :archive ,  :unarchive ,  :destroy  ] 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  accept_key_auth  :activity ,  :calendar 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-06 16:40:33 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2007-05-27 17:42:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  cache_sweeper  :project_sweeper ,  :only  = >  [  :add ,  :edit ,  :archive ,  :unarchive ,  :destroy  ] 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-06 16:40:33 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  cache_sweeper  :issue_sweeper ,  :only  = >  [  :add_issue  ] 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-25 20:19:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  cache_sweeper  :version_sweeper ,  :only  = >  [  :add_version  ] 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  helper  :sort 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  include  SortHelper 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  helper  :custom_fields 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  include  CustomFieldsHelper    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  helper  :ifpdf 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  include  IfpdfHelper 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-03 17:20:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  helper  :issues 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  helper  IssuesHelper 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  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 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2006-07-03 19:38:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  index 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    list 
							 
						 
					
						
							
								
									
										
										
										
											2006-10-21 10:38:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    render  :action  = >  'list'  unless  request . xhr? 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-03 19:38:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-09-14 19:55:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # Lists visible projects 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  list 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-14 19:55:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    projects  =  Project . find  :all , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            :conditions  = >  Project . visible_by ( logged_in_user ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            :include  = >  :parent 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @project_tree  =  projects . group_by  { | p |  p . parent  ||  p } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @project_tree . each_key  { | p |  @project_tree [ p ]  -=  [ p ] } 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-14 19:55:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2006-06-28 18:11:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  # Add a new project 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  add 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @custom_fields  =  IssueCustomField . find ( :all ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 20:13:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @root_projects  =  Project . find ( :all ,  :conditions  = >  " parent_id IS NULL AND status =  #{ Project :: STATUS_ACTIVE } " ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @project  =  Project . new ( params [ :project ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-15 08:56:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @project . enabled_module_names  =  Redmine :: AccessControl . available_project_modules 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  request . get? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @custom_values  =  ProjectCustomField . find ( :all ) . collect  {  | x |  CustomValue . new ( :custom_field  = >  x ,  :customized  = >  @project )  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @project . custom_fields  =  CustomField . find ( params [ :custom_field_ids ] )  if  params [ :custom_field_ids ] 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 17:07:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @custom_values  =  ProjectCustomField . find ( :all ) . collect  {  | x |  CustomValue . new ( :custom_field  = >  x ,  :customized  = >  @project ,  :value  = >  ( params [ :custom_fields ]  ?  params [ " custom_fields " ] [ x . id . to_s ]  :  nil ) )  } 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-14 11:34:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @project . custom_values  =  @custom_values 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-09 16:30:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  @project . save 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-14 11:34:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        @project . enabled_module_names  =  params [ :enabled_modules ] 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-30 10:47:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        flash [ :notice ]  =  l ( :notice_successful_create ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        redirect_to  :controller  = >  'admin' ,  :action  = >  'projects' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									  end 		
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Show @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  show 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @custom_values  =  @project . custom_values . find ( :all ,  :include  = >  :custom_field ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-08 17:44:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @members_by_role  =  @project . members . find ( :all ,  :include  = >  [ :user ,  :role ] ,  :order  = >  'position' ) . group_by  { | m |  m . role } 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-27 17:42:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @subprojects  =  @project . active_children 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-15 22:11:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @news  =  @project . news . find ( :all ,  :limit  = >  5 ,  :include  = >  [  :author ,  :project  ] ,  :order  = >  " #{ News . table_name } .created_on DESC " ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @trackers  =  Tracker . find ( :all ,  :order  = >  'position' ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-15 22:11:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @open_issues_by_tracker  =  Issue . count ( :group  = >  :tracker ,  :joins  = >  " INNER JOIN  #{ IssueStatus . table_name }  ON  #{ IssueStatus . table_name } .id =  #{ Issue . table_name } .status_id " ,  :conditions  = >  [ " project_id=? and  #{ IssueStatus . table_name } .is_closed=? " ,  @project . id ,  false ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @total_issues_by_tracker  =  Issue . count ( :group  = >  :tracker ,  :conditions  = >  [ " project_id=? " ,  @project . id ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-22 13:17:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @total_hours  =  @project . time_entries . sum ( :hours ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @key  =  User . current . rss_key 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-09 16:30:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  settings 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 20:13:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @root_projects  =  Project :: find ( :all ,  :conditions  = >  [ " parent_id IS NULL AND status =  #{ Project :: STATUS_ACTIVE }  AND id <> ? " ,  @project . id ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @custom_fields  =  IssueCustomField . find ( :all ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @issue_category  || =  IssueCategory . new 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @member  || =  @project . members . new 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @custom_values  || =  ProjectCustomField . find ( :all ) . collect  {  | x |  @project . custom_values . find_by_custom_field_id ( x . id )  ||  CustomValue . new ( :custom_field  = >  x )  } 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-14 11:34:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @repository  || =  @project . repository 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @wiki  || =  @project . wiki 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Edit @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  edit 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  request . post? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @project . custom_fields  =  IssueCustomField . find ( params [ :custom_field_ids ] )  if  params [ :custom_field_ids ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  params [ :custom_fields ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        @custom_values  =  ProjectCustomField . find ( :all ) . collect  {  | x |  CustomValue . new ( :custom_field  = >  x ,  :customized  = >  @project ,  :value  = >  params [ " custom_fields " ] [ x . id . to_s ] )  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        @project . custom_values  =  @custom_values 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @project . attributes  =  params [ :project ] 
							 
						 
					
						
							
								
									
										
										
										
											2006-12-24 13:38:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      if  @project . save 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-30 10:47:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        flash [ :notice ]  =  l ( :notice_successful_update ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        redirect_to  :action  = >  'settings' ,  :id  = >  @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        settings 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        render  :action  = >  'settings' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
									
										
										
										
											2006-07-09 16:30:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-14 11:34:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  modules 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @project . enabled_module_names  =  params [ :enabled_modules ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    redirect_to  :action  = >  'settings' ,  :id  = >  @project ,  :tab  = >  'modules' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-05-27 17:42:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  archive 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @project . archive  if  request . post?  &&  @project . active? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    redirect_to  :controller  = >  'admin' ,  :action  = >  'projects' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  unarchive 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @project . unarchive  if  request . post?  &&  ! @project . active? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    redirect_to  :controller  = >  'admin' ,  :action  = >  'projects' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  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 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-28 18:11:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    if  request . post?  and  params [ :confirm ] 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-27 17:42:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @project_to_destroy . destroy 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      redirect_to  :controller  = >  'admin' ,  :action  = >  'projects' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-27 17:42:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # hide project in layout 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @project  =  nil 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Add a new issue category to @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  add_issue_category 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-29 17:21:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @category  =  @project . issue_categories . build ( params [ :category ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  request . post?  and  @category . save 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-16 16:45:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  	  respond_to  do  | format | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        format . html  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          flash [ :notice ]  =  l ( :notice_successful_create ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          redirect_to  :action  = >  'settings' ,  :tab  = >  'categories' ,  :id  = >  @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        format . js  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          # IE doesn't support the replace_html rjs method for select box options 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          render ( :update )  { | page |  page . replace  " issue_category_id " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            content_tag ( 'select' ,  '<option></option>'  +  options_from_collection_for_select ( @project . issue_categories ,  'id' ,  'name' ,  @category . id ) ,  :id  = >  'issue_category_id' ,  :name  = >  'issue[category_id]' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-29 17:21:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Add a new version to @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  add_version 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  	@version  =  @project . versions . build ( params [ :version ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  	if  request . post?  and  @version . save 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  	  flash [ :notice ]  =  l ( :notice_successful_create ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      redirect_to  :action  = >  'settings' ,  :tab  = >  'versions' ,  :id  = >  @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  	end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Add a new document to @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  add_document 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @document  =  @project . documents . build ( params [ :document ] )     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  request . post?  and  @document . save 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # Save the attachments 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      params [ :attachments ] . each  {  | a | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        Attachment . create ( :container  = >  @document ,  :file  = >  a ,  :author  = >  logged_in_user )  unless  a . size  ==  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  if  params [ :attachments ]  and  params [ :attachments ] . is_a?  Array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      flash [ :notice ]  =  l ( :notice_successful_create ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-12 18:04:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      Mailer . deliver_document_added ( @document )  if  Setting . notified_events . include? ( 'document_added' ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      redirect_to  :action  = >  'list_documents' ,  :id  = >  @project 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-28 18:11:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2006-07-29 09:32:58 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # Show documents list of @project 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  list_documents 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @documents  =  @project . documents . find  :all ,  :include  = >  :category 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Add a new issue to @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  add_issue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @tracker  =  Tracker . find ( params [ :tracker_id ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @priorities  =  Enumeration :: get_values ( 'IPRI' ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 18:34:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    default_status  =  IssueStatus . default 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-12 22:31:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    unless  default_status 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-02 17:42:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      flash . now [ :error ]  =  'No default issue status defined. Please check your configuration.' 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-12 22:31:05 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      render  :nothing  = >  true ,  :layout  = >  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-04 21:52:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @issue  =  Issue . new ( :project  = >  @project ,  :tracker  = >  @tracker )     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @issue . status  =  default_status 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-24 15:19:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @allowed_statuses  =  ( [ default_status ]  +  default_status . find_new_statuses_allowed_to ( logged_in_user . role_for_project ( @project ) ,  @issue . tracker ) ) if  logged_in_user 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  request . get? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @issue . start_date  =  Date . today 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @custom_values  =  @project . custom_fields_for_issues ( @tracker ) . collect  {  | x |  CustomValue . new ( :custom_field  = >  x ,  :customized  = >  @issue )  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @issue . attributes  =  params [ :issue ] 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-03 18:34:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      requested_status  =  IssueStatus . find_by_id ( params [ :issue ] [ :status_id ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @issue . status  =  ( @allowed_statuses . include?  requested_status )  ?  requested_status  :  default_status 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @issue . author_id  =  self . logged_in_user . id  if  self . logged_in_user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # Multiple file upload 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @attachments  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      params [ :attachments ] . each  {  | a | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        @attachments  <<  Attachment . new ( :container  = >  @issue ,  :file  = >  a ,  :author  = >  logged_in_user )  unless  a . size  ==  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  if  params [ :attachments ]  and  params [ :attachments ] . is_a?  Array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @custom_values  =  @project . custom_fields_for_issues ( @tracker ) . collect  {  | x |  CustomValue . new ( :custom_field  = >  x ,  :customized  = >  @issue ,  :value  = >  params [ " custom_fields " ] [ x . id . to_s ] )  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @issue . custom_values  =  @custom_values 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  @issue . save 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        @attachments . each ( & :save ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        flash [ :notice ]  =  l ( :notice_successful_create ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-14 15:30:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        Mailer . deliver_issue_add ( @issue )  if  Setting . notified_events . include? ( 'issue_added' ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        redirect_to  :action  = >  'list_issues' ,  :id  = >  @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 		
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Show filtered/sorted issues list of @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  list_issues 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-15 22:11:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sort_init  " #{ Issue . table_name } .id " ,  " desc " 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sort_update 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    retrieve_query 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @results_per_page_options  =  [  15 ,  25 ,  50 ,  100  ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  params [ :per_page ]  and  @results_per_page_options . include?  params [ :per_page ] . to_i 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @results_per_page  =  params [ :per_page ] . to_i 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      session [ :results_per_page ]  =  @results_per_page 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @results_per_page  =  session [ :results_per_page ]  ||  25 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  @query . valid? 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-26 12:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @issue_count  =  Issue . count ( :include  = >  [ :status ,  :project ] ,  :conditions  = >  @query . statement ) 		
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @issue_pages  =  Paginator . new  self ,  @issue_count ,  @results_per_page ,  params [ 'page' ] 								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @issues  =  Issue . find  :all ,  :order  = >  sort_clause , 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-01 11:39:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  						:include  = >  [  :assigned_to ,  :status ,  :tracker ,  :project ,  :priority ,  :category  ] , 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  						:conditions  = >  @query . statement , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  						:limit   = >   @issue_pages . items_per_page , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  						:offset  = >   @issue_pages . current . offset 						
							 
						 
					
						
							
								
									
										
										
										
											2007-06-23 13:49:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-22 13:17:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    render  :layout  = >  false  if  request . xhr? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Export filtered/sorted issues list to CSV 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  export_issues_csv 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-15 22:11:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sort_init  " #{ Issue . table_name } .id " ,  " desc " 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sort_update 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    retrieve_query 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    render  :action  = >  'list_issues'  and  return  unless  @query . valid? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @issues  =   Issue . find  :all ,  :order  = >  sort_clause , 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-30 20:18:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														:include  = >  [  :assigned_to ,  :author ,  :status ,  :tracker ,  :priority ,  :project ,  { :custom_values  = >  :custom_field }  ] , 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														:conditions  = >  @query . statement , 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-29 22:20:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														:limit  = >  Setting . issues_export_limit . to_i 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ic  =  Iconv . new ( l ( :general_csv_encoding ) ,  'UTF-8' )     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    export  =  StringIO . new 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    CSV :: Writer . generate ( export ,  l ( :general_csv_separator ) )  do  | csv | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # csv header fields 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      headers  =  [  " # " ,  l ( :field_status ) ,  
							 
						 
					
						
							
								
									
										
										
										
											2007-04-30 20:18:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                       l ( :field_project ) , 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                       l ( :field_tracker ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                       l ( :field_priority ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                       l ( :field_subject ) , 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-05 07:33:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                       l ( :field_assigned_to ) , 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                       l ( :field_author ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                       l ( :field_start_date ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                       l ( :field_due_date ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                       l ( :field_done_ratio ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                       l ( :field_created_on ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                       l ( :field_updated_on ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                       ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      for  custom_field  in  @project . all_custom_fields 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        headers  <<  custom_field . name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end       
							 
						 
					
						
							
								
									
										
										
										
											2007-06-23 16:55:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      csv  <<  headers . collect  { | c |  begin ;  ic . iconv ( c . to_s ) ;  rescue ;  c . to_s ;  end  } 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      # csv lines 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @issues . each  do  | issue | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fields  =  [ issue . id ,  issue . status . name ,  
							 
						 
					
						
							
								
									
										
										
										
											2007-04-30 20:18:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            issue . project . name , 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            issue . tracker . name ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            issue . priority . name , 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-30 20:18:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            issue . subject , 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-05 07:33:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            ( issue . assigned_to  ?  issue . assigned_to . name  :  " " ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            issue . author . name , 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            issue . start_date  ?  l_date ( issue . start_date )  :  nil , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            issue . due_date  ?  l_date ( issue . due_date )  :  nil , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            issue . done_ratio , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            l_datetime ( issue . created_on ) ,   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            l_datetime ( issue . updated_on ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  custom_field  in  @project . all_custom_fields 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          fields  <<  ( show_value  issue . custom_value_for ( custom_field ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
									
										
										
										
											2007-06-23 16:55:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        csv  <<  fields . collect  { | c |  begin ;  ic . iconv ( c . to_s ) ;  rescue ;  c . to_s ;  end  } 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    export . rewind 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    send_data ( export . read ,  :type  = >  'text/csv; header=present' ,  :filename  = >  'export.csv' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Export filtered/sorted issues to PDF 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  export_issues_pdf 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-15 22:11:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sort_init  " #{ Issue . table_name } .id " ,  " desc " 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sort_update 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    retrieve_query 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    render  :action  = >  'list_issues'  and  return  unless  @query . valid? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @issues  =   Issue . find  :all ,  :order  = >  sort_clause , 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-26 12:29:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														:include  = >  [  :author ,  :status ,  :tracker ,  :priority ,  :project  ] , 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														:conditions  = >  @query . statement , 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-29 22:20:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														:limit  = >  Setting . issues_export_limit . to_i 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
																			
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @options_for_rfpdf  || =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @options_for_rfpdf [ :file_name ]  =  " export.pdf " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    render  :layout  = >  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-09 19:07:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Bulk edit issues 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  bulk_edit_issues 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  request . post? 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-12 15:55:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      status  =  IssueStatus . find_by_id ( params [ :status_id ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-09 19:07:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      priority  =  Enumeration . find_by_id ( params [ :priority_id ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      assigned_to  =  User . find_by_id ( params [ :assigned_to_id ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-10 18:08:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      category  =  @project . issue_categories . find_by_id ( params [ :category_id ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fixed_version  =  @project . versions . find_by_id ( params [ :fixed_version_id ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-09 19:07:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      issues  =  @project . issues . find_all_by_id ( params [ :issue_ids ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-12 15:55:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      unsaved_issue_ids  =  [ ]       
							 
						 
					
						
							
								
									
										
										
										
											2007-10-09 19:07:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      issues . each  do  | issue | 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-11 17:20:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        journal  =  issue . init_journal ( User . current ,  params [ :notes ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-09 19:07:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        issue . priority  =  priority  if  priority 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-18 16:29:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        issue . assigned_to  =  assigned_to  if  assigned_to  ||  params [ :assigned_to_id ]  ==  'none' 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-10 18:08:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        issue . category  =  category  if  category 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        issue . fixed_version  =  fixed_version  if  fixed_version 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-09 19:07:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        issue . start_date  =  params [ :start_date ]  unless  params [ :start_date ] . blank? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        issue . due_date  =  params [ :due_date ]  unless  params [ :due_date ] . blank? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        issue . done_ratio  =  params [ :done_ratio ]  unless  params [ :done_ratio ] . blank? 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-12 15:55:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Don't save any change to the issue if the user is not authorized to apply the requested status 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( status . nil?  ||  ( issue . status . new_status_allowed_to? ( status ,  current_role ,  issue . tracker )  &&  issue . status  =  status ) )  &&  issue . save 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-11 17:20:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          # Send notification for each issue (if changed) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          Mailer . deliver_issue_edit ( journal )  if  journal . details . any?  &&  Setting . notified_events . include? ( 'issue_updated' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-12 15:55:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          # Keep unsaved issue ids to display them in flash error 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-11 17:20:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          unsaved_issue_ids  <<  issue . id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-09 19:07:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  unsaved_issue_ids . empty? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        flash [ :notice ]  =  l ( :notice_successful_update )  unless  issues . empty? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        flash [ :error ]  =  l ( :notice_failed_to_save_issues ,  unsaved_issue_ids . size ,  issues . size ,  '#'  +  unsaved_issue_ids . join ( ', #' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      redirect_to  :action  = >  'list_issues' ,  :id  = >  @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-12 15:55:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  current_role  &&  User . current . allowed_to? ( :change_issue_status ,  @project ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # Find potential statuses the user could be allowed to switch issues to 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @available_statuses  =  Workflow . find ( :all ,  :include  = >  :new_status , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                :conditions  = >  { :role_id  = >  current_role . id } ) . collect ( & :new_status ) . compact . uniq 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-09 19:07:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    render  :update  do  | page | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      page . hide  'query_form' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      page . replace_html   'bulk-edit' ,  :partial  = >  'issues/bulk_edit_form' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  move_issues 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @issues  =  @project . issues . find ( params [ :issue_ids ] )  if  params [ :issue_ids ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    redirect_to  :action  = >  'list_issues' ,  :id  = >  @project  and  return  unless  @issues 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @projects  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # find projects to which the user is allowed to move the issue 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    User . current . memberships . each  { | m |  @projects  <<  m . project  if  m . role . allowed_to? ( :controller  = >  'projects' ,  :action  = >  'move_issues' ) } 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # issue can be moved to any tracker 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @trackers  =  Tracker . find ( :all ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  request . post?  and  params [ :new_project_id ]  and  params [ :new_tracker_id ]     
							 
						 
					
						
							
								
									
										
										
										
											2007-08-31 20:56:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      new_project  =  Project . find_by_id ( params [ :new_project_id ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      new_tracker  =  Tracker . find_by_id ( params [ :new_tracker_id ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @issues . each  do  | i | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  new_project  &&  i . project_id  !=  new_project . id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          # issue is moved to another project 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          i . category  =  nil  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          i . fixed_version  =  nil 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-05 13:22:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          # delete issue relations 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          i . relations_from . clear 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          i . relations_to . clear 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-31 20:56:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								          i . project  =  new_project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  new_tracker         
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          i . tracker  =  new_tracker 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        i . save 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-31 20:56:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      flash [ :notice ]  =  l ( :notice_successful_update ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      redirect_to  :action  = >  'list_issues' ,  :id  = >  @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Add a news to @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  add_news 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @news  =  News . new ( :project  = >  @project ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  request . post? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @news . attributes  =  params [ :news ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @news . author_id  =  self . logged_in_user . id  if  self . logged_in_user 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  @news . save 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        flash [ :notice ]  =  l ( :notice_successful_create ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-14 15:30:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        Mailer . deliver_news_added ( @news )  if  Setting . notified_events . include? ( 'news_added' ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        redirect_to  :action  = >  'list_news' ,  :id  = >  @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Show news list of @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  list_news 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-22 17:52:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @news_pages ,  @newss  =  paginate  :news ,  :per_page  = >  10 ,  :conditions  = >  [ " project_id=? " ,  @project . id ] ,  :include  = >  :author ,  :order  = >  " #{ News . table_name } .created_on DESC " 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    respond_to  do  | format | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      format . html  {  render  :layout  = >  false  if  request . xhr?  } 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-22 17:52:43 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      format . atom  {  render_feed ( @newss ,  :title  = >  " #{ @project . name } :  #{ l ( :label_news_plural ) } " )  } 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  add_file 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  request . post? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @version  =  @project . versions . find_by_id ( params [ :version_id ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # Save the attachments 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @attachments  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      params [ :attachments ] . each  {  | file | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        next  unless  file . size  >  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        a  =  Attachment . create ( :container  = >  @version ,  :file  = >  file ,  :author  = >  logged_in_user ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        @attachments  <<  a  unless  a . new_record? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      }  if  params [ :attachments ]  and  params [ :attachments ] . is_a?  Array 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-12 18:04:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      Mailer . deliver_attachments_added ( @attachments )  if  ! @attachments . empty?  &&  Setting . notified_events . include? ( 'file_added' ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      redirect_to  :controller  = >  'projects' ,  :action  = >  'list_files' ,  :id  = >  @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-20 17:46:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @versions  =  @project . versions . sort 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  list_files 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-20 17:46:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @versions  =  @project . versions . sort 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Show changelog for @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  changelog 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @trackers  =  Tracker . find ( :all ,  :conditions  = >  [ " is_in_chlog=? " ,  true ] ,  :order  = >  'position' ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-20 17:46:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    retrieve_selected_tracker_ids ( @trackers )     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @versions  =  @project . versions . sort 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  roadmap 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @trackers  =  Tracker . find ( :all ,  :conditions  = >  [ " is_in_roadmap=? " ,  true ] ,  :order  = >  'position' ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-20 17:46:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    retrieve_selected_tracker_ids ( @trackers ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-12 09:58:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @versions  =  @project . versions . sort 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @versions  =  @versions . select  { | v |  ! v . completed?  }  unless  params [ :completed ] 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  activity 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  params [ :year ]  and  params [ :year ] . to_i  >  1900 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @year  =  params [ :year ] . to_i 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  params [ :month ]  and  params [ :month ] . to_i  >  0  and  params [ :month ] . to_i  <  13 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        @month  =  params [ :month ] . to_i 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @year  || =  Date . today . year 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @month  || =  Date . today . month 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    case  params [ :format ] 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-01 18:49:31 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    when  'atom' 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      # 30 last days 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @date_from  =  Date . today  -  30 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @date_to  =  Date . today  +  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # current month 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @date_from  =  Date . civil ( @year ,  @month ,  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @date_to  =  @date_from  >>  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-09-24 17:33:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @event_types  =  %w( issues news files documents wiki_pages changesets ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @event_types . delete ( 'wiki_pages' )  unless  @project . wiki 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @event_types . delete ( 'changesets' )  unless  @project . repository 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-24 17:33:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    # only show what the user is allowed to view 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @event_types  =  @event_types . select  { | o |  User . current . allowed_to? ( " view_ #{ o } " . to_sym ,  @project ) } 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @scope  =  @event_types . select  { | t |  params [ " show_ #{ t } " ] } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # default events if none is specified in parameters 
							 
						 
					
						
							
								
									
										
										
										
											2007-09-24 17:33:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @scope  =  ( @event_types  -  %w( wiki_pages ) ) if  @scope . empty? 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @events  =  [ ]     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  @scope . include? ( 'issues' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @events  +=  @project . issues . find ( :all ,  :include  = >  [ :author ,  :tracker ] ,  :conditions  = >  [ " #{ Issue . table_name } .created_on>=? and  #{ Issue . table_name } .created_on<=? " ,  @date_from ,  @date_to ]  ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  @scope . include? ( 'news' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @events  +=  @project . news . find ( :all ,  :conditions  = >  [ " #{ News . table_name } .created_on>=? and  #{ News . table_name } .created_on<=? " ,  @date_from ,  @date_to ] ,  :include  = >  :author  ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-09-24 17:33:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  @scope . include? ( 'files' ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @events  +=  Attachment . find ( :all ,  :select  = >  " #{ Attachment . table_name } .* " ,  :joins  = >  " LEFT JOIN  #{ Version . table_name }  ON  #{ Version . table_name } .id =  #{ Attachment . table_name } .container_id " ,  :conditions  = >  [ " #{ Attachment . table_name } .container_type='Version' and  #{ Version . table_name } .project_id=? and  #{ Attachment . table_name } .created_on>=? and  #{ Attachment . table_name } .created_on<=? " ,  @project . id ,  @date_from ,  @date_to ] ,  :include  = >  :author  ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  @scope . include? ( 'documents' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @events  +=  @project . documents . find ( :all ,  :conditions  = >  [ " #{ Document . table_name } .created_on>=? and  #{ Document . table_name } .created_on<=? " ,  @date_from ,  @date_to ]  ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @events  +=  Attachment . find ( :all ,  :select  = >  " attachments.* " ,  :joins  = >  " LEFT JOIN  #{ Document . table_name }  ON  #{ Document . table_name } .id =  #{ Attachment . table_name } .container_id " ,  :conditions  = >  [ " #{ Attachment . table_name } .container_type='Document' and  #{ Document . table_name } .project_id=? and  #{ Attachment . table_name } .created_on>=? and  #{ Attachment . table_name } .created_on<=? " ,  @project . id ,  @date_from ,  @date_to ] ,  :include  = >  :author  ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-09-24 17:33:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  @scope . include? ( 'wiki_pages' ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-25 15:06:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      select  =  " #{ WikiContent . versioned_table_name } .updated_on,  #{ WikiContent . versioned_table_name } .comments,  "  + 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								               " #{ WikiContent . versioned_table_name } . #{ WikiContent . version_column } ,  #{ WikiPage . table_name } .title,  "  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               " #{ WikiContent . versioned_table_name } .page_id,  #{ WikiContent . versioned_table_name } .author_id,  "  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								               " #{ WikiContent . versioned_table_name } .id " 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-23 15:58:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      joins  =  " LEFT JOIN  #{ WikiPage . table_name }  ON  #{ WikiPage . table_name } .id =  #{ WikiContent . versioned_table_name } .page_id  "  + 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								              " LEFT JOIN  #{ Wiki . table_name }  ON  #{ Wiki . table_name } .id =  #{ WikiPage . table_name } .wiki_id  " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      conditions  =  [ " #{ Wiki . table_name } .project_id = ? AND  #{ WikiContent . versioned_table_name } .updated_on BETWEEN ? AND ? " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    @project . id ,  @date_from ,  @date_to ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @events  +=  WikiContent . versioned_class . find ( :all ,  :select  = >  select ,  :joins  = >  joins ,  :conditions  = >  conditions ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-23 15:58:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2007-09-24 17:33:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  @scope . include? ( 'changesets' ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @events  +=  @project . repository . changesets . find ( :all ,  :conditions  = >  [ " #{ Changeset . table_name } .committed_on BETWEEN ? AND ? " ,  @date_from ,  @date_to ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-25 12:12:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-08-29 16:52:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @events_by_day  =  @events . group_by ( & :event_date ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    respond_to  do  | format | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      format . html  {  render  :layout  = >  false  if  request . xhr?  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      format . atom  {  render_feed ( @events ,  :title  = >  " #{ @project . name } :  #{ l ( :label_activity ) } " )  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  calendar 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-31 17:15:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @trackers  =  Tracker . find ( :all ,  :order  = >  'position' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    retrieve_selected_tracker_ids ( @trackers ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  params [ :year ]  and  params [ :year ] . to_i  >  1900 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @year  =  params [ :year ] . to_i 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  params [ :month ]  and  params [ :month ] . to_i  >  0  and  params [ :month ] . to_i  <  13 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        @month  =  params [ :month ] . to_i 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @year  || =  Date . today . year 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-07 20:07:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @month  || =  Date . today . month     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @calendar  =  Redmine :: Helpers :: Calendar . new ( Date . civil ( @year ,  @month ,  1 ) ,  current_language ,  :month ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-31 17:15:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-10-07 20:07:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    events  =  [ ] 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-02 17:12:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @project . issues_with_subprojects ( params [ :with_subprojects ] )  do 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-07 20:07:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      events  +=  Issue . find ( :all ,  
							 
						 
					
						
							
								
									
										
										
										
											2007-04-27 16:21:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                           :include  = >  [ :tracker ,  :status ,  :assigned_to ,  :priority ,  :project ] ,  
							 
						 
					
						
							
								
									
										
										
										
											2007-10-07 20:07:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                           :conditions  = >  [ " ((start_date BETWEEN ? AND ?) OR (due_date BETWEEN ? AND ?)) AND  #{ Issue . table_name } .tracker_id IN ( #{ @selected_tracker_ids . join ( ',' ) } ) " ,  @calendar . startdt ,  @calendar . enddt ,  @calendar . startdt ,  @calendar . enddt ] 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-02 17:12:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                           )  unless  @selected_tracker_ids . empty? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-07 20:07:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    events  +=  @project . versions . find ( :all ,  :conditions  = >  [ " effective_date BETWEEN ? AND ? " ,  @calendar . startdt ,  @calendar . enddt ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @calendar . events  =  events 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-31 17:15:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    render  :layout  = >  false  if  request . xhr? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  gantt 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-31 17:15:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @trackers  =  Tracker . find ( :all ,  :order  = >  'position' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    retrieve_selected_tracker_ids ( @trackers ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  params [ :year ]  and  params [ :year ] . to_i  > 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @year_from  =  params [ :year ] . to_i 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  params [ :month ]  and  params [ :month ] . to_i  > = 1  and  params [ :month ] . to_i  < =  12 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        @month_from  =  params [ :month ] . to_i 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        @month_from  =  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
									
										
										
										
											2007-10-11 20:57:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @month_from  || =  Date . today . month 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @year_from  || =  Date . today . year 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-10-11 20:57:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    zoom  =  ( params [ :zoom ]  ||  User . current . pref [ :gantt_zoom ] ) . to_i 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @zoom  =  ( zoom  >  0  &&  zoom  <  5 )  ?  zoom  :  2     
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    months  =  ( params [ :months ]  ||  User . current . pref [ :gantt_months ] ) . to_i 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @months  =  ( months  >  0  &&  months  <  25 )  ?  months  :  6 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Save gantt paramters as user preference (zoom and months count) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( User . current . logged?  &&  ( @zoom  !=  User . current . pref [ :gantt_zoom ]  ||  @months  !=  User . current . pref [ :gantt_months ] ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      User . current . pref [ :gantt_zoom ] ,  User . current . pref [ :gantt_months ]  =  @zoom ,  @months 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      User . current . preference . save 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @date_from  =  Date . civil ( @year_from ,  @month_from ,  1 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @date_to  =  ( @date_from  >>  @months )  -  1 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-31 17:15:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-04-07 12:09:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @events  =  [ ] 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-02 17:12:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @project . issues_with_subprojects ( params [ :with_subprojects ] )  do 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-07 12:09:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @events  +=  Issue . find ( :all ,  
							 
						 
					
						
							
								
									
										
										
										
											2007-04-02 17:12:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                           :order  = >  " start_date, due_date " , 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-27 16:21:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                           :include  = >  [ :tracker ,  :status ,  :assigned_to ,  :priority ,  :project ] ,  
							 
						 
					
						
							
								
									
										
										
										
											2007-04-02 17:12:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                           :conditions  = >  [ " (((start_date>=? and start_date<=?) or (due_date>=? and due_date<=?) or (start_date<? and due_date>?)) and start_date is not null and due_date is not null and  #{ Issue . table_name } .tracker_id in ( #{ @selected_tracker_ids . join ( ',' ) } )) " ,  @date_from ,  @date_to ,  @date_from ,  @date_to ,  @date_from ,  @date_to ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           )  unless  @selected_tracker_ids . empty? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
									
										
										
										
											2007-04-07 12:09:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @events  +=  @project . versions . find ( :all ,  :conditions  = >  [ " effective_date BETWEEN ? AND ? " ,  @date_from ,  @date_to ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @events . sort!  { | x , y |  x . start_date  < = >  y . start_date  } 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    
							 
						 
					
						
							
								
									
										
										
										
											2007-08-26 07:55:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  params [ :format ] == 'pdf' 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @options_for_rfpdf  || =  { } 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-26 07:55:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @options_for_rfpdf [ :file_name ]  =  " #{ @project . identifier } -gantt.pdf " 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      render  :template  = >  " projects/gantt.rfpdf " ,  :layout  = >  false 
							 
						 
					
						
							
								
									
										
										
										
											2007-08-26 07:55:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    elsif  params [ :format ] == 'png'  &&  respond_to? ( 'gantt_image' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      image  =  gantt_image ( @events ,  @date_from ,  @months ,  @zoom ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      image . format  =  'PNG' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      send_data ( image . to_blob ,  :disposition  = >  'inline' ,  :type  = >  'image/png' ,  :filename  = >  " #{ @project . identifier } -gantt.png " ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      render  :template  = >  " projects/gantt.rhtml " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-17 15:18:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								private  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Find project of id params[:id] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # if not found, redirect to project list 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Used as a before_filter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  find_project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    @project  =  Project . find ( params [ :id ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-01-02 08:47:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  rescue  ActiveRecord :: RecordNotFound 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    render_404 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2007-03-31 17:15:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  def  retrieve_selected_tracker_ids ( selectable_trackers ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ids  =  params [ :tracker_ids ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @selected_tracker_ids  =  ( ids . is_a?  Array )  ?  ids . collect  {  | id |  id . to_i . to_s  }  :  ids . split ( '/' ) . collect  {  | id |  id . to_i . to_s  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @selected_tracker_ids  =  selectable_trackers . collect  { | t |  t . id . to_s  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # Retrieve query from session or build a new query 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  def  retrieve_query 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  params [ :query_id ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      @query  =  @project . queries . find ( params [ :query_id ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-08 12:46:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      @query . executed_by  =  logged_in_user 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      session [ :query ]  =  @query 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  params [ :set_filter ]  or  ! session [ :query ]  or  session [ :query ] . project_id  !=  @project . id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Give it a name, required to be valid 
							 
						 
					
						
							
								
									
										
										
										
											2007-05-08 12:46:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        @query  =  Query . new ( :name  = >  " _ " ,  :executed_by  = >  logged_in_user ) 
							 
						 
					
						
							
								
									
										
										
										
											2007-03-12 17:59:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        @query . project  =  @project 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  params [ :fields ]  and  params [ :fields ] . is_a?  Array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          params [ :fields ] . each  do  | field | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            @query . add_filter ( field ,  params [ :operators ] [ field ] ,  params [ :values ] [ field ] ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          @query . available_filters . keys . each  do  | field | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            @query . add_short_filter ( field ,  params [ field ] )  if  params [ field ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        session [ :query ]  =  @query 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        @query  =  session [ :query ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      end 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    end   
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  end 
							 
						 
					
						
							
								
									
										
										
										
											2006-06-28 18:11:03 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								end