| 
									
										
										
										
											2011-07-09 08:56:07 +00:00
										 |  |  | # Redmine - project management software | 
					
						
							| 
									
										
										
										
											2017-06-25 08:40:31 +00:00
										 |  |  | # Copyright (C) 2006-2017  Jean-Philippe Lang | 
					
						
							| 
									
										
										
										
											2011-07-09 08:56:07 +00:00
										 |  |  | # | 
					
						
							|  |  |  | # This program is free software; you can redistribute it and/or | 
					
						
							|  |  |  | # modify it under the terms of the GNU General Public License | 
					
						
							|  |  |  | # as published by the Free Software Foundation; either version 2 | 
					
						
							|  |  |  | # of the License, or (at your option) any later version. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-27 14:05:54 +00:00
										 |  |  | class ActivitiesController < ApplicationController | 
					
						
							|  |  |  |   menu_item :activity | 
					
						
							| 
									
										
										
										
											2017-06-26 20:41:12 +00:00
										 |  |  |   before_action :find_optional_project_by_id, :authorize_global | 
					
						
							| 
									
										
										
										
											2011-07-09 08:56:07 +00:00
										 |  |  |   accept_rss_auth :index | 
					
						
							| 
									
										
										
										
											2010-08-27 14:05:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   def index | 
					
						
							|  |  |  |     @days = Setting.activity_days_default.to_i | 
					
						
							| 
									
										
										
										
											2011-05-18 07:12:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-27 14:05:54 +00:00
										 |  |  |     if params[:from] | 
					
						
							|  |  |  |       begin; @date_to = params[:from].to_date + 1; rescue; end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-07 10:42:22 +00:00
										 |  |  |     @date_to ||= User.current.today + 1
 | 
					
						
							| 
									
										
										
										
											2010-08-27 14:05:54 +00:00
										 |  |  |     @date_from = @date_to - @days | 
					
						
							|  |  |  |     @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1') | 
					
						
							| 
									
										
										
										
											2014-12-05 12:38:34 +00:00
										 |  |  |     if params[:user_id].present? | 
					
						
							|  |  |  |       @author = User.active.find(params[:user_id]) | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2011-05-18 07:12:04 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, | 
					
						
							| 
									
										
										
										
											2010-08-27 14:05:54 +00:00
										 |  |  |                                                              :with_subprojects => @with_subprojects, | 
					
						
							|  |  |  |                                                              :author => @author) | 
					
						
							| 
									
										
										
										
											2015-10-15 19:06:22 +00:00
										 |  |  |     pref = User.current.pref | 
					
						
							| 
									
										
										
										
											2010-08-27 14:05:54 +00:00
										 |  |  |     @activity.scope_select {|t| !params["show_#{t}"].nil?} | 
					
						
							| 
									
										
										
										
											2015-10-15 19:06:22 +00:00
										 |  |  |     if @activity.scope.present? | 
					
						
							|  |  |  |       if params[:submit].present? | 
					
						
							|  |  |  |         pref.activity_scope = @activity.scope | 
					
						
							|  |  |  |         pref.save | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       if @author.nil? | 
					
						
							|  |  |  |         scope = pref.activity_scope & @activity.event_types | 
					
						
							|  |  |  |         @activity.scope = scope.present? ? scope : :default | 
					
						
							|  |  |  |       else | 
					
						
							|  |  |  |         @activity.scope = :all | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2010-08-27 14:05:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     events = @activity.events(@date_from, @date_to) | 
					
						
							| 
									
										
										
										
											2011-05-18 07:12:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-09 10:53:17 +00:00
										 |  |  |     if events.empty? || stale?(:etag => [@activity.scope, @date_to, @date_from, @with_subprojects, @author, events.first, events.size, User.current, current_language]) | 
					
						
							| 
									
										
										
										
											2010-08-27 14:05:54 +00:00
										 |  |  |       respond_to do |format| | 
					
						
							| 
									
										
										
										
											2011-05-18 07:12:04 +00:00
										 |  |  |         format.html { | 
					
						
							| 
									
										
										
										
											2012-05-26 12:07:56 +00:00
										 |  |  |           @events_by_day = events.group_by {|event| User.current.time_to_date(event.event_datetime)} | 
					
						
							| 
									
										
										
										
											2010-08-27 14:05:54 +00:00
										 |  |  |           render :layout => false if request.xhr? | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         format.atom { | 
					
						
							|  |  |  |           title = l(:label_activity) | 
					
						
							|  |  |  |           if @author | 
					
						
							|  |  |  |             title = @author.name | 
					
						
							|  |  |  |           elsif @activity.scope.size == 1
 | 
					
						
							|  |  |  |             title = l("label_#{@activity.scope.first.singularize}_plural") | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |           render_feed(events, :title => "#{@project || Setting.app_title}: #{title}") | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2011-05-18 07:12:04 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-27 14:05:54 +00:00
										 |  |  |   rescue ActiveRecord::RecordNotFound | 
					
						
							|  |  |  |     render_404 | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |