diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 79c498dbf..e22b02792 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -483,8 +483,96 @@ class UsersController < ApplicationController render :layout=>nil end + # def user_course_activities + # @list = [] + # lastid = nil + # if params[:lastid]!=nil && !params[:lastid].empty? + # lastid = params[:lastid]; + # end + # + # user_ids = [] + # if @user == User.current + # watcher = User.watched_by(@user) + # watcher.push(User.current) + # user_ids = watcher.map{|x| x.id} + # else + # user_ids << @user.id + # end + # + # query_rec_count = 8 + # query_times = 10 #query_times次没查到query_rec_count条记录就不查了 + # query_i = 0; + # while( true ) + # query_i = query_i+1 + # if(query_i>query_times) + # break + # end + # query = Activity.where(user_id: user_ids) + # if(lastid != nil) + # query = query.where("id < ?",lastid) + # end + # lastid,item_list = query_activities(query,'course'); + # for item in item_list + # @list << item + # if @list.count() >= query_rec_count + # break + # end + # end + # if @list.count() >= query_rec_count + # break + # end + # if lastid == nil + # break + # end + # end + # render :layout=>nil + # end + # + # def user_project_activities + # @list = [] + # lastid = nil + # if params[:lastid]!=nil && !params[:lastid].empty? + # lastid = params[:lastid]; + # end + # + # user_ids = [] + # if @user == User.current + # watcher = User.watched_by(@user) + # watcher.push(User.current) + # user_ids = watcher.map{|x| x.id} + # else + # user_ids << @user.id + # end + # + # query_rec_count = 8 + # query_times = 10 #query_times次没查到query_rec_count条记录就不查了 + # query_i = 0; + # while( true ) + # query_i = query_i+1 + # if(query_i>query_times) + # break + # end + # query = Activity.where(user_id: user_ids) + # if(lastid != nil) + # query = query.where("id < ?",lastid) + # end + # lastid,item_list = query_activities(query,'project'); + # for item in item_list + # @list << item + # if @list.count() >= query_rec_count + # break + # end + # end + # if @list.count() >= query_rec_count + # break + # end + # if lastid == nil + # break + # end + # end + # render :action=>'user_course_activities',:layout=>nil + # end def user_course_activities - @list = [] lastid = nil if params[:lastid]!=nil && !params[:lastid].empty? lastid = params[:lastid]; @@ -499,37 +587,16 @@ class UsersController < ApplicationController user_ids << @user.id end - query_rec_count = 8 - query_times = 10 #query_times次没查到query_rec_count条记录就不查了 - query_i = 0; - while( true ) - query_i = query_i+1 - if(query_i>query_times) - break - end - query = Activity.where(user_id: user_ids) - if(lastid != nil) - query = query.where("id < ?",lastid) - end - lastid,item_list = query_activities(query,'course'); - for item in item_list - @list << item - if @list.count() >= query_rec_count - break - end - end - if @list.count() >= query_rec_count - break - end - if lastid == nil - break - end + query = Activity.where(user_id: user_ids) + if(lastid != nil) + query = query.where("id < ?",lastid) end + @list = query_activities(query,'Course'); + render :layout=>nil end def user_project_activities - @list = [] lastid = nil if params[:lastid]!=nil && !params[:lastid].empty? lastid = params[:lastid]; @@ -544,32 +611,12 @@ class UsersController < ApplicationController user_ids << @user.id end - query_rec_count = 8 - query_times = 10 #query_times次没查到query_rec_count条记录就不查了 - query_i = 0; - while( true ) - query_i = query_i+1 - if(query_i>query_times) - break - end - query = Activity.where(user_id: user_ids) - if(lastid != nil) - query = query.where("id < ?",lastid) - end - lastid,item_list = query_activities(query,'project'); - for item in item_list - @list << item - if @list.count() >= query_rec_count - break - end - end - if @list.count() >= query_rec_count - break - end - if lastid == nil - break - end + query = Activity.where(user_id: user_ids) + if(lastid != nil) + query = query.where("id < ?",lastid) end + @list = query_activities(query,'Project'); + render :action=>'user_course_activities',:layout=>nil end diff --git a/app/helpers/activities_helper.rb b/app/helpers/activities_helper.rb index ede2ed78a..54f030e40 100644 --- a/app/helpers/activities_helper.rb +++ b/app/helpers/activities_helper.rb @@ -42,4 +42,30 @@ module ActivitiesHelper end sorted_events end + + def get_container_type(activity) + #问卷 + if activity.act_type == 'Poll' + return 'Course' + end + #注册 + if activity.act_type == 'Principal' + return 'Principal' + end + #留言 + if activity.act_type == 'JournalsForMessage' + return activity.act.jour.class.to_s + end + + # HomeworkCommon Issue Journal Message News + if activity.act.respond_to?('course') && activity.act.course + return 'Course' + end + if activity.act.respond_to?('project') && activity.act.project + return 'Project' + end + + # Contest Contestnotification + return 'Unknow' + end end diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index 2a1852807..4318abcf8 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -360,60 +360,77 @@ module UsersHelper end + # def query_activities(query,type) + # query_rec_count = 8 + # # query = query.where("act_type='JournalsForMessage'") + # #query = query.where("act_type not in (?)", ['JournalsForMessage','Message','HomeworkCommon','News','Issue','Journal','Poll']) + # list = query.order("id desc").limit(query_rec_count).all + # + # result = []; + # for item in list + # container = get_activity_container(item,type) + # if( activity_is_show(item,container) ) + # result << { :item=>item,:e=>container } + # end + # end + # return [lastid,result] + # end + # def get_activity_container activity,type + # e = nil; + # if type == 'Project' + # if activity.act_type == 'Poll' + # # 项目没有问卷 + # # e = Project.find_by_id(activity.act.polls_group_id) + # else + # e = activity.act.project if activity.act.respond_to?('project') + # end + # end + # if type == 'Course' + # if activity.act_type == 'Poll' + # e = Course.find_by_id(activity.act.polls_group_id) + # else + # e = activity.act.course if activity.act.respond_to?('course') + # end + # end + # + # return e; + # end def query_activities(query,type) - query_rec_count = 50 - query = query.where("act_type not in ('Contest','Contestnotifications','Principal')") - # query = query.where("act_type='JournalsForMessage'") - #query = query.where("act_type not in (?)", ['JournalsForMessage','Message','HomeworkCommon','News','Issue','Journal','Poll']) - list = query.order("id desc").limit(query_rec_count).all - if( list == nil || list.count() < query_rec_count ) - lastid = nil - else - lastid = list.last.id - end - + query = query.where("activity_container_type = ?",type) + list = query.order("id desc").limit(8).all result = []; for item in list container = get_activity_container(item,type) - if( activity_is_show(item,container) ) - result << { :item=>item,:e=>container } - end + result << { :item=>item,:e=>container } end - return [lastid,result] + return result end def get_activity_container activity,type - e = nil; - if type == 'project' - if activity.act_type == 'Poll' - # 项目没有问卷 - # e = Project.find_by_id(activity.act.polls_group_id) - else - e = activity.act.project if activity.act.respond_to?('project') - end + if type == 'Project' + return activity.act.project if activity.act.respond_to?('project') end - if type == 'course' + if type == 'Course' if activity.act_type == 'Poll' - e = Course.find_by_id(activity.act.polls_group_id) - else - e = activity.act.course if activity.act.respond_to?('course') + return Course.find_by_id(activity.act.polls_group_id) end + return activity.act.course if activity.act.respond_to?('course') end - - return e; + return nil; end - def activity_is_show(activity,e) - if(!e) - return false - end - if activity.user_id == User.current.id - return true - end - if( e.visible? ) - return true - end - return false - end + # def activity_is_show(activity,e) + # if(!e) + # return false + # end + # + # if activity.user_id == User.current.id + # return true + # end + # if( e.visible? ) + # return true + # end + # return false + # end def get_activity_act_showname(activity) case activity.act_type when "HomeworkCommon" @@ -450,7 +467,21 @@ module UsersHelper return activity.act.created_on end end + def get_activity_container_url e + if !e.visible? + return "javascript:;" + end + + if e.class.to_s == 'Course' + return url_for(:controller => 'courses', :action=>"show", :id=>e.id, :host=>Setting.host_course) + end + return url_for(:controller => 'projects', :action=>"show", :id=>e.id, :host=>Setting.host_name) + end def get_activity_url(activity,e) + if !e.visible? + return "javascript:;" + end + case activity.act_type # when "Contest" # when "Contestnotification" diff --git a/app/models/activity.rb b/app/models/activity.rb index 5ec778641..22aa533d2 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -7,4 +7,12 @@ class Activity < ActiveRecord::Base validates :user_id, presence: true include Trustie::Cache::ClearCourseEvent + + before_create :set_container_type_val + + #helper :activities + include ActivitiesHelper + def set_container_type_val + self.activity_container_type = get_container_type(self) + end end diff --git a/app/views/users/user_course_activities.html.erb b/app/views/users/user_course_activities.html.erb index 8a9996c41..98de0ea11 100644 --- a/app/views/users/user_course_activities.html.erb +++ b/app/views/users/user_course_activities.html.erb @@ -1,12 +1,17 @@ <% for rec in @list %>
- <%= rec[:e].name %> + +
  • <%= rec[:e].name %>
  • + <% if( rec[:e].is_public == false || rec[:e].is_public == 0 ) %> + 私有 + <% end %> +
    <%= rec[:item].user.show_name %> <%= get_activity_opt(rec[:item],rec[:e]) %> <%= get_activity_act_showname(rec[:item]).html_safe %> - <%= time_tag(get_activity_act_createtime(rec[:item])).html_safe %>前 + <%= time_tag(get_activity_act_createtime(rec[:item])).html_safe %>
    <% end %> \ No newline at end of file diff --git a/app/views/users/user_feedback4show.html.erb b/app/views/users/user_feedback4show.html.erb index 9b1c502c8..c37311d88 100644 --- a/app/views/users/user_feedback4show.html.erb +++ b/app/views/users/user_feedback4show.html.erb @@ -16,7 +16,7 @@ <% if User.current.admin? || item.user.id == User.current.id %> item.id,:user_id=>item.user.id) %>" data-confirm="您确定要删除吗?" data-remote="true" data-method="delete" class="fl mt5 c_purple ml5">删除 <% end %> - <%= time_tag(item.created_on).html_safe %>前 + <%= time_tag(item.created_on).html_safe %>