个人主页->动态

This commit is contained in:
yutao 2015-07-16 10:26:09 +08:00
parent 00c50d8114
commit 87ab758ec5
9 changed files with 238 additions and 98 deletions

View File

@ -483,8 +483,96 @@ class UsersController < ApplicationController
render :layout=>nil render :layout=>nil
end 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 def user_course_activities
@list = []
lastid = nil lastid = nil
if params[:lastid]!=nil && !params[:lastid].empty? if params[:lastid]!=nil && !params[:lastid].empty?
lastid = params[:lastid]; lastid = params[:lastid];
@ -499,37 +587,16 @@ class UsersController < ApplicationController
user_ids << @user.id user_ids << @user.id
end end
query_rec_count = 8 query = Activity.where(user_id: user_ids)
query_times = 10 #query_times次没查到query_rec_count条记录就不查了 if(lastid != nil)
query_i = 0; query = query.where("id < ?",lastid)
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 end
@list = query_activities(query,'Course');
render :layout=>nil render :layout=>nil
end end
def user_project_activities def user_project_activities
@list = []
lastid = nil lastid = nil
if params[:lastid]!=nil && !params[:lastid].empty? if params[:lastid]!=nil && !params[:lastid].empty?
lastid = params[:lastid]; lastid = params[:lastid];
@ -544,32 +611,12 @@ class UsersController < ApplicationController
user_ids << @user.id user_ids << @user.id
end end
query_rec_count = 8 query = Activity.where(user_id: user_ids)
query_times = 10 #query_times次没查到query_rec_count条记录就不查了 if(lastid != nil)
query_i = 0; query = query.where("id < ?",lastid)
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 end
@list = query_activities(query,'Project');
render :action=>'user_course_activities',:layout=>nil render :action=>'user_course_activities',:layout=>nil
end end

View File

@ -42,4 +42,30 @@ module ActivitiesHelper
end end
sorted_events sorted_events
end 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 end

View File

@ -360,60 +360,77 @@ module UsersHelper
end 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) def query_activities(query,type)
query_rec_count = 50 query = query.where("activity_container_type = ?",type)
query = query.where("act_type not in ('Contest','Contestnotifications','Principal')") list = query.order("id desc").limit(8).all
# 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
result = []; result = [];
for item in list for item in list
container = get_activity_container(item,type) container = get_activity_container(item,type)
if( activity_is_show(item,container) ) result << { :item=>item,:e=>container }
result << { :item=>item,:e=>container }
end
end end
return [lastid,result] return result
end end
def get_activity_container activity,type def get_activity_container activity,type
e = nil; if type == 'Project'
if type == 'project' return activity.act.project if activity.act.respond_to?('project')
end
if type == 'Course'
if activity.act_type == 'Poll' if activity.act_type == 'Poll'
# 项目没有问卷 return Course.find_by_id(activity.act.polls_group_id)
# e = Project.find_by_id(activity.act.polls_group_id)
else
e = activity.act.project if activity.act.respond_to?('project')
end end
return activity.act.course if activity.act.respond_to?('course')
end end
if type == 'course' return nil;
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 end
def activity_is_show(activity,e)
if(!e)
return false
end
if activity.user_id == User.current.id # def activity_is_show(activity,e)
return true # if(!e)
end # return false
if( e.visible? ) # end
return true #
end # if activity.user_id == User.current.id
return false # return true
end # end
# if( e.visible? )
# return true
# end
# return false
# end
def get_activity_act_showname(activity) def get_activity_act_showname(activity)
case activity.act_type case activity.act_type
when "HomeworkCommon" when "HomeworkCommon"
@ -450,7 +467,21 @@ module UsersHelper
return activity.act.created_on return activity.act.created_on
end end
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) def get_activity_url(activity,e)
if !e.visible?
return "javascript:;"
end
case activity.act_type case activity.act_type
# when "Contest" # when "Contest"
# when "Contestnotification" # when "Contestnotification"

View File

@ -7,4 +7,12 @@ class Activity < ActiveRecord::Base
validates :user_id, presence: true validates :user_id, presence: true
include Trustie::Cache::ClearCourseEvent 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 end

View File

