From 709629bcdf6e48670cbf0af0ee065922ba0d4109 Mon Sep 17 00:00:00 2001
From: kg
Date: Thu, 24 Apr 2014 09:13:06 +0800
Subject: [PATCH] add course activity
---
app/controllers/projects_controller.rb | 109 ++++++++++++++++++++++++-
app/views/projects/_course.html.erb | 9 ++
2 files changed, 117 insertions(+), 1 deletion(-)
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 3f771bf7..0c09fc1b 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -185,6 +185,109 @@ class ProjectsController < ApplicationController
@project_count = @projects_all.count
@project_pages = Paginator.new @project_count, per_page_option, params['page']
+
+#gcm activity count
+
+ @project_activity_count=Hash.new
+
+ @projects_all.each do |project|
+ @project_activity_count[project.id]=1
+ end
+ project_ids=@project_activity_count.keys()
+
+ days = Setting.activity_days_default.to_i
+ date_to ||= Date.today + 1
+ date_from = date_to - days-1.years
+
+#approach 1
+=begin
+
+ @projects_all.each do |project|
+ #issue_count
+ issues=Issue.where("project_id=?",project.id)
+ issue_count=0
+ issues.each do |issue|
+ issue_count+=issue.journals.count
+ end
+
+ #repository_count
+ repositories=Repository.where("project_id=?",project.id)
+ repository_count=0
+ repositories.each do |repository|
+ repository_count+=repository.changesets.count
+ end
+
+ #news_count
+ news_count=News.where("project_id=?",project.id).count
+ #document_count
+ document_count=Document.where("project_id=?",project.id).count
+ #file_count
+ file_count=Attachment.where("container_type='Project' AND container_id=?",project.id).count
+
+ #message_count
+ boards=Board.where("project_id=?",project.id)
+ message_count=0
+ boards.each do |board|
+ message_count+=board.messages.count
+ end
+
+ #time_entry_count
+ time_entry_count=TimeEntry.where("project_id=?",project.id).count
+
+ #sum
+ @project_activity_count[project.id.to_s]=issue_count+repository_count+news_count+document_count+file_count+message_count+time_entry_count
+
+ end
+=end
+#gcm
+
+#gcm approach 2
+
+ #issue_count
+ Issue.where(project_id: project_ids).where("updated_on>?",date_from).each do |issue|
+# @project_activity_count[issue.project_id.to_s]+=1
+ @project_activity_count[issue.project_id]+=issue.journals.where("created_on>?",date_from).count
+ end
+
+ #repository_count
+ Repository.where(project_id: project_ids).each do |repository|
+# @project_activity_count[repository.project_id.to_s]+=1
+ @project_activity_count[repository.project_id]+=repository.changesets.where("committed_on>?",date_from).count
+ end
+
+
+ #news_count
+ News.where(project_id: project_ids).where("created_on>?",date_from).each do |news|
+ @project_activity_count[news.project_id]+=1
+ end
+
+ #document_count
+ Document.where(project_id: project_ids).where("created_on>?",date_from).each do |document|
+ @project_activity_count[document.project_id]+=1
+ end
+
+ #file_count
+ Attachment.where(container_id: project_ids).where("container_type='Project' AND created_on>?",date_from).each do |attachment|
+ @project_activity_count[attachment.container_id]+=1
+ end
+
+ #message_count
+ Board.where(project_id: project_ids).take(1) do |board|
+# @project_activity_count[board.project_id]+=1
+ @project_activity_count[board.project_id]+=board.messages.where("updated_on>?",date_from).count
+ end
+
+ #time_entry_count
+ TimeEntry.where(project_id: project_ids).where("updated_on>?",date_from).each do |timeentry|
+ @project_activity_count[timeentry.project_id]+=1
+ end
+
+
+ @project_activity_count_array=@project_activity_count.values()
+ max_ac=@project_activity_count_array.max
+
+#gcm end
+
case params[:project_sort_type]
when '0'
@@ -575,7 +678,7 @@ class ProjectsController < ApplicationController
"show_journals_for_messages" => true
}
@date_to ||= Date.today + 1
- @date_from = @date_to - @days
+ @date_from = @date_to - @days-1.years
@with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
@author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id]))
# 决定显示所用用户或单个用户活动
@@ -880,4 +983,8 @@ class ProjectsController < ApplicationController
@users -= watched.watcher_users
end
end
+
+ def desc_sort_course_by_avtivity(projects,ids,activities)
+
+ end
end
diff --git a/app/views/projects/_course.html.erb b/app/views/projects/_course.html.erb
index f55a80db..02845137 100644
--- a/app/views/projects/_course.html.erb
+++ b/app/views/projects/_course.html.erb
@@ -45,6 +45,15 @@
<%= content_tag('span', link_to("#{@project.members.count}", member_project_path(@project)), :class => "info") %>
<%= content_tag('span', l(:label_x_member, :count => @project.members.count)) %>
+
+
+
+
+ <%= content_tag('span', link_to("#{@project_activity_count[@project.id]}", member_project_path(@project)), :class => "info") %>
+ <%= content_tag('span', l(:label_x_activity, :count => @project_activity_count[@project.id])) %>
+
+
+
<% if @project.project_type==Project::ProjectType_course %>