@ -41,12 +41,12 @@ class UsersController < ApplicationController
before_filter :can_show_course , :only = > [ :user_courses , :user_homeworks ]
#edit has been deleted by huang, 2013-9-23
before_filter :find_user , :only = > [ :user_fanslist , :user_watchlist , :show , :edit , :update , :destroy , :edit_membership , :user_courses ,
:user_homeworks , :destroy_membership , :user_activities , :user_projects , :user_newfeedback , :user_comments ,
:watch_contests , :info , :watch_projects , :show_score , :topic_score_index , :project_score_index ,
:activity_score_index , :influence_score_index , :score_index , :show_new_score , :topic_new_score_index , :project_new_score_index ,
:activity_new_score_index , :influence_new_score_index , :score_new_index , :user_projects_index , :user_resource ,
:user_courses4show , :user_projects4show , :user_course_activities , :user_project_activities , :user_feedback4show , :user_visitorlist , :user_messages , :edit_brief_introduction ,
:user_import_homeworks , :user_search_homeworks , :user_import_resource ]
:user_homeworks , :destroy_membership , :user_activities , :user_projects , :user_newfeedback , :user_comments ,
:watch_contests , :info , :watch_projects , :show_score , :topic_score_index , :project_score_index ,
:activity_score_index , :influence_score_index , :score_index , :show_new_score , :topic_new_score_index , :project_new_score_index ,
:activity_new_score_index , :influence_new_score_index , :score_new_index , :user_projects_index , :user_resource ,
:user_courses4show , :user_projects4show , :user_course_activities , :user_project_activities , :user_feedback4show , :user_visitorlist , :user_messages , :edit_brief_introduction ,
:user_import_homeworks , :user_search_homeworks , :user_import_resource ]
before_filter :auth_user_extension , only : :show
#before_filter :rest_user_score, only: :show
#before_filter :select_entry, only: :user_projects
@ -218,7 +218,7 @@ class UsersController < ApplicationController
end
# end
##added by fq
##added by fq
def watch_bids
# cond = 'bids.reward_type <> 1'
# @bids = Bid.watched_by(@user).where('reward_type = ?', 1) # added by huang
@ -281,7 +281,7 @@ class UsersController < ApplicationController
unless User . current . admin?
if ! @user . active? || ( @user != User . current && @memberships . empty? && events . empty? )
render_404
return
return
end
end
@ -342,6 +342,24 @@ class UsersController < ApplicationController
end
end
def new_user_commit_homework
@user = User . current
@homework = HomeworkCommon . find ( params [ :homework_id ] )
@student_work = @homework . student_works . where ( user_id : User . current . id ) . first
if @student_work . nil?
@student_work = StudentWork . new
end
respond_to do | format |
format . js
format . html { render :layout = > 'new_base_user' }
end
end
def user_commit_homework
flash [ :notice ] = l ( :notice_successful_create )
redirect_to user_homeworks_user_path ( User . current )
end
def user_new_homework
if params [ :homework_common ]
homework = HomeworkCommon . new
@ -349,7 +367,7 @@ class UsersController < ApplicationController
homework . description = params [ :homework_common ] [ :description ]
homework . end_time = params [ :homework_common ] [ :end_time ] || Time . now
homework . publish_time = Time . now
homework . homework_type = 1
homework . homework_type = params [ :homework_type ] . to_i || 1
homework . late_penalty = 2
homework . user_id = User . current . id
homework . course_id = params [ :course_id ]
@ -358,17 +376,36 @@ class UsersController < ApplicationController
render_attachment_warning_if_needed ( homework )
#匿评作业相关属性
homework_detail_manual = HomeworkDetailManual . new
homework_detail_manual . ta_proportion = params [ :ta_proportion ] || 0 . 6
homework_detail_manual . comment_status = 1
homework_detail_manual . evaluation_start = Time . now
homework_detail_manual . evaluation_end = Time . now
homework_detail_manual . evaluation_num = params [ :evaluation_num ] || 3
homework_detail_manual . absence_penalty = 2
homework . homework_detail_manual = homework_detail_manual
if homework . homework_type == 1
homework_detail_manual = HomeworkDetailManual . new
homework_detail_manual . ta_proportion = params [ :ta_proportion ] || 0 . 6
homework_detail_manual . comment_status = 1
homework_detail_manual . evaluation_start = Time . now
homework_detail_manual . evaluation_end = Time . now
homework_detail_manual . evaluation_num = params [ :evaluation_num ] || 3
homework_detail_manual . absence_penalty = 2
homework . homework_detail_manual = homework_detail_manual
else
homework_detail_programing = HomeworkDetailPrograming . new
homework . homework_detail_programing = homework_detail_programing
homework_detail_programing . ta_proportion = params [ :ta_proportion ] || 0 . 6
homework_detail_programing . language = params [ :program ] [ :language ] . to_i
inputs = params [ :program ] [ :input ]
if Array === inputs
inputs . each_with_index do | val , i |
homework . homework_tests << HomeworkTest . new (
input : val ,
output : params [ :program ] [ :output ] [ i ]
)
end
end
end
if homework . save
homework_detail_manual . save if homework_detail_manual
homework_detail_programing . save if homework_detail_programing
redirect_to user_homeworks_user_path ( User . current . id )
end
end
@ -376,9 +413,102 @@ class UsersController < ApplicationController
#用户从资源库导入资源到作业
def user_import_resource
user_course_ids = User . current . courses . map { | c | c . id } #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源
@user = User . current
user_course_ids = @user . courses . map { | c | c . id } #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源
@attachments = Attachment . where ( " (author_id = #{ params [ :id ] } and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) " +
" or (container_type = 'Course' and container_id in ( #{ user_course_ids . empty? ? '0' : user_course_ids . join ( ',' ) } )) " ) . order ( " created_on desc " )
@type = params [ :type ]
@homework_id = params [ :homework_id ]
@limit = 7
@is_remote = true
@atta_count = @attachments . count
@atta_pages = Paginator . new @atta_count , @limit , params [ 'page' ] || 1
@offset || = @atta_pages . offset
#@curse_attachments_all = @all_attachments[@offset, @limit]
@attachments = paginateHelper @attachments , 7
respond_to do | format |
format . js
end
end
#引入资源列表根据类型过滤
def user_resource_type
if User . current . id . to_i != params [ :id ] . to_i
render_403
return
end
if ( params [ :type ] . blank? || params [ :type ] == " 1 " ) #全部
user_course_ids = User . current . courses . map { | c | c . id } #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源
@attachments = Attachment . where ( " (author_id = #{ params [ :id ] } and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) " +
" or (container_type = 'Course' and container_id in ( #{ user_course_ids . empty? ? '0' : user_course_ids . join ( ',' ) } )) " ) . order ( " created_on desc " )
elsif params [ :type ] == " 2 " #课程资源
user_course_ids = User . current . courses . map { | c | c . id }
@attachments = Attachment . where ( " (author_id = #{ params [ :id ] } and container_type = 'Course') or (container_type = 'Course' and container_id in ( #{ user_course_ids . empty? ? '0' : user_course_ids . join ( ',' ) } )) " ) . order ( " created_on desc " )
elsif params [ :type ] == " 3 " #项目资源
@attachments = Attachment . where ( " author_id = #{ params [ :id ] } and container_type = 'Project' " ) . order ( " created_on desc " )
elsif params [ :type ] == " 4 " #附件
@attachments = Attachment . where ( " author_id = #{ params [ :id ] } and container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon') " ) . order ( " created_on desc " )
elsif params [ :type ] == " 5 " #用户资源
@attachments = Attachment . where ( " author_id = #{ params [ :id ] } and container_type = 'Principal' " ) . order ( " created_on desc " )
end
@type = params [ :type ]
@limit = 7
@is_remote = true
@atta_count = @attachments . count
@atta_pages = Paginator . new @atta_count , @limit , params [ 'page' ] || 1
@offset || = @atta_pages . offset
#@curse_attachments_all = @all_attachments[@offset, @limit]
@attachments = paginateHelper @attachments , 7
respond_to do | format |
format . js
end
end
#引入资源列表根据关键词过滤
def user_ref_resource_search
search = params [ :search ] . to_s . strip . downcase
if ( params [ :type ] . blank? || params [ :type ] == " 1 " ) #全部
user_course_ids = User . current . courses . map { | c | c . id } #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 取交集并查询
@attachments = Attachment . where ( " ((author_id = #{ params [ :id ] } and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) " +
" or (container_type = 'Course' and container_id in ( #{ user_course_ids . empty? ? '0' : user_course_ids . join ( ',' ) } ))) and (filename like '% #{ search } %') " ) . order ( " created_on desc " )
elsif params [ :type ] == " 2 " #课程资源
user_course_ids = User . current . courses . map { | c | c . id }
@attachments = Attachment . where ( " (author_id = #{ params [ :id ] } and container_type = 'Course') or (container_type = 'Course' and container_id in ( #{ user_course_ids . empty? ? '0' : user_course_ids . join ( ',' ) } )) and (filename like '% #{ search } %') " ) . order ( " created_on desc " )
elsif params [ :type ] == " 3 " #项目资源
@attachments = Attachment . where ( " author_id = #{ params [ :id ] } and container_type = 'Project' and (filename like '% #{ search } %') " ) . order ( " created_on desc " )
elsif params [ :type ] == " 4 " #附件
@attachments = Attachment . where ( " author_id = #{ params [ :id ] } and container_type in('Project','Issue','Document','Message','News','StudentWorkScore','HomewCommon') and (filename like '% #{ search } %') " ) . order ( " created_on desc " )
elsif params [ :type ] == " 5 " #用户资源
@attachments = Attachment . where ( " author_id = #{ params [ :id ] } and container_type = 'Principal' and (filename like '% #{ search } %') " ) . order ( " created_on desc " )
end
@type = params [ :type ]
@limit = 7
@is_remote = true
@atta_count = @attachments . count
@atta_pages = Paginator . new @atta_count , @limit , params [ 'page' ] || 1
@offset || = @atta_pages . offset
#@curse_attachments_all = @all_attachments[@offset, @limit]
@attachments = paginateHelper @attachments , 7
respond_to do | format |
format . js
end
end
#将资源批量引入
def import_resources_to_homework
@attachments = [ ]
unless params [ :checkbox1 ] . nil? || params [ :checkbox1 ] . blank?
params [ :checkbox1 ] . each do | id |
atta = Attachment . find ( id )
att_copy = atta . copy
att_copy . container_id = nil
att_copy . container_type = nil
att_copy . copy_from = atta . id
att_copy . save
@attachments << att_copy
end
end
respond_to do | format |
format . js
end
@ -440,16 +570,16 @@ class UsersController < ApplicationController
sort_update %w( login firstname lastname mail admin created_on last_login_on )
case params [ :format ]
when 'xml' , 'json'
@offset , @limit = api_offset_and_limit ( { :limit = > 15 } )
else
@limit = 15
when 'xml' , 'json'
@offset , @limit = api_offset_and_limit ( { :limit = > 15 } )
else
@limit = 15
end
# retrieve all users
# 先内连一下statuses 保证排序之后数量一致
scope = User . visible .
joins ( " INNER JOIN user_statuses ON users.id = user_statuses.user_id " )
joins ( " INNER JOIN user_statuses ON users.id = user_statuses.user_id " )
# unknow
scope = scope . in_group ( params [ :group_id ] ) if params [ :group_id ] . present?
@ -460,29 +590,29 @@ class UsersController < ApplicationController
# users classify
case params [ :user_sort_type ]
when '0'
# 创建时间排序
@s_type = 0
@users = scope . reorder ( 'users.created_on DESC' )
when '1'
# 活跃度排序, 就是所谓的得分情况
@s_type = 1
@users = scope .
joins ( " LEFT JOIN option_numbers ON users.id = option_numbers.user_id and option_numbers.score_type = 1 " ) .
reorder ( 'option_numbers.total_score DESC' )
when '2'
# 粉丝数排序
@s_type = 2
@users = scope .
#joins("INNER JOIN user_statuses ON users.id = user_statuses.user_id").
reorder ( 'user_statuses.watchers_count DESC' )
when '0'
# 创建时间排序
@s_type = 0
@users = scope . reorder ( 'users.created_on DESC' )
when '1'
# 活跃度排序, 就是所谓的得分情况
@s_type = 1
@users = scope .
joins ( " LEFT JOIN option_numbers ON users.id = option_numbers.user_id and option_numbers.score_type = 1 " ) .
reorder ( 'option_numbers.total_score DESC' )
when '2'
# 粉丝数排序
@s_type = 2
@users = scope .
#joins("INNER JOIN user_statuses ON users.id = user_statuses.user_id").
reorder ( 'user_statuses.watchers_count DESC' )
else
# 默认活跃度排序
@s_type = 1
@users = scope .
joins ( " LEFT JOIN option_numbers ON users.id = option_numbers.user_id and option_numbers.score_type = 1 " ) .
reorder ( 'option_numbers.total_score DESC' )
else
# 默认活跃度排序
@s_type = 1
@users = scope .
joins ( " LEFT JOIN option_numbers ON users.id = option_numbers.user_id and option_numbers.score_type = 1 " ) .
reorder ( 'option_numbers.total_score DESC' )
end
# limit and offset
@ -502,20 +632,20 @@ class UsersController < ApplicationController
sort_init 'login' , 'asc'
sort_update %w( login firstname lastname mail admin created_on last_login_on )
( redirect_to user_url , :notice = > l ( :label_sumbit_empty ) ; return ) if params [ :name ] . blank?
case params [ :format ]
case params [ :format ]
when 'xml' , 'json'
@offset , @limit = api_offset_and_limit ( { :limit = > 15 } )
else
@limit = 15 #per_page_option
end
#
#@status = params[:status] || 1
#has = {
# "show_changesets" => true
#}
# scope = User.logged.status(@status)
# @search_by = params[:search_by] ? params[:search_by][:id] : 0
# scope = scope.like(params[:name],@search_by) if params[:name].present?
end
#
#@status = params[:status] || 1
#has = {
# "show_changesets" => true
#}
# scope = User.logged.status(@status)
# @search_by = params[:search_by] ? params[:search_by][:id] : 0
# scope = scope.like(params[:name],@search_by) if params[:name].present?
@search_by = params [ :search_by ] ? params [ :search_by ] : 0
us = UsersService . new
@ -548,13 +678,13 @@ class UsersController < ApplicationController
def user_courses4show
@page = params [ :page ] . to_i + 1
@courses = @user . courses . visible . select ( " courses.*,(SELECT MAX(created_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a " ) . order ( " a desc " ) . limit ( 5 ) . offset ( @page * 5 )
end
end
#显示更多用户项目
def user_projects4show
@page = params [ :page ] . to_i + 1
@projects = @user . projects . visible . select ( " projects.*,(SELECT MAX(created_at) FROM `forge_activities` WHERE forge_activities.project_id = projects.id) AS a " ) . order ( " a desc " ) . limit ( 5 ) . offset ( @page * 5 )
end
end
def user_course_activities
lastid = nil
@ -631,9 +761,7 @@ class UsersController < ApplicationController
end
def show
@page = params [ :page ] ? params [ :page ] . to_i + 1 : 0
user_project_ids = @user . projects . visible . empty? ? " (-1) " : " ( " + @user . projects . visible . map { | project | project . id } . join ( " , " ) + " ) "
user_course_ids = @user . courses . visible . empty? ? " (-1) " : " ( " + @user . courses . visible . map { | course | course . id } . join ( " , " ) + " ) "
course_types = " ('Message','News','HomeworkCommon','poll') "
@ -654,7 +782,7 @@ class UsersController < ApplicationController
@user_activities = UserActivity . where ( " container_type = 'Project' and container_id in #{ user_project_ids } and act_type = 'Message' " ) . order ( 'created_at desc' ) . limit ( 10 ) . offset ( @page * 10 )
else
@user_activities = UserActivity . where ( " (container_type = 'Project' and container_id in #{ user_project_ids } and act_type in #{ project_types } ) or (container_type = 'Course' and container_id in #{ user_course_ids } ) and act_type in #{ course_types } " ) . order ( 'created_at desc' ) . limit ( 10 ) . offset ( @page * 10 )
end
end
else
@user_activities = UserActivity . where ( " (container_type = 'Project' and container_id in #{ user_project_ids } and act_type in #{ project_types } ) or (container_type = 'Course' and container_id in #{ user_course_ids } ) and act_type in #{ course_types } " ) . order ( 'created_at desc' ) . limit ( 10 ) . offset ( @page * 10 )
end
@ -672,124 +800,124 @@ class UsersController < ApplicationController
# Author lizanle
# Description type 1 :所有动态包括我关注的人 type 2:我的动态 type 3:关于我的回复
case params [ :type ]
when " 1 "
if @user == User . current
activity = Activity . where ( 'user_id = ?' , User . current . id ) . order ( 'id desc' )
@activity_count = activity . count
@activity_pages = Paginator . new @activity_count , pre_count , params [ 'page' ]
@activity = activity . offset ( @activity_pages . offset ) . limit ( @activity_pages . per_page ) . all
@state = 1
end
when " 2 "
message = [ ]
if @user == User . current
message = JournalsForMessage . reference_message ( @user . id )
message += Journal . reference_message ( @user . id )
end
@activity_count = message . size
@info_pages = Paginator . new @activity_count , pre_count , params [ 'page' ]
messages = message . sort { | x , y | y . created_on < = > x . created_on }
@message = messages [ @info_pages . offset , @info_pages . per_page ]
@state = 2
else
# Time 2015-02-04 10:50:49
# Author lizanle
# Description 所有动态
where_condition = nil ;
# where_condition = "act_type <> 'JournalsForMessage'"
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
activity = Activity . where ( where_condition ) . where ( user_id : user_ids ) . order ( 'id desc' )
permission = ! User . current . admin?
if permission
#Issue
act_ids = activity . where ( act_type : 'Issue' ) . select ( 'act_id' ) . map { | x | x . act_id }
project_ids = Issue . where ( id : act_ids ) . select ( 'distinct project_id' ) . map { | x | x . project_id }
p_ids = [ ]
Project . where ( id : project_ids ) . each do | x |
p_ids << x . id unless x . visible? ( User . current )
end
ids = [ ]
ids << Issue . where ( id : act_ids , project_id : p_ids ) . map { | x | x . id }
#HomeworkCommon
act_ids = activity . where ( act_type : 'HomeworkCommon' ) . select ( 'act_id' ) . map { | x | x . act_id }
course_ids = HomeworkCommon . where ( id : act_ids ) . select ( 'distinct course_id' ) . map { | x | x . course_id }
c_ids = [ ]
Course . where ( id : course_ids ) . each do | x |
c_ids << x . id unless x . is_public != 0 && User . current . member_of_course? ( x )
when " 1 "
if @user == User . current
activity = Activity . where ( 'user_id = ?' , User . current . id ) . order ( 'id desc' )
@activity_count = activity . count
@activity_pages = Paginator . new @activity_count , pre_count , params [ 'page' ]
@activity = activity . offset ( @activity_pages . offset ) . limit ( @activity_pages . per_page ) . all
@state = 1
end
ids << HomeworkCommon . where ( id : act_ids , course_id : c_ids ) . map { | x | x . id }
#Journal
act_ids = activity . where ( act_type : 'Journal' ) . select ( 'act_id' ) . map { | x | x . act_id }
project_ids = Journal . where ( id :act_ids , journalized_type : 'Project' ) . select ( 'distinct journalized_id' ) . map { | x | x . journalized_id }
p_ids = [ ]
Project . where ( id : project_ids ) . each do | x |
p_ids << x . id unless x . visible? ( User . current )
when " 2 "
message = [ ]
if @user == User . current
message = JournalsForMessage . reference_message ( @user . id )
message += Journal . reference_message ( @user . id )
end
ids << Journal . where ( id : act_ids , journalized_id : p_ids , journalized_type : 'Project' ) . map { | x | x . id }
#News
act_ids = activity . where ( act_type : 'News' ) . select ( 'act_id' ) . map { | x | x . act_id }
project_ids = News . where ( id : act_ids ) . select ( 'distinct project_id' ) . map { | x | x . project_id }
p_ids = [ ]
Project . where ( id : project_ids ) . each do | x |
p_ids << x . id unless x . visible? ( User . current )
@activity_count = message . size
@info_pages = Paginator . new @activity_count , pre_count , params [ 'page' ]
messages = message . sort { | x , y | y . created_on < = > x . created_on }
@message = messages [ @info_pages . offset , @info_pages . per_page ]
@state = 2
else
# Time 2015-02-04 10:50:49
# Author lizanle
# Description 所有动态
where_condition = nil ;
# where_condition = "act_type <> 'JournalsForMessage'"
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
ids << News . where ( id : act_ids , project_id : p_ids ) . map { | x | x . id }
activity = Activity . where ( where_condition ) . where ( user_id : user_ids ) . order ( 'id desc' )
permission = ! User . current . admin?
if permission
#Issue
act_ids = activity . where ( act_type : 'Issue' ) . select ( 'act_id' ) . map { | x | x . act_id }
project_ids = Issue . where ( id : act_ids ) . select ( 'distinct project_id' ) . map { | x | x . project_id }
p_ids = [ ]
Project . where ( id : project_ids ) . each do | x |
p_ids << x . id unless x . visible? ( User . current )
end
ids = [ ]
ids << Issue . where ( id : act_ids , project_id : p_ids ) . map { | x | x . id }
#HomeworkCommon
act_ids = activity . where ( act_type : 'HomeworkCommon' ) . select ( 'act_id' ) . map { | x | x . act_id }
course_ids = HomeworkCommon . where ( id : act_ids ) . select ( 'distinct course_id' ) . map { | x | x . course_id }
c_ids = [ ]
Course . where ( id : course_ids ) . each do | x |
c_ids << x . id unless x . is_public != 0 && User . current . member_of_course? ( x )
end
ids << HomeworkCommon . where ( id : act_ids , course_id : c_ids ) . map { | x | x . id }
#Journal
act_ids = activity . where ( act_type : 'Journal' ) . select ( 'act_id' ) . map { | x | x . act_id }
project_ids = Journal . where ( id :act_ids , journalized_type : 'Project' ) . select ( 'distinct journalized_id' ) . map { | x | x . journalized_id }
p_ids = [ ]
Project . where ( id : project_ids ) . each do | x |
p_ids << x . id unless x . visible? ( User . current )
end
ids << Journal . where ( id : act_ids , journalized_id : p_ids , journalized_type : 'Project' ) . map { | x | x . id }
#News
act_ids = activity . where ( act_type : 'News' ) . select ( 'act_id' ) . map { | x | x . act_id }
project_ids = News . where ( id : act_ids ) . select ( 'distinct project_id' ) . map { | x | x . project_id }
p_ids = [ ]
Project . where ( id : project_ids ) . each do | x |
p_ids << x . id unless x . visible? ( User . current )
end
ids << News . where ( id : act_ids , project_id : p_ids ) . map { | x | x . id }
project_ids = News . where ( id : act_ids ) . select ( 'distinct course_id' ) . map { | x | x . course_id }
c_ids = [ ]
Course . where ( id : project_ids ) . each do | x |
c_ids << x . id unless x . is_public != 0 && User . current . member_of_course? ( x )
end
ids << News . where ( id : act_ids , course_id : p_ids ) . map { | x | x . id }
#Message
act_ids = activity . where ( act_type : 'Message' ) . select ( 'act_id' ) . map { | x | x . act_id }
board_ids = Message . where ( id : act_ids ) . select ( 'distinct board_id' ) . map { | x | x . board_id }
project_ids = Board . where ( id : board_ids ) . select ( 'distinct project_id' ) . map { | x | x . project_id }
p_ids = [ ]
Project . where ( id : project_ids ) . each do | x |
p_ids << x . id unless x . visible? ( User . current )
end
ids << Message . where ( id : act_ids , board_id : p_ids ) . map { | x | x . id }
project_ids = News . where ( id : act_ids ) . select ( 'distinct course_id' ) . map { | x | x . course_id }
c_ids = [ ]
Course . where ( id : project_ids ) . each do | x |
c_ids << x . id unless x . is_public != 0 && User . current . member_of_course? ( x )
end
ids << News . where ( id : act_ids , course_id : p_ids ) . map { | x | x . id }
#Message
act_ids = activity . where ( act_type : 'Message' ) . select ( 'act_id' ) . map { | x | x . act_id }
board_ids = Message . where ( id : act_ids ) . select ( 'distinct board_id' ) . map { | x | x . board_id }
project_ids = Board . where ( id : board_ids ) . select ( 'distinct project_id' ) . map { | x | x . project_id }
p_ids = [ ]
Project . where ( id : project_ids ) . each do | x |
p_ids << x . id unless x . visible? ( User . current )
end
ids << Message . where ( id : act_ids , board_id : p_ids ) . map { | x | x . id }
project_ids = Board . where ( id : board_ids ) . select ( 'distinct course_id' ) . map { | x | x . course_id }
c_ids = [ ]
Course . where ( id : project_ids ) . each do | x |
c_ids << x . id unless x . is_public != 0 && User . current . member_of_course? ( x )
end
ids << Message . where ( id : act_ids , board_id : c_ids ) . map { | x | x . id }
project_ids = Board . where ( id : board_ids ) . select ( 'distinct course_id' ) . map { | x | x . course_id }
c_ids = [ ]
Course . where ( id : project_ids ) . each do | x |
c_ids << x . id unless x . is_public != 0 && User . current . member_of_course? ( x )
end
ids << Message . where ( id : act_ids , board_id : c_ids ) . map { | x | x . id }
logger . debug " filter ids #{ ids } "
logger . debug " filter ids #{ ids } "
activity = activity . where ( 'act_id not in (?)' , ids . flatten ) . order ( 'id desc' ) unless ids . flatten . empty?
end
activity = activity . where ( 'act_id not in (?)' , ids . flatten ) . order ( 'id desc' ) unless ids . flatten . empty?
end
# activity = activity.reject { |e|
# e.act.nil? ||
# (!User.current.admin? && !e.act.nil?
# (((e.act_type == "Issue") && !e.act.project.visible?(User.current)) ||
# (e.act_type == "Bid" && !e.act.courses.first.nil? && e.act.courses.first.is_public == 0 && !User.current.member_of_course?(e.act.courses.first)) ||
# (e.act_type == "Journal" && e.act.respond_to?("Project") && !e.act.project.visible?(User.current)) ||
# (e.act_type == "News" && ((!e.act.project.nil? && !e.act.project.visible?(User.current)) || (!e.act.course.nil? && e.act.course.is_public == 0 && !User.current.member_of_course?(e.act.course)))) ||
# (e.act_type == "Message" && !e.act.board.nil? && ((!e.act.board.project.nil? && !e.act.board.project.visible?(User.current)) || (!e.act.board.course.nil? && e.act.board.course.is_public == 0 && !User.current.member_of_course?(e.act.board.course))))))
# }
#
# activity = activity.reject { |e|
# e.act.nil? ||
# (!User.current.admin? && !e.act.nil?
# (((e.act_type == "Issue") && !e.act.project.visible?(User.current)) ||
# (e.act_type == "Bid" && !e.act.courses.first.nil? && e.act.courses.first.is_public == 0 && !User.current.member_of_course?(e.act.courses.first)) ||
# (e.act_type == "Journal" && e.act.respond_to?("Project") && !e.act.project.visible?(User.current)) ||
# (e.act_type == "News" && ((!e.act.project.nil? && !e.act.project.visible?(User.current)) || (!e.act.course.nil? && e.act.course.is_public == 0 && !User.current.member_of_course?(e.act.course)))) ||
# (e.act_type == "Message" && !e.act.board.nil? && ((!e.act.board.project.nil? && !e.act.board.project.visible?(User.current)) || (!e.act.board.course.nil? && e.act.board.course.is_public == 0 && !User.current.member_of_course?(e.act.board.course))))))
# }
#
@activity_count = activity . count
@activity_pages = Paginator . new @activity_count , pre_count , params [ 'page' ]
@activity = activity . slice ( @activity_pages . offset , @activity_pages . per_page )
@state = 0
@activity_count = activity . count
@activity_pages = Paginator . new @activity_count , pre_count , params [ 'page' ]
@activity = activity . slice ( @activity_pages . offset , @activity_pages . per_page )
@state = 0
end
if params [ :user ] . present?
@ -817,7 +945,7 @@ class UsersController < ApplicationController
if ! @user . active? #|| (@user != User.current && @memberships.empty? && events.empty?)
# redirect_to home_path
render_404
return
return
end
end
@ -849,7 +977,7 @@ class UsersController < ApplicationController
unless User . current . admin?
if ! @user . active?
render_404
return
return
end
end
@ -907,7 +1035,7 @@ class UsersController < ApplicationController
unless @user . id . nil?
#后台注册的用户默认权限为男性开发员
ue = UserExtensions . create ( :identity = > 3 ,
:gender = > 0 ,
:gender = > 0 ,
:user_id = > @user . id )
ue . save
end
@ -977,8 +1105,8 @@ class UsersController < ApplicationController
@user = User . find ( params [ :id ] )
#@user.save_attachments(params[:attachments],User.current)
# Container_type为Principal
Attachment . attach_filesex ( @user , params [ :attachments ] , params [ :attachment_type ] )
if ( params [ :type ] . nil? || params [ :type ] == " 1 " ) #全部
Attachment . attach_filesex ( @user , params [ :attachments ] , params [ :attachment_type ] )
if ( params [ :type ] . blank? || params [ :type ] == " 1 " ) #全部
if User . current . id . to_i == params [ :id ] . to_i
user_course_ids = User . current . courses . map { | c | c . id } #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源
@attachments = Attachment . where ( " (author_id = #{ params [ :id ] } and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) " +
@ -1033,14 +1161,14 @@ class UsersController < ApplicationController
# 删除用户资源,分为批量删除 和 单个删除,只能删除自己上传的资源
def user_resource_delete
if params [ :resource_id ] . present?
Attachment . where ( " author_id = #{ User . current . id } " ) . delete ( params [ :resource_id ] )
Attachment . where ( " author_id = #{ User . current . id } " ) . delete ( params [ :resource_id ] )
elsif params [ :checkbox1 ] . present?
params [ :checkbox1 ] . each do | id |
Attachment . where ( " author_id = #{ User . current . id } " ) . delete ( id )
params [ :checkbox1 ] . each do | id |
Attachment . where ( " author_id = #{ User . current . id } " ) . delete ( id )
end
end
if ( params [ :type ] . nil ? || params [ :type ] == " 1 " ) #全部
if ( params [ :type ] . blank ? || params [ :type ] == " 1 " ) #全部
if User . current . id . to_i == params [ :id ] . to_i
user_course_ids = User . current . courses . map { | c | c . id } #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源
@attachments = Attachment . where ( " (author_id = #{ params [ :id ] } and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) " +
@ -1087,17 +1215,17 @@ class UsersController < ApplicationController
@offset || = @atta_pages . offset
#@curse_attachments_all = @all_attachments[@offset, @limit]
@attachments = paginateHelper @attachments , 25
respond_to do | format |
format . js
end
respond_to do | format |
format . js
end
end
#根据id或者名称搜索教师或者助教为当前用户的课程
def search_user_course
@user = User . current
if ! params [ :search ] . nil?
@course = @user . courses . where ( " #{ Course . table_name } .id = #{ params [ :search ] . to_i } or #{ Course . table_name } .name like '% #{ params [ :search . to_s ] } %' " )
. select { | course | @user . allowed_to? ( :as_teacher , course ) }
@course = @user . courses . where ( " #{ Course . table_name } .id = #{ params [ :search ] . to_i } or #{ Course . table_name } .name like '% #{ params [ :search . to_s ] } %' " )
. select { | course | @user . allowed_to? ( :as_teacher , course ) }
else
@course = @user . courses
. select { | course | @user . allowed_to? ( :as_teacher , course ) }
@ -1129,28 +1257,28 @@ class UsersController < ApplicationController
# 将资源发送到对应的课程,分为发送单个,或者批量发送
def add_exist_file_to_course
@flag = true
if params [ :send_id ] . present?
if params [ :send_id ] . present?
send_id = params [ :send_id ]
ori = Attachment . find_by_id ( send_id )
course_ids = params [ :course_ids ]
if course_ids . nil?
@flag = false
end
unless course_ids . nil?
course_ids . each do | id |
next if ori . blank?
attach_copied_obj = ori . copy
attach_copied_obj . tag_list . add ( ori . tag_list ) # tag关联
attach_copied_obj . container = Course . find ( id )
attach_copied_obj . created_on = Time . now
attach_copied_obj . author_id = User . current . id
if attach_copied_obj . attachtype == nil
attach_copied_obj . attachtype = 4
end
attach_copied_obj . save
@save_message = attach_copied_obj . errors . full_messages
end
unless course_ids . nil?
course_ids . each do | id |
next if ori . blank?
attach_copied_obj = ori . copy
attach_copied_obj . tag_list . add ( ori . tag_list ) # tag关联
attach_copied_obj . container = Course . find ( id )
attach_copied_obj . created_on = Time . now
attach_copied_obj . author_id = User . current . id
if attach_copied_obj . attachtype == nil
attach_copied_obj . attachtype = 4
end
attach_copied_obj . save
@save_message = attach_copied_obj . errors . full_messages
end
end
elsif params [ :send_ids ] . present?
send_ids = params [ :send_ids ] . split ( " " )
course_ids = params [ :course_ids ]
@ -1177,8 +1305,20 @@ class UsersController < ApplicationController
end
end
else
@flag = false
@flag = false
end
user_course_ids = User . current . courses . map { | c | c . id } #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源
@attachments = Attachment . where ( " (author_id = #{ params [ :id ] } and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) " +
" or (container_type = 'Course' and container_id in ( #{ user_course_ids . empty? ? '0' : user_course_ids . join ( ',' ) } )) " ) . order ( " created_on desc " )
@type = params [ :type ]
@limit = 25
@user = User . current
@is_remote = true
@atta_count = @attachments . count
@atta_pages = Paginator . new @atta_count , @limit , params [ 'page' ] || 1
@offset || = @atta_pages . offset
#@curse_attachments_all = @all_attachments[@offset, @limit]
@attachments = paginateHelper @attachments , 25
respond_to do | format |
format . js
end
@ -1235,7 +1375,18 @@ class UsersController < ApplicationController
else
@flag = true
end
user_course_ids = User . current . courses . map { | c | c . id } #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源
@attachments = Attachment . where ( " (author_id = #{ params [ :id ] } and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) " +
" or (container_type = 'Course' and container_id in ( #{ user_course_ids . empty? ? '0' : user_course_ids . join ( ',' ) } )) " ) . order ( " created_on desc " )
@type = params [ :type ]
@limit = 25
@user = User . current
@is_remote = true
@atta_count = @attachments . count
@atta_pages = Paginator . new @atta_count , @limit , params [ 'page' ] || 1
@offset || = @atta_pages . offset
#@curse_attachments_all = @all_attachments[@offset, @limit]
@attachments = paginateHelper @attachments , 25
respond_to do | format |
format . js
end
@ -1243,15 +1394,15 @@ class UsersController < ApplicationController
# 资源预览
def resource_preview
preview_id = params [ :resource_id ]
@file = Attachment . find ( preview_id )
@preview_able = false ;
if %w( pdf pptx doc docx xls xlsx ) . any? { | x | @file . filename . downcase . end_with? ( x ) }
@preview_able = true ;
end
respond_to do | format |
format . js
end
preview_id = params [ :resource_id ]
@file = Attachment . find ( preview_id )
@preview_able = false ;
if %w( pdf pptx doc docx xls xlsx ) . any? { | x | @file . filename . downcase . end_with? ( x ) }
@preview_able = true ;
end
respond_to do | format |
format . js
end
end
# 重命名资源
@ -1291,7 +1442,7 @@ class UsersController < ApplicationController
def destroy_membership
@membership = Member . find ( params [ :membership_id ] )
if @membership . deletable?
@membership . destroy
@membership . destroy
end
respond_to do | format |
format . html { redirect_to edit_user_url ( @user , :tab = > 'memberships' ) }
@ -1306,31 +1457,31 @@ class UsersController < ApplicationController
@obj_flag = params [ :tag_for_save ] [ :object_flag ]
case @obj_flag
when '1' then
@obj = User . find_by_id ( @obj_id )
when '2' then
@obj = Project . find_by_id ( @obj_id )
when '3' then
@obj = Issue . find_by_id ( @obj_id )
when '4' then
# @obj = Bid.find_by_id(@obj_id)
when '5' then
@obj = Forum . find_by_id ( @obj_id )
when '6'
@obj = Attachment . find_by_id ( @obj_id )
when '7' then
@obj = Contest . find_by_id ( @obj_id )
when '8'
@obj = OpenSourceProject . find_by_id ( @obj_id )
when '9'
@obj = Course . find_by_id ( @obj_id )
else
@obj = nil
when '1' then
@obj = User . find_by_id ( @obj_id )
when '2' then
@obj = Project . find_by_id ( @obj_id )
when '3' then
@obj = Issue . find_by_id ( @obj_id )
when '4' then
# @obj = Bid.find_by_id(@obj_id)
when '5' then
@obj = Forum . find_by_id ( @obj_id )
when '6'
@obj = Attachment . find_by_id ( @obj_id )
when '7' then
@obj = Contest . find_by_id ( @obj_id )
when '8'
@obj = OpenSourceProject . find_by_id ( @obj_id )
when '9'
@obj = Course . find_by_id ( @obj_id )
else
@obj = nil
end
unless @obj . nil?
@obj . tag_list . add ( @tags . split ( " , " ) )
else
return
return
end
if @obj . save
logger . debug " #{ __FILE__ } : #{ __LINE__ } ===> #{ @obj . to_json } "
@ -1421,9 +1572,9 @@ class UsersController < ApplicationController
def update_extensions ( user_extensions )
user_extensions = params [ :user_extensions ]
unless user_extensions . nil?
user_extensions = UserExtensions . find_by_id ( user_extensions . user_id )
user_extensions = UserExtensions . find_by_id ( user_extensions . user_id )
# user_extensions.
# user_extensions.
end
end
@ -1450,7 +1601,7 @@ class UsersController < ApplicationController
render_403
return
end
if ( params [ :type ] . nil ? || params [ :type ] == " 1 " ) #全部
if ( params [ :type ] . blank ? || params [ :type ] == " 1 " ) #全部
if User . current . id . to_i == params [ :id ] . to_i
user_course_ids = User . current . courses . map { | c | c . id } #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源
@attachments = Attachment . where ( " (author_id = #{ params [ :id ] } and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) " +
@ -1514,9 +1665,9 @@ class UsersController < ApplicationController
else
user_course_ids = User . find ( params [ :id ] ) . courses . visible . map { | c | c . id } #如果课程私有资源,那么要看这个资源的课程是不是在 这个user的所有我可见的课程中
@attachments = Attachment . where ( " ((author_id = #{ params [ :id ] } and is_public = 1 and container_type in " +
" ('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) " +
" or (container_type = 'Course' and is_public = 1 and container_id in ( #{ user_course_ids . empty? ? '0' : user_course_ids . join ( ',' ) } )) ) " +
" and (filename like '% #{ search } %') " ) . order ( " created_on desc " )
" ('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) " +
" or (container_type = 'Course' and is_public = 1 and container_id in ( #{ user_course_ids . empty? ? '0' : user_course_ids . join ( ',' ) } )) ) " +
" and (filename like '% #{ search } %') " ) . order ( " created_on desc " )
end
elsif params [ :type ] == " 2 " #课程资源
if User . current . id . to_i == params [ :id ] . to_i
@ -1525,7 +1676,7 @@ class UsersController < ApplicationController
else
user_course_ids = User . find ( params [ :id ] ) . courses . visible . map { | c | c . id } #如果课程私有资源,那么要看这个资源的课程是不是在 这个user的所有我可见的课程中
@attachments = Attachment . where ( " ((author_id = #{ params [ :id ] } and is_public = 1 and container_type = 'Course') " +
" or (container_type = 'Course' and is_public = 1 and container_id in ( #{ user_course_ids . empty? ? '0' : user_course_ids . join ( ',' ) } )) ) " +
" or (container_type = 'Course' and is_public = 1 and container_id in ( #{ user_course_ids . empty? ? '0' : user_course_ids . join ( ',' ) } )) ) " +
" and (filename like '% #{ search } %') " ) . order ( " created_on desc " )
end
elsif params [ :type ] == " 3 " #项目资源