@ -1,12 +1,17 @@
<% for rec in @list %> <% for rec in @list %>
<div class="users_courses_list" nhname="rec" data-id="<%= rec[:item].id %>"> <div class="users_courses_list" nhname="rec" data-id="<%= rec[:item].id %>">
<a href="<%= rec[:e].class.to_s == 'Course' ? course_path(rec[:e]) : project_path(rec[:e]) %>" class=" fl users_coursename ml5" title="<%= rec[:e].name %>"><%= rec[:e].name %></a> <a href="<%= get_activity_container_url(rec[:e]) %>" class=" fl users_coursename ml5" title="<%= rec[:e].name %>">
<li style="max-width:140px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;" class="fl"><%= rec[:e].name %></li>
<% if( rec[:e].is_public == false || rec[:e].is_public == 0 ) %>
<span class="img_private">私有</span>
<% end %>
</a>
<a href="<%= user_path(rec[:item].user.id) %>" class="c_orange course_name fl mr5" title="<%= rec[:item].user.show_name %>"><%= rec[:item].user.show_name %></a> <a href="<%= user_path(rec[:item].user.id) %>" class="c_orange course_name fl mr5" title="<%= rec[:item].user.show_name %>"><%= rec[:item].user.show_name %></a>
<span class="fl mr5 c_grey"><%= get_activity_opt(rec[:item],rec[:e]) %></span> <span class="fl mr5 c_grey"><%= get_activity_opt(rec[:item],rec[:e]) %></span>
<a href="<%= get_activity_url(rec[:item],rec[:e]) %>" <a href="<%= get_activity_url(rec[:item],rec[:e]) %>"
class="c_blue02 fl users_courses_txt hidepic" title="<%= get_activity_act_showname(rec[:item]) %>"> class="c_blue02 fl users_courses_txt hidepic" title="<%= get_activity_act_showname(rec[:item]) %>">
<%= get_activity_act_showname(rec[:item]).html_safe %> <%= get_activity_act_showname(rec[:item]).html_safe %>
</a> </a>
<span class="fr c_grey mr10"><%= time_tag(get_activity_act_createtime(rec[:item])).html_safe %></span> <span class="fr c_grey mr10"><%= time_tag(get_activity_act_createtime(rec[:item])).html_safe %></span>
</div> </div>
<% end %> <% end %>

View File

@ -16,7 +16,7 @@
<% if User.current.admin? || item.user.id == User.current.id %> <% if User.current.admin? || item.user.id == User.current.id %>
<a href="<%= url_for(:controller => 'words', :action=>"destroy", :object_id=>item.id,:user_id=>item.user.id) %>" data-confirm="您确定要删除吗?" data-remote="true" data-method="delete" class="fl mt5 c_purple ml5">删除</a> <a href="<%= url_for(:controller => 'words', :action=>"destroy", :object_id=>item.id,:user_id=>item.user.id) %>" data-confirm="您确定要删除吗?" data-remote="true" data-method="delete" class="fl mt5 c_purple ml5">删除</a>
<% end %> <% end %>
<span class="massage_time fr"><%= time_tag(item.created_on).html_safe %></span> <span class="massage_time fr"><%= time_tag(item.created_on).html_safe %></span>
<div class="cl"></div> <div class="cl"></div>
<div nhname='div_form' class="mt10 ml80" style="display:none;"> <div nhname='div_form' class="mt10 ml80" style="display:none;">
<form action="<%= url_for(:controller => 'words', :action => 'create_reply') %>" data-remote="true" method="post"> <form action="<%= url_for(:controller => 'words', :action => 'create_reply') %>" data-remote="true" method="post">

View File

@ -0,0 +1,9 @@
class AddActivityContainerTypeToActivities < ActiveRecord::Migration
def up
add_column :activities, :activity_container_type, :string, default: ''
end
def down
remove_column :activities, :activity_container_type
end
end

View File

@ -0,0 +1,13 @@
class ChangeActivitiesContainerType < ActiveRecord::Migration
def up
activities = Activity.where("activity_container_type = ''")
activities.each do |activity|
activity.set_container_type_val
activity.save
end
end
def down
Activity.where("activity_container_type <> ''").update_all(activity_container_type: '')
end
end

View File

@ -21,7 +21,8 @@ a:hover.pr_join_a{ background:#41a8c8;}
.pr_info_score a{ color:#ff7143;} .pr_info_score a{ color:#ff7143;}
.pr_info_score a:hover{ color:#64bdd9;} .pr_info_score a:hover{ color:#64bdd9;}
.img_private{ background:url(../images/project/img_project.png) 0 0 no-repeat; width:33px; height:16px; color:#fff; font-size:12px; padding-left:7px; } .img_private{ background:url(../images/new_project/img_project.png) 0 0 no-repeat; width:33px; height:16px; color:#fff; font-size:12px; padding-left:7px; }
/*.img_private{ background:url(../images/project/img_project.png) 0 0 no-repeat; width:33px; height:16px; color:#fff; font-size:12px; padding-left:7px; }*/
.info_foot_num{ color:#3ca5c6; } .info_foot_num{ color:#3ca5c6; }
.pr_info_foot{ color:#7f7f7f; margin-top:5px; } .pr_info_foot{ color:#7f7f7f; margin-top:5px; }
.info_foot_num:hover{ color:#2390b2;} .info_foot_num:hover{ color:#2390b2;}