From 2efb4833f20f9349af26fe8425ee890437290e92 Mon Sep 17 00:00:00 2001 From: yutao <283765470@qq.com> Date: Fri, 17 Jul 2015 15:07:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=B8=BB=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 28 +++++++++++++++++++------ app/helpers/users_helper.rb | 32 ++++++++++++++--------------- app/models/activity.rb | 1 + 3 files changed, 39 insertions(+), 22 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index d684240a4..cb2821a4b 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -82,6 +82,7 @@ class UsersController < ApplicationController # fq helper :words helper :project_score + helper :issues include UsersHelper def refresh_changests @@ -587,11 +588,21 @@ class UsersController < ApplicationController user_ids << @user.id end - query = Activity.where(user_id: user_ids) + query = Activity.joins("join courses c on c.id=#{Activity.table_name}.activity_container_id and #{Activity.table_name}.activity_container_type='Course'") + query = query.where("#{Activity.table_name}.user_id in (?)", user_ids) + if User.current != @user #看别人 + if @user.user_extensions!=nil && @user.user_extensions.identity == 0 #看老师 + query = query.joins("join members m on c.id=m.course_id and m.user_id = #{@user.id}") + query = query.joins("join member_roles r on m.id = r.member_id") + query = query.where("r.role_id in(3,7,9)") + end + query = query.where("c.is_public=1") + end if(lastid != nil) - query = query.where("id < ?",lastid) + query = query.where("#{Activity.table_name}.id < ?",lastid) end - @list = query_activities(query,'Course'); + query = query.order("#{Activity.table_name}.id desc") + @list = query_activities(query) render :layout=>nil end @@ -611,11 +622,16 @@ class UsersController < ApplicationController user_ids << @user.id end - query = Activity.where(user_id: user_ids) + query = Activity.joins("join projects c on c.id=#{Activity.table_name}.activity_container_id and #{Activity.table_name}.activity_container_type='Project'") + query = query.where(user_id: user_ids) + if User.current != @user #看别人 + query = query.where("c.is_public=1") + end if(lastid != nil) - query = query.where("id < ?",lastid) + query = query.where("#{Activity.table_name}.id < ?",lastid) end - @list = query_activities(query,'Project'); + query = query.order("#{Activity.table_name}.id desc") + @list = query_activities(query); render :action=>'user_course_activities',:layout=>nil end diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index ccdfd4d07..1926be0e8 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -395,27 +395,27 @@ module UsersHelper # # return e; # end - def query_activities(query,type) - query = query.where("activity_container_type = ?",type) - list = query.order("id desc").limit(8).all + def query_activities(query) + list = query.limit(8).all result = []; for item in list - container = get_activity_container(item,type) + container = get_activity_container(item) result << { :item=>item,:e=>container } end return result end - def get_activity_container activity,type - if type == 'Project' - return activity.act.project if activity.act.respond_to?('project') - end - if type == 'Course' - if activity.act_type == 'Poll' - return Course.find_by_id(activity.act.polls_group_id) - end - return activity.act.course if activity.act.respond_to?('course') - end - return nil; + def get_activity_container activity + return activity.activity_container + # if type == 'Project' + # return activity.act.project if activity.act.respond_to?('project') + # end + # if type == 'Course' + # if activity.act_type == 'Poll' + # return Course.find_by_id(activity.act.polls_group_id) + # end + # return activity.act.course if activity.act.respond_to?('course') + # end + # return nil; end # def activity_is_show(activity,e) @@ -447,7 +447,7 @@ module UsersHelper when "Issue" return activity.act.subject when "Journal" - return activity.act.notes + return details_to_strings(activity.act.details,true).to_s when "JournalsForMessage" return activity.act.notes when "Message" diff --git a/app/models/activity.rb b/app/models/activity.rb index ff3f06ff6..679cb9599 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -2,6 +2,7 @@ class Activity < ActiveRecord::Base attr_accessible :act_id, :act_type, :user_id belongs_to :act, :polymorphic => true belongs_to :user + belongs_to :activity_container, polymorphic: true validates :act_id, presence: true validates :act_type, presence: true validates :user_id, presence: true