| 
									
										
										
										
											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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ProjectsController < ApplicationController | 
					
						
							| 
									
										
										
										
											2008-01-19 11:53:43 +00:00
										 |  |  |   menu_item :overview | 
					
						
							|  |  |  |   menu_item :activity, :only => :activity | 
					
						
							|  |  |  |   menu_item :roadmap, :only => :roadmap | 
					
						
							|  |  |  |   menu_item :files, :only => [:list_files, :add_file] | 
					
						
							|  |  |  |   menu_item :settings, :only => :settings | 
					
						
							| 
									
										
										
										
											2008-02-10 13:17:41 +00:00
										 |  |  |   menu_item :issues, :only => [:changelog] | 
					
						
							| 
									
										
										
										
											2008-01-19 11:53:43 +00:00
										 |  |  |    | 
					
						
							| 
									
										
										
										
											2008-03-11 19:33:38 +00:00
										 |  |  |   before_filter :find_project, :except => [ :index, :list, :add, :activity ] | 
					
						
							|  |  |  |   before_filter :find_optional_project, :only => :activity | 
					
						
							|  |  |  |   before_filter :authorize, :except => [ :index, :list, :add, :archive, :unarchive, :destroy, :activity ] | 
					
						
							| 
									
										
										
										
											2007-05-27 17:42:04 +00:00
										 |  |  |   before_filter :require_admin, :only => [ :add, :archive, :unarchive, :destroy ] | 
					
						
							| 
									
										
										
										
											2008-09-11 17:03:26 +00:00
										 |  |  |   accept_key_auth :activity | 
					
						
							| 
									
										
										
										
											2007-05-06 16:40:33 +00:00
										 |  |  |    | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   helper :sort | 
					
						
							|  |  |  |   include SortHelper | 
					
						
							|  |  |  |   helper :custom_fields | 
					
						
							|  |  |  |   include CustomFieldsHelper    | 
					
						
							| 
									
										
										
										
											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
										 |  |  |    | 
					
						
							| 
									
										
										
										
											2007-09-14 19:55:51 +00:00
										 |  |  |   # Lists visible projects | 
					
						
							| 
									
										
										
										
											2008-05-26 20:10:32 +00:00
										 |  |  |   def index | 
					
						
							| 
									
										
										
										
											2007-09-14 19:55:51 +00:00
										 |  |  |     projects = Project.find :all, | 
					
						
							| 
									
										
										
										
											2007-11-20 15:40:16 +00:00
										 |  |  |                             :conditions => Project.visible_by(User.current), | 
					
						
							| 
									
										
										
										
											2007-09-14 19:55:51 +00:00
										 |  |  |                             :include => :parent | 
					
						
							| 
									
										
										
										
											2008-05-27 16:49:18 +00:00
										 |  |  |     respond_to do |format| | 
					
						
							|  |  |  |       format.html {  | 
					
						
							|  |  |  |         @project_tree = projects.group_by {|p| p.parent || p} | 
					
						
							| 
									
										
										
										
											2008-07-04 17:58:14 +00:00
										 |  |  |         @project_tree.keys.each {|p| @project_tree[p] -= [p]}  | 
					
						
							| 
									
										
										
										
											2008-05-27 16:49:18 +00:00
										 |  |  |       } | 
					
						
							|  |  |  |       format.atom { | 
					
						
							|  |  |  |         render_feed(projects.sort_by(&:created_on).reverse.slice(0, Setting.feeds_limit.to_i),  | 
					
						
							|  |  |  |                                   :title => "#{Setting.app_title}: #{l(:label_project_latest)}") | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2008-06-27 20:13:56 +00:00
										 |  |  |     @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position") | 
					
						
							| 
									
										
										
										
											2007-11-20 20:29:03 +00:00
										 |  |  |     @trackers = Tracker.all | 
					
						
							| 
									
										
										
										
											2007-12-03 10:28:08 +00:00
										 |  |  |     @root_projects = Project.find(:all, | 
					
						
							|  |  |  |                                   :conditions => "parent_id IS NULL AND status = #{Project::STATUS_ACTIVE}", | 
					
						
							|  |  |  |                                   :order => 'name') | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |     @project = Project.new(params[:project]) | 
					
						
							|  |  |  |     if request.get? | 
					
						
							| 
									
										
										
										
											2008-08-31 12:59:57 +00:00
										 |  |  |       @project.identifier = Project.next_identifier if Setting.sequential_project_identifiers? | 
					
						
							| 
									
										
										
										
											2007-11-20 20:29:03 +00:00
										 |  |  |       @project.trackers = Tracker.all | 
					
						
							| 
									
										
										
										
											2008-03-12 19:58:19 +00:00
										 |  |  |       @project.is_public = Setting.default_projects_public? | 
					
						
							| 
									
										
										
										
											2008-04-26 09:49:16 +00:00
										 |  |  |       @project.enabled_module_names = Redmine::AccessControl.available_project_modules | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2008-04-26 09:49:16 +00:00
										 |  |  |       @project.enabled_module_names = params[:enabled_modules] | 
					
						
							| 
									
										
										
										
											2006-07-09 16:30:01 +00:00
										 |  |  |       if @project.save | 
					
						
							| 
									
										
										
										
											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' | 
					
						
							| 
									
										
										
										
											2008-04-26 09:49:16 +00:00
										 |  |  | 	  end		 | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |     end	 | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 	 | 
					
						
							|  |  |  |   # Show @project | 
					
						
							|  |  |  |   def show | 
					
						
							| 
									
										
										
										
											2008-12-30 14:24:51 +00:00
										 |  |  |     if params[:jump] | 
					
						
							|  |  |  |       # try to redirect to the requested menu item | 
					
						
							|  |  |  |       redirect_to_project_menu_item(@project, params[:jump]) && return | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |      | 
					
						
							| 
									
										
										
										
											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} | 
					
						
							| 
									
										
										
										
											2008-05-01 12:56:59 +00:00
										 |  |  |     @subprojects = @project.children.find(:all, :conditions => Project.visible_by(User.current)) | 
					
						
							| 
									
										
										
										
											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") | 
					
						
							| 
									
										
										
										
											2008-02-28 21:57:03 +00:00
										 |  |  |     @trackers = @project.rolled_up_trackers | 
					
						
							| 
									
										
										
										
											2008-03-27 18:22:12 +00:00
										 |  |  |      | 
					
						
							|  |  |  |     cond = @project.project_condition(Setting.display_subprojects_issues?) | 
					
						
							| 
									
										
										
										
											2008-02-28 21:57:03 +00:00
										 |  |  |     Issue.visible_by(User.current) do | 
					
						
							|  |  |  |       @open_issues_by_tracker = Issue.count(:group => :tracker, | 
					
						
							|  |  |  |                                             :include => [:project, :status, :tracker], | 
					
						
							| 
									
										
										
										
											2008-03-27 18:22:12 +00:00
										 |  |  |                                             :conditions => ["(#{cond}) AND #{IssueStatus.table_name}.is_closed=?", false]) | 
					
						
							| 
									
										
										
										
											2008-02-28 21:57:03 +00:00
										 |  |  |       @total_issues_by_tracker = Issue.count(:group => :tracker, | 
					
						
							|  |  |  |                                             :include => [:project, :status, :tracker], | 
					
						
							| 
									
										
										
										
											2008-03-27 18:22:12 +00:00
										 |  |  |                                             :conditions => cond) | 
					
						
							| 
									
										
										
										
											2008-02-28 21:57:03 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2008-02-27 20:50:19 +00:00
										 |  |  |     TimeEntry.visible_by(User.current) do | 
					
						
							|  |  |  |       @total_hours = TimeEntry.sum(:hours,  | 
					
						
							|  |  |  |                                    :include => :project, | 
					
						
							| 
									
										
										
										
											2008-03-27 18:22:12 +00:00
										 |  |  |                                    :conditions => cond).to_f | 
					
						
							| 
									
										
										
										
											2008-02-27 20:50:19 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											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-12-03 10:28:08 +00:00
										 |  |  |     @root_projects = Project.find(:all, | 
					
						
							|  |  |  |                                   :conditions => ["parent_id IS NULL AND status = #{Project::STATUS_ACTIVE} AND id <> ?", @project.id], | 
					
						
							|  |  |  |                                   :order => 'name') | 
					
						
							| 
									
										
										
										
											2008-06-27 20:13:56 +00:00
										 |  |  |     @issue_custom_fields = IssueCustomField.find(:all, :order => "#{CustomField.table_name}.position") | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |     @issue_category ||= IssueCategory.new | 
					
						
							|  |  |  |     @member ||= @project.members.new | 
					
						
							| 
									
										
										
										
											2007-11-20 20:29:03 +00:00
										 |  |  |     @trackers = Tracker.all | 
					
						
							| 
									
										
										
										
											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.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 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def add_file | 
					
						
							|  |  |  |     if request.post? | 
					
						
							| 
									
										
										
										
											2008-12-09 18:00:27 +00:00
										 |  |  |       container = (params[:version_id].blank? ? @project : @project.versions.find_by_id(params[:version_id])) | 
					
						
							|  |  |  |       attachments = attach_files(container, params[:attachments]) | 
					
						
							|  |  |  |       if !attachments.empty? && Setting.notified_events.include?('file_added') | 
					
						
							|  |  |  |         Mailer.deliver_attachments_added(attachments) | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |       redirect_to :controller => 'projects', :action => 'list_files', :id => @project | 
					
						
							| 
									
										
										
										
											2008-12-09 18:00:27 +00:00
										 |  |  |       return | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |     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 | 
					
						
							| 
									
										
										
										
											2008-12-24 10:03:13 +00:00
										 |  |  |     sort_init 'filename', 'asc' | 
					
						
							|  |  |  |     sort_update 'filename' => "#{Attachment.table_name}.filename", | 
					
						
							|  |  |  |                 'created_on' => "#{Attachment.table_name}.created_on", | 
					
						
							|  |  |  |                 'size' => "#{Attachment.table_name}.filesize", | 
					
						
							|  |  |  |                 'downloads' => "#{Attachment.table_name}.downloads" | 
					
						
							|  |  |  |                  | 
					
						
							| 
									
										
										
										
											2008-12-09 18:00:27 +00:00
										 |  |  |     @containers = [ Project.find(@project.id, :include => :attachments, :order => sort_clause)] | 
					
						
							|  |  |  |     @containers += @project.versions.find(:all, :include => :attachments, :order => sort_clause).sort.reverse | 
					
						
							| 
									
										
										
										
											2008-04-06 10:53:18 +00:00
										 |  |  |     render :layout => !request.xhr? | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   end | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  |   # Show changelog for @project | 
					
						
							|  |  |  |   def changelog | 
					
						
							| 
									
										
										
										
											2007-11-20 20:29:03 +00:00
										 |  |  |     @trackers = @project.trackers.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 | 
					
						
							| 
									
										
										
										
											2007-11-20 20:29:03 +00:00
										 |  |  |     @trackers = @project.trackers.find(:all, :conditions => ["is_in_roadmap=?", true]) | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2008-03-05 13:44:08 +00:00
										 |  |  |     @days = Setting.activity_days_default.to_i | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     if params[:from] | 
					
						
							| 
									
										
										
										
											2008-11-09 17:53:30 +00:00
										 |  |  |       begin; @date_to = params[:from].to_date + 1; rescue; end | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-05 13:44:08 +00:00
										 |  |  |     @date_to ||= Date.today + 1
 | 
					
						
							|  |  |  |     @date_from = @date_to - @days | 
					
						
							| 
									
										
										
										
											2008-07-27 17:54:09 +00:00
										 |  |  |     @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1') | 
					
						
							| 
									
										
										
										
											2008-12-01 17:27:44 +00:00
										 |  |  |     @author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id])) | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2008-11-30 12:12:06 +00:00
										 |  |  |     @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project,  | 
					
						
							|  |  |  |                                                              :with_subprojects => @with_subprojects, | 
					
						
							|  |  |  |                                                              :author => @author) | 
					
						
							| 
									
										
										
										
											2008-07-27 17:54:09 +00:00
										 |  |  |     @activity.scope_select {|t| !params["show_#{t}"].nil?} | 
					
						
							| 
									
										
										
										
											2008-11-30 12:12:06 +00:00
										 |  |  |     @activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty? | 
					
						
							| 
									
										
										
										
											2007-03-23 15:58:02 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-27 17:54:09 +00:00
										 |  |  |     events = @activity.events(@date_from, @date_to) | 
					
						
							| 
									
										
										
										
											2007-08-29 16:52:35 +00:00
										 |  |  |      | 
					
						
							|  |  |  |     respond_to do |format| | 
					
						
							| 
									
										
										
										
											2008-07-27 17:54:09 +00:00
										 |  |  |       format.html {  | 
					
						
							|  |  |  |         @events_by_day = events.group_by(&:event_date) | 
					
						
							|  |  |  |         render :layout => false if request.xhr? | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2008-07-06 13:57:10 +00:00
										 |  |  |       format.atom { | 
					
						
							| 
									
										
										
										
											2008-11-30 12:12:06 +00:00
										 |  |  |         title = l(:label_activity) | 
					
						
							|  |  |  |         if @author | 
					
						
							|  |  |  |           title = @author.name | 
					
						
							|  |  |  |         elsif @activity.scope.size == 1
 | 
					
						
							|  |  |  |           title = l("label_#{@activity.scope.first.singularize}_plural") | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2008-07-27 17:54:09 +00:00
										 |  |  |         render_feed(events, :title => "#{@project || Setting.app_title}: #{title}") | 
					
						
							| 
									
										
										
										
											2008-07-06 13:57:10 +00:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2007-08-29 16:52:35 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2008-11-30 12:12:06 +00:00
										 |  |  |      | 
					
						
							|  |  |  |   rescue ActiveRecord::RecordNotFound | 
					
						
							|  |  |  |     render_404 | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   end | 
					
						
							|  |  |  |    | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  |    | 
					
						
							| 
									
										
										
										
											2008-03-11 19:33:38 +00:00
										 |  |  |   def find_optional_project | 
					
						
							|  |  |  |     return true unless params[:id] | 
					
						
							|  |  |  |     @project = Project.find(params[:id]) | 
					
						
							|  |  |  |     authorize | 
					
						
							|  |  |  |   rescue ActiveRecord::RecordNotFound | 
					
						
							|  |  |  |     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 | 
					
						
							| 
									
										
										
										
											2006-06-28 18:11:03 +00:00
										 |  |  | end |