diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb
index 7ff36c11d..90981b52a 100644
--- a/app/controllers/admin_controller.rb
+++ b/app/controllers/admin_controller.rb
@@ -32,18 +32,20 @@ class AdminController < ApplicationController
end
def projects
+=begin
@status = params[:status] || 1
- scope = Project.status(@status).order('id asc')
+ scope = Project.status(@status)
scope = scope.like(params[:name]) if params[:name].present?
- @projects = scope.where(project_type: Project::ProjectType_project).all
-
+ @projects = scope.where(project_type: Project::ProjectType_project).reorder("created_on desc").all
+=end
+ @projects = Project.like(@name).order('created_on desc')
render :action => "projects", :layout => false if request.xhr?
end
def courses
@name = params[:name]
- @courses = Course.like(@name)
+ @courses = Course.like(@name).order('created_at desc')
respond_to do |format|
format.html
end
diff --git a/app/controllers/files_controller.rb b/app/controllers/files_controller.rb
index ca37e445c..57cadc10b 100644
--- a/app/controllers/files_controller.rb
+++ b/app/controllers/files_controller.rb
@@ -406,10 +406,14 @@ class FilesController < ApplicationController
@container_type = 2
@containers = [ OrgSubfield.includes(:attachments).reorder(sort).find(@org_subfield.id)]
@organization = Organization.find(@containers.first.organization_id)
- show_attachments @containers
- @tag_list = attachment_tag_list @all_attachments
- @page = params[:page] || 1
- render :layout => 'base_org'
+ if @organization.is_public? or User.current.admin? or User.current.member_of_org?(@organization)
+ show_attachments @containers
+ @tag_list = attachment_tag_list @all_attachments
+ @page = params[:page] || 1
+ render :layout => 'base_org'
+ else
+ render_403
+ end
# @subfield = params[:org_subfield_id]
end
@@ -529,6 +533,7 @@ class FilesController < ApplicationController
if attachment.publish_time > Date.today
attachment.is_publish = 0
end
+ attachment.description = params[:description]
attachment.save
end
end
@@ -628,16 +633,14 @@ class FilesController < ApplicationController
end
def update_contributor_score(course, file )
- unless file.author.allowed_to?(:as_teacher, course)
- course_contributor_score = CourseContributorScore.where("course_id =? and user_id =?", course.id, file.author.id).first
- if course_contributor_score.nil?
- CourseContributorScore.create(:course_id => course.id, :user_id => file.author.id, :message_num => 0, :message_reply_num => 0,
- :news_reply_num => 0, :resource_num => 5, :journal_num => 0, :journal_reply_num => 0, :total_score => 5)
- else
- score = course_contributor_score.resource_num + 5
- total_score = course_contributor_score.total_score + 5
- course_contributor_score.update_attributes(:resource_num => score, :total_score => total_score)
- end
+ course_contributor_score = CourseContributorScore.where("course_id =? and user_id =?", course.id, file.author.id).first
+ if course_contributor_score.nil?
+ CourseContributorScore.create(:course_id => course.id, :user_id => file.author.id, :message_num => 0, :message_reply_num => 0,
+ :news_reply_num => 0, :resource_num => 5, :journal_num => 0, :journal_reply_num => 0, :total_score => 5)
+ else
+ score = course_contributor_score.resource_num + 5
+ total_score = course_contributor_score.total_score + 5
+ course_contributor_score.update_attributes(:resource_num => score, :total_score => total_score)
end
end
@@ -860,7 +863,15 @@ class FilesController < ApplicationController
q = "%#{@q.strip}%"
@result = find_org_subfield_attache q,@org_subfield,sort
@result = visable_attachemnts @result
- @result = @result.select{|attachment| attachment.tag_list.include?(@tag_name)} unless @tag_name.blank?
+ if params[:other]
+ @result = @result.select{|attachment|
+ attachment.tag_list.exclude?('软件') &&
+ attachment.tag_list.exclude?('媒体') &&
+ attachment.tag_list.exclude?('代码')
+ }
+ else
+ @result = @result.select{|attachment| attachment.tag_list.include?(@tag_name)} unless @tag_name.blank?
+ end
@searched_attach = paginateHelper @result,10
@tag_list = get_org_subfield_tag_list @org_subfield
diff --git a/app/controllers/org_subfields_controller.rb b/app/controllers/org_subfields_controller.rb
index 2a4bcf9c8..9337c5fd2 100644
--- a/app/controllers/org_subfields_controller.rb
+++ b/app/controllers/org_subfields_controller.rb
@@ -33,61 +33,65 @@ class OrgSubfieldsController < ApplicationController
domain = Secdomain.where("subname=?", request.subdomain).first
@organization = Organization.find(domain.pid)
end
- @org_subfield = OrgSubfield.find_by_sql("select distinct org_subfields.* from org_subfields,"+
- "subfield_subdomain_dirs where org_subfields.id = subfield_subdomain_dirs.org_subfield_id and "+
- " org_subfields.organization_id=#{@organization.id} and subfield_subdomain_dirs.name='#{params[:sub_dir_name]}'").first
- if @org_subfield.field_type == 'Post'
+ if @organization.is_public? or User.current.admin? or User.current.member_of_org?(@organization)
+ @org_subfield = OrgSubfield.find_by_sql("select distinct org_subfields.* from org_subfields,"+
+ "subfield_subdomain_dirs where org_subfields.id = subfield_subdomain_dirs.org_subfield_id and "+
+ " org_subfields.organization_id=#{@organization.id} and subfield_subdomain_dirs.name='#{params[:sub_dir_name]}'").first
+ if @org_subfield.field_type == 'Post'
@org_subfield_ids = @org_subfield.org_document_comments.map(&:id) << 0
@org_activities = OrgActivity.where("(org_act_type='OrgDocumentComment'and org_act_id in (#{@org_subfield_ids.join(",")})) || (container_type='OrgSubfield' and container_id=#{@org_subfield.id})").order('updated_at desc').page(params[:page] || 1).per(10)
#redirect_to organization_path(@organization, :org_subfield_id => @org_subfield.id)
- else
- if params[:sort]
- params[:sort].split(",").each do |sort_type|
- order_by = sort_type.split(":")
- case order_by[0]
- when "filename"
- attribute = "filename"
- when "size"
- attribute = "filesize"
- when "attach_type"
- attribute = "attachtype"
- when "content_type"
- attribute = "created_on"
- when "field_file_dense"
- attribute = "is_public"
- when "downloads"
- attribute = "downloads"
- when "created_on"
- attribute = "created_on"
- when "quotes"
- attribute = "quotes"
- else
- attribute = "created_on"
- end
- @sort = order_by[0]
- @order = order_by[1]
- if order_by.count == 1 && attribute
- sort += "#{Attachment.table_name}.#{attribute} asc "
- if sort_type != params[:sort].split(",").last
- sort += ","
+ else
+ if params[:sort]
+ params[:sort].split(",").each do |sort_type|
+ order_by = sort_type.split(":")
+ case order_by[0]
+ when "filename"
+ attribute = "filename"
+ when "size"
+ attribute = "filesize"
+ when "attach_type"
+ attribute = "attachtype"
+ when "content_type"
+ attribute = "created_on"
+ when "field_file_dense"
+ attribute = "is_public"
+ when "downloads"
+ attribute = "downloads"
+ when "created_on"
+ attribute = "created_on"
+ when "quotes"
+ attribute = "quotes"
+ else
+ attribute = "created_on"
end
- elsif order_by.count == 2 && order_by[1]
- sort += "#{Attachment.table_name}.#{attribute} #{order_by[1]} "
- if sort_type != params[:sort].split(",").last
- sort += ","
+ @sort = order_by[0]
+ @order = order_by[1]
+ if order_by.count == 1 && attribute
+ sort += "#{Attachment.table_name}.#{attribute} asc "
+ if sort_type != params[:sort].split(",").last
+ sort += ","
+ end
+ elsif order_by.count == 2 && order_by[1]
+ sort += "#{Attachment.table_name}.#{attribute} #{order_by[1]} "
+ if sort_type != params[:sort].split(",").last
+ sort += ","
+ end
end
end
+ else
+ sort = "#{Attachment.table_name}.created_on desc"
end
- else
- sort = "#{Attachment.table_name}.created_on desc"
+ @container_type = 2
+ @containers = [OrgSubfield.includes(:attachments).reorder(sort).find(@org_subfield.id)]
+ @organization = Organization.find(@containers.first.organization_id)
+ show_attachments @containers
+ @tag_list = attachment_tag_list @all_attachments
end
- @container_type = 2
- @containers = [ OrgSubfield.includes(:attachments).reorder(sort).find(@org_subfield.id)]
- @organization = Organization.find(@containers.first.organization_id)
- show_attachments @containers
- @tag_list = attachment_tag_list @all_attachments
+ @page = params[:page] || 1
+ else
+ render_403
end
- @page = params[:page] || 1
#render :layout => 'base_org'
end
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index bd3998621..b650afe1b 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -66,6 +66,7 @@ class ProjectsController < ApplicationController
helper :words
helper :project_score
helper :user_score
+ include UsersHelper
### added by william
include ActsAsTaggableOn::TagsHelper
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index e6b2a2036..921262106 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -26,6 +26,7 @@ class UsersController < ApplicationController
menu_item :user_information, :only => :info
menu_item :user_course, :only => :user_courses
menu_item :user_homework, :only => :user_homeworks
+ menu_item :student_homework, :only => :student_homeworks
menu_item :user_project, :only => [:user_projects, :watch_projects]
menu_item :requirement_focus, :only => :watch_contests
menu_item :user_newfeedback, :only => :user_newfeedback
@@ -35,12 +36,12 @@ class UsersController < ApplicationController
#
before_filter :can_show_course, :only => [:user_courses,:user_homeworks]
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,
+ :user_homeworks,:student_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_system_messages]
+ :user_import_homeworks,:user_search_homeworks,:user_import_resource, :user_system_messages,:choose_user_course]
before_filter :auth_user_extension, only: :show
#before_filter :rest_user_score, only: :show
#before_filter :select_entry, only: :user_projects
@@ -106,7 +107,7 @@ class UsersController < ApplicationController
redirect_to signin_url
return
elsif @user != User.current && !User.current.admin?
- return render_403
+ return render_403
end
# 初始化/更新 点击按钮时间
# 24小时内显示系统消息
@@ -374,32 +375,131 @@ class UsersController < ApplicationController
#用户作业列表
def user_homeworks
- if User.current == @user
- @page = params[:page] ? params[:page].to_i + 1 : 0
- user_course_ids = @user.courses.empty? ? "(-1)" :"(" + @user.courses.visible.map{|course| course.id}.join(",") + ")"
-
- #判断当前用户在当前课程的身份
- visibleCourse = @user.courses.empty? ? [] : @user.courses.visible
- homework_ids = []
- visibleCourse.each do |course|
- if User.current.allowed_to?(:as_teacher,course)
- homeworks = HomeworkCommon.where("course_id = #{course.id}")
- homework_ids << homeworks.pluck(:id) unless homeworks.empty?
- else
- homeworks = HomeworkCommon.where("course_id = #{course.id} and publish_time <= '#{Date.today}'")
- homework_ids << homeworks.pluck(:id) unless homeworks.empty?
+ @user = User.current
+ if(params[:type].blank? || params[:type] == "1") #公共题库
+ visible_course = Course.where("is_public = 1 && is_delete = 0")
+ visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")"
+ @homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'").order("created_at desc")
+ elsif params[:type] == "2" #我的题库
+ @homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}'").order("created_at desc")
+ end
+ @type = params[:type]
+ @limit = 15
+ @is_remote = true
+ @hw_count = @homeworks.count
+ @hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1
+ @offset ||= @hw_pages.offset
+ @homeworks = paginateHelper @homeworks,15
+ respond_to do |format|
+ format.js
+ format.html {render :layout => 'static_base'}
+ end
+ end
+
+ def student_homeworks
+ if User.current == @user
+ @page = params[:page] ? params[:page].to_i + 1 : 0
+ user_course_ids = @user.courses.empty? ? "(-1)" :"(" + @user.courses.visible.map{|course| course.id}.join(",") + ")"
+
+ #判断当前用户在当前课程的身份
+ visibleCourse = @user.courses.empty? ? [] : @user.courses.visible
+ homework_ids = []
+ visibleCourse.each do |course|
+ homeworks = HomeworkCommon.where("course_id = #{course.id} and publish_time <= '#{Date.today}'")
+ homework_ids << homeworks.pluck(:id) unless homeworks.empty?
end
+ visible_homework_ids = homework_ids.size == 0 ? "(-1)" :"(" + homework_ids.join(",") + ")"
+ @homework_commons = HomeworkCommon.where("id in #{visible_homework_ids}").order("created_at desc").limit(10).offset(@page * 10)
+ @is_teacher = User.current.user_extensions && User.current.user_extensions.identity == 0 && User.current.allowed_to?(:add_course, nil, :global => true)
+ @is_in_course = params[:is_in_course].to_i || 0
+ respond_to do |format|
+ format.js
+ format.html {render :layout => 'new_base_user'}
+ end
+ else
+ render_403
end
- visible_homework_ids = homework_ids.size == 0 ? "(-1)" :"(" + homework_ids.join(",") + ")"
- @homework_commons = HomeworkCommon.where("id in #{visible_homework_ids}").order("created_at desc").limit(10).offset(@page * 10)
- @is_teacher = User.current.user_extensions && User.current.user_extensions.identity == 0 && User.current.allowed_to?(:add_course, nil, :global => true)
- @is_in_course = params[:is_in_course].to_i || 0
- respond_to do |format|
- format.js
- format.html {render :layout => 'new_base_user'}
- end
+ end
+
+ def choose_user_course
+ homework = HomeworkCommon.find params[:homework].to_i
+ if !params[:search].nil?
+ search = "%#{params[:search].to_s.strip.downcase}%"
+ @course = @user.courses.where("is_delete = 0 and #{Course.table_name}.id != #{homework.course_id} and #{Course.table_name}.id = #{params[:search].to_i } or #{Course.table_name}.name like :p",:p=>search).select { |course| @user.allowed_to?(:as_teacher,course)}
else
- render_403
+ @course = @user.courses.where("is_delete = 0 and #{Course.table_name}.id != #{homework.course_id}").select { |course| @user.allowed_to?(:as_teacher,course)}
+ end
+ @search = params[:search]
+ #这里仅仅是传递需要发送的资源id
+ @send_id = params[:send_id]
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def send_homework_to_course
+ homework = HomeworkCommon.find params[:send_id].to_i
+ course_ids = params[:course_ids]
+ course_ids.each do |course_id|
+ course = Course.find course_id.to_i
+ new_homework = HomeworkCommon.new
+ new_homework.name = homework.name
+ new_homework.user_id = User.current.id
+ new_homework.description = homework.description
+ new_homework.homework_type = homework.homework_type
+ new_homework.late_penalty = homework.late_penalty
+ new_homework.course_id = course.id
+ new_homework.teacher_priority = homework.teacher_priority
+ new_homework.anonymous_comment = homework.anonymous_comment
+ new_homework.quotes = 0
+ new_homework.is_open = homework.is_open
+ homework.attachments.each do |attachment|
+ att = attachment.copy
+ att.container_id = nil
+ att.container_type = nil
+ att.copy_from = attachment.id
+ att.save
+ new_homework.attachments << att
+ end
+ homework_detail_manual = homework.homework_detail_manual
+ homework_detail_programing = homework.homework_detail_programing
+ homework_detail_group = homework.homework_detail_group
+ if homework_detail_manual
+ new_homework.homework_detail_manual = HomeworkDetailManual.new
+ new_homework_detail_manual = new_homework.homework_detail_manual
+ new_homework_detail_manual.ta_proportion = homework_detail_manual.ta_proportion
+ new_homework_detail_manual.comment_status = 0
+ new_homework_detail_manual.evaluation_num = homework_detail_manual.evaluation_num
+ new_homework_detail_manual.absence_penalty = homework_detail_manual.absence_penalty
+ end
+ if homework_detail_programing
+ new_homework.homework_detail_programing = HomeworkDetailPrograming.new
+ new_homework.homework_detail_programing.ta_proportion = homework_detail_programing.ta_proportion
+ new_homework.homework_detail_programing.language = homework_detail_programing.language
+ homework.homework_tests.each_with_index do |homework_test|
+ new_homework.homework_tests << HomeworkTest.new(
+ input: homework_test.input,
+ output: homework_test.output
+ )
+ end
+ end
+
+ if homework_detail_group
+ new_homework.homework_detail_group = HomeworkDetailGroup.new
+ new_homework.homework_detail_group.min_num = homework_detail_group.min_num
+ new_homework.homework_detail_group.max_num = homework_detail_group.max_num
+ new_homework.homework_detail_group.base_on_project = homework_detail_group.base_on_project
+ end
+ if new_homework.save
+ new_homework_detail_manual.save if new_homework_detail_manual
+ new_homework.homework_detail_programing.save if new_homework.homework_detail_programing
+ new_homework.homework_detail_group.save if new_homework.homework_detail_group
+ end
+ homework.update_attribute(:quotes, homework.quotes+1)
+ end
+ @homework = homework
+ respond_to do |format|
+ format.js
end
end
@@ -432,13 +532,22 @@ class UsersController < ApplicationController
elsif params[:type] == "2" #我的题库
@homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}'").order("created_at desc")
end
+ if params[:property] && params[:property] == "1"
+ @homeworks = @homeworks.where("homework_type = 1").reorder("created_at desc")
+ elsif params[:property] && params[:property] == "2"
+ @homeworks = @homeworks.where("homework_type = 2").reorder("created_at desc")
+ elsif params[:property] && params[:property] == "3"
+ @homeworks = @homeworks.where("homework_type = 3").reorder("created_at desc")
+ end
@type = params[:type]
+ @property = params[:property]
@limit = 15
@is_remote = true
@hw_count = @homeworks.count
@hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1
@offset ||= @hw_pages.offset
@homeworks = paginateHelper @homeworks,15
+ @is_import = params[:is_import]
respond_to do |format|
format.js
end
@@ -446,6 +555,7 @@ class UsersController < ApplicationController
def show_homework_detail
@homework = HomeworkCommon.find params[:homework].to_i
+ @is_import = params[:is_import]
respond_to do |format|
format.js
end
@@ -458,10 +568,21 @@ class UsersController < ApplicationController
if(params[:type].blank? || params[:type] == "1") #全部
visible_course = Course.where("is_public = 1 && is_delete = 0")
visible_course_ids = visible_course.empty? ? "(-1)" : "(" + visible_course.map{|course| course.id}.join(",") + ")"
- @homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}' and (name like '%#{search}%')").order("created_at desc")
+ all_homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'")
+ all_user_ids = all_homeworks.map{|hw| hw.user_id}
+ user_str_ids = search_user_by_name all_user_ids, search
+ user_ids = user_str_ids.empty? ? "(-1)" : "(" + user_str_ids.join(",") + ")"
+ @homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}' and (name like '%#{search}%' or user_id in #{user_ids})").order("created_at desc")
elsif params[:type] == "2" #课程资源
@homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}' and (name like '%#{search}%')").order("created_at desc")
end
+ if params[:property] && params[:property] == "1"
+ @homeworks = @homeworks.where("homework_type = 1").reorder("created_at desc")
+ elsif params[:property] && params[:property] == "2"
+ @homeworks = @homeworks.where("homework_type = 2").reorder("created_at desc")
+ elsif params[:property] && params[:property] == "3"
+ @homeworks = @homeworks.where("homework_type = 3").reorder("created_at desc")
+ end
@type = params[:type]
@limit = 15
@is_remote = true
@@ -469,6 +590,7 @@ class UsersController < ApplicationController
@hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1
@offset ||= @hw_pages.offset
@homeworks = paginateHelper @homeworks,15
+ @is_import = params[:is_import]
respond_to do |format|
format.js
end
@@ -570,7 +692,7 @@ class UsersController < ApplicationController
student_work.save
flash[:notice] = l(:notice_successful_create)
redirect_to student_work_index_url(:homework => params[:homework])
- else
+ else
render_403
end
end
@@ -642,8 +764,8 @@ class UsersController < ApplicationController
homework_detail_programing.save if homework_detail_programing
homework_detail_group.save if homework_detail_group
if params[:quotes] && !params[:quotes].blank?
- homework = HomeworkCommon.find params[:quotes].to_i
- homework.update_attribute(:quotes, homework.quotes+1)
+ quotes_homework = HomeworkCommon.find params[:quotes].to_i
+ quotes_homework.update_attribute(:quotes, quotes_homework.quotes+1)
end
if params[:is_in_course] == "1"
redirect_to homework_common_index_path(:course => homework.course_id)
@@ -684,19 +806,23 @@ class UsersController < ApplicationController
render_403
return
end
+ user_course_ids = User.current.courses.map { |c| c.id}
+ user_project_ids = User.current.projects.map {|p| p.id}
+ # user_org_ids = User.current.organizations.map {|o| o.id}
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','OrgSubfield','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")
+ # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源
+ @attachments = get_my_resources(params[:id], user_course_ids, user_project_ids)
+ elsif params[:type] == "2" # 课程资源
+ @attachments = get_course_resources(params[:id], user_course_ids)
+ elsif params[:type] == "3" # 项目资源
+ @attachments = get_project_resources(params[:id], user_project_ids)
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")
+ @attachments = get_attch_resources params[:id]
elsif params[:type] == "5" #用户资源
- @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Principal'").order("created_on desc")
+ @attachments = get_principal_resources params[:id]
+ elsif params[:type] == "6" # 公共资源
+ # 公共资源库:所有公开资源或者我上传的私有资源
+ @attachments = get_public_resources(user_course_ids, user_project_ids)
end
@type = params[:type]
@limit = 7
@@ -729,6 +855,8 @@ class UsersController < ApplicationController
@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")
+ elsif params[:type] == "6" #公共资源
+ @attachments = Attachment.where("(is_public =1 and is_publish = 1 and container_id is not null)" + "or (author_id = #{params[:id]} and is_publish = 0)").order("created_on desc")
end
@type = params[:type]
@limit = 7
@@ -769,7 +897,7 @@ class UsersController < ApplicationController
def store_selected_resource
session[:seleted_resource_ids] = [] if session[:seleted_resource_ids].nil?
if params[:save] == 'y'
- session[:seleted_resource_ids] << params[:res_id]
+ session[:seleted_resource_ids] << params[:res_id]
else
session[:seleted_resource_ids].delete( params[:res_id])
end
@@ -1075,12 +1203,12 @@ class UsersController < ApplicationController
else
blog_ids = "("+@user.blog.id.to_s+","+((User.watched_by(@user.id).count == 0 )? '0' :User.watched_by(@user.id).map{|u| u.blog.id}.join(','))+")"
@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}) "+
+ "or (container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types}) "+
"or (container_type = 'Principal' and act_type= '#{principal_types}' and container_id = #{@user.id}) " +
- "or (container_type = 'Blog' and act_type= 'BlogComment' and container_id in #{blog_ids})").order('updated_at desc').limit(10).offset(@page * 10)
+ "or (container_type = 'Blog' and act_type= 'BlogComment' and container_id in #{blog_ids})").order('updated_at desc').limit(10).offset(@page * 10)
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})or (container_type = 'Principal' and act_type= '#{principal_types}' and container_id = #{@user.id})").order('updated_at desc').limit(10).offset(@page * 10)
+ # @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})or (container_type = 'Principal' and act_type= '#{principal_types}' and container_id = #{@user.id})").order('updated_at desc').limit(10).offset(@page * 10)
blog_ids = "("+@user.blog.id.to_s+","+((User.watched_by(@user.id).count == 0 )? '0' :User.watched_by(@user.id).map{|u| u.blog.id}.join(','))+")"
@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}) "+
@@ -1403,50 +1531,51 @@ class UsersController < ApplicationController
# 上传用户资源
def user_resource_create
+ user_course_ids = User.current.courses.map { |c| c.id}
+ user_project_ids = User.current.projects.map {|p| p.id}
+ # user_org_ids = User.current.organizations.map {|o| o.id}
@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].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','OrgSubfield','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")
- else
- user_course_ids = User.find(params[:id]).courses.visible.map { |c| c.id} #Ta的资源库的话,应该是他上传的公开资源 加上 他加入的所有我可见课程里的公开资源
- @attachments = Attachment.where("(author_id = #{params[:id]} and is_public = 1 " +
- "and container_type in('Project','OrgSubfield','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(',')}))").order("created_on desc")
- end
- elsif params[:type] == "2" #课程资源
- 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 = 'Course') or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')})) ").order("created_on desc")
- 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(',')}))").order("created_on desc")
- end
- elsif params[:type] == "3" #项目资源
- if User.current.id.to_i == params[:id].to_i
- @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Project'").order("created_on desc")
+ if(params[:type].blank? || params[:type] == "1") # 我的资源
+ # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源
+ if params[:status] == 2
+ @attachments = get_course_resources(params[:id], user_course_ids)
+ elsif params[:status] == "3"
+ @attachments = get_project_resources(params[:id], user_project_ids)
+ elsif params[:status] == "4"
+ @attachments = get_attch_resources params[:id]
+ elsif params[:status] == "5"
+ @attachments = get_principal_resources params[:id]
else
- @attachments = Attachment.where("author_id = #{params[:id]} and is_public = 1 and container_type = 'Project' ").order("created_on desc")
+ # 公共资源库:所有公开资源或者我上传的私有资源
+ @attachments = get_my_resources(params[:id], user_course_ids, user_project_ids)
end
+ elsif params[:type] == "2" # 课程资源
+ @attachments = get_course_resources(params[:id], user_course_ids)
+ elsif params[:type] == "3" # 项目资源
+ @attachments = get_project_resources(params[:id], user_project_ids)
elsif params[:type] == "4" #附件
- if User.current.id.to_i == params[:id].to_i
- @attachments = Attachment.where("author_id = #{params[:id]} and container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon')").order("created_on desc")
- else
- @attachments = Attachment.where("author_id = #{params[:id]} and is_public = 1 and container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon')").order("created_on desc")
- end
- elsif params[:type] == "5" #附件
- if User.current.id.to_i == params[:id].to_i
- @attachments = Attachment.where("author_id = #{params[:id]} and container_type ='Principal'").order("created_on desc")
+ @attachments = get_attch_resources params[:id]
+ elsif params[:type] == "5" #用户资源
+ @attachments = get_principal_resources params[:id]
+ elsif params[:type] == "6" # 公共资源
+ if params[:status] == "2"
+ @attachments = get_course_resources_public( user_course_ids)
+ elsif params[:status] == "3"
+ @attachments = get_project_resources_public(user_project_ids)
+ elsif params[:status] == "4"
+ @attachments = get_attch_resources_public
+ elsif params[:status] == "5"
+ @attachments = get_principal_resources_public
else
- @attachments = Attachment.where("author_id = #{params[:id]} and is_public = 1 and container_type ='Principal'").order("created_on desc")
+ # 公共资源库:所有公开资源或者我上传的私有资源
+ @attachments = get_public_resources(user_course_ids, user_project_ids)
end
end
- @type = params[:type] || 1
+ @status = params[:status]
+ @type = params[:type]
@limit = 25
@is_remote = true
@atta_count = @attachments.count
@@ -1468,46 +1597,46 @@ class UsersController < ApplicationController
Attachment.where("author_id = #{User.current.id}").delete(id)
end
end
-
- if(params[:type].nil? || params[:type].blank? || params[:type] == "1" || params[:type] == 'all') #全部
- 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','OrgSubfield','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")
- else
- user_course_ids = User.find(params[:id]).courses.visible.map { |c| c.id} #Ta的资源库的话,应该是他上传的公开资源 加上 他加入的所有我可见课程里的公开资源
- @attachments = Attachment.where("(author_id = #{params[:id]} and is_public = 1 " +
- "and container_type in('Project','OrgSubfield','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(',')}))").order("created_on desc")
- end
- elsif params[:type] == "2" #课程资源
- 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 = 'Course') or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')})) ").order("created_on desc")
- 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(',')}))").order("created_on desc")
- end
- elsif params[:type] == "3" #项目资源
- if User.current.id.to_i == params[:id].to_i
- @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Project'").order("created_on desc")
+ user_course_ids = User.current.courses.map { |c| c.id}
+ user_project_ids = User.current.projects.map {|p| p.id}
+ # user_org_ids = User.current.organizations.map {|o| o.id}
+ if(params[:type].blank? || params[:type] == "1") # 我的资源
+ # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源
+ if params[:status] == 2
+ @attachments = get_course_resources(params[:id], user_course_ids)
+ elsif params[:status] == "3"
+ @attachments = get_project_resources(params[:id], user_project_ids)
+ elsif params[:status] == "4"
+ @attachments = get_attch_resources params[:id]
+ elsif params[:status] == "5"
+ @attachments = get_principal_resources params[:id]
else
- @attachments = Attachment.where("author_id = #{params[:id]} and is_public = 1 and container_type = 'Project' ").order("created_on desc")
+ # 公共资源库:所有公开资源或者我上传的私有资源
+ @attachments = get_my_resources(params[:id], user_course_ids, user_project_ids)
end
+ elsif params[:type] == "2" # 课程资源
+ @attachments = get_course_resources(params[:id], user_course_ids)
+ elsif params[:type] == "3" # 项目资源
+ @attachments = get_project_resources(params[:id], user_project_ids)
elsif params[:type] == "4" #附件
- if User.current.id.to_i == params[:id].to_i
- @attachments = Attachment.where("author_id = #{params[:id]} and container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon')").order("created_on desc")
- else
- @attachments = Attachment.where("author_id = #{params[:id]} and is_public = 1 and container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon')").order("created_on desc")
- end
+ @attachments = get_attch_resources params[:id]
elsif params[:type] == "5" #用户资源
- if User.current.id.to_i == params[:id].to_i
- @attachments = Attachment.where("author_id = #{params[:id]} and container_type ='Principal'").order("created_on desc")
+ @attachments = get_principal_resources params[:id]
+ elsif params[:type] == "6" # 公共资源
+ if params[:status] == "2"
+ @attachments = get_course_resources_public( user_course_ids)
+ elsif params[:status] == "3"
+ @attachments = get_project_resources_public(user_project_ids)
+ elsif params[:status] == "4"
+ @attachments = get_attch_resources_public
+ elsif params[:status] == "5"
+ @attachments = get_principal_resources_public
else
- @attachments = Attachment.where("author_id = #{params[:id]} and is_public = 1 and container_type ='Principal'").order("created_on desc")
+ # 公共资源库:所有公开资源或者我上传的私有资源
+ @attachments = get_public_resources(user_course_ids, user_project_ids)
end
end
+ @status = params[:status]
@type = params[:type]
@limit = 25
@is_remote = true
@@ -1564,17 +1693,17 @@ class UsersController < ApplicationController
@flag = true
if params[:send_id].present?
send_id = params[:send_id]
- ori = Attachment.find_by_id(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?
+ next if @ori.blank?
@exist = false
Course.find(id).attachments.each do |att| #如果课程中包含该资源
- if att.id == ori.id || (!att.copy_from.nil? && !ori.copy_from.nil? && att.copy_from == ori.copy_from) || att.copy_from == ori.id || att.id == ori.copy_from
+ if att.id == @ori.id || (!att.copy_from.nil? && !@ori.copy_from.nil? && att.copy_from == @ori.copy_from) || att.copy_from == @ori.id || att.id == @ori.copy_from
att.created_on = Time.now
att.save
@exist = true
@@ -1582,18 +1711,21 @@ class UsersController < ApplicationController
end
end
next if @exist
- attach_copied_obj = ori.copy
- attach_copied_obj.tag_list.add(ori.tag_list) # tag关联
+ 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
attach_copied_obj.is_public = 0
- attach_copied_obj.copy_from = ori.copy_from.nil? ? ori.id : ori.copy_from #发送要添加copy_from
+ attach_copied_obj.copy_from = @ori.copy_from.nil? ? @ori.id : @ori.copy_from #发送要添加copy_from
if attach_copied_obj.attachtype == nil
attach_copied_obj.attachtype = 4
end
if attach_copied_obj.save
- ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now)
+ # 更新引用次数
+ quotes = @ori.quotes.to_i + 1
+ @ori.update_attribute(:quotes, quotes) unless @ori.nil?
+ @ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now)
end
@save_message = attach_copied_obj.errors.full_messages
end
@@ -1605,10 +1737,11 @@ class UsersController < ApplicationController
@flag = false
end
send_ids.each do |send_id|
+ quotes = 0
ori = Attachment.find_by_id(send_id)
-
unless course_ids.nil?
course_ids.each do |id|
+ quotes = 0
next if ori.blank?
@exist = false
Course.find(id).attachments.each do |att| #如果课程中包含该资源
@@ -1631,6 +1764,9 @@ class UsersController < ApplicationController
attach_copied_obj.attachtype = 4
end
if attach_copied_obj.save
+ # 更新引用次数
+ quotes = ori.quotes.to_i + 1
+ ori.update_attribute(:quotes, quotes) unless ori.nil?
ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now)
end
@save_message = attach_copied_obj.errors.full_messages
@@ -1691,6 +1827,9 @@ class UsersController < ApplicationController
attach_copied_obj.attachtype = 1
end
if attach_copied_obj.save
+ # 更新引用次数
+ quotes = ori.quotes.to_i + 1
+ ori.update_attribute(:quotes, quotes) unless ori.nil?
ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now)
end
unless Project.find(project_id).project_score.nil?
@@ -1698,6 +1837,7 @@ class UsersController < ApplicationController
Project.find(project_id).project_score.attach_num + 1)
end
end
+ @ori = ori
end
elsif params[:send_ids].present?
send_ids = params[:send_ids].split(" ")
@@ -1706,10 +1846,11 @@ class UsersController < ApplicationController
@flag = false
end
send_ids.each do |send_id|
-
+ quotes = 0
ori = Attachment.find_by_id(send_id)
unless project_ids.nil?
project_ids.each do |project_id|
+ quotes = 0
next if ori.blank?
@exist = false
Project.find(project_id).attachments.each do |att| #如果课程中包含该资源
@@ -1732,6 +1873,9 @@ class UsersController < ApplicationController
attach_copied_obj.attachtype = 1
end
if attach_copied_obj.save
+ # 更新引用次数
+ quotes = ori.quotes.to_i + 1
+ ori.update_attribute(:quotes, quotes) unless ori.nil?
ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now)
end
unless Project.find(project_id).project_score.nil?
@@ -1770,31 +1914,35 @@ class UsersController < ApplicationController
end
ori = Attachment.find_by_id(send_id)
unless subfield_id.nil?
- attach_copied_obj = ori.copy
- @exist = false
- OrgSubfield.find(subfield_id).attachments.each do |att| #如果课程中包含该资源
- if att.id == ori.id || (!att.copy_from.nil? && !ori.copy_from.nil? && att.copy_from == ori.copy_from) || att.copy_from == ori.id || att.id == ori.copy_from
- att.created_on = Time.now
- att.save
- @exist = true
- break
- end
+ attach_copied_obj = ori.copy
+ @exist = false
+ OrgSubfield.find(subfield_id).attachments.each do |att| #如果课程中包含该资源
+ if att.id == ori.id || (!att.copy_from.nil? && !ori.copy_from.nil? && att.copy_from == ori.copy_from) || att.copy_from == ori.id || att.id == ori.copy_from
+ att.created_on = Time.now
+ att.save
+ @exist = true
+ break
end
- if @exist == false #如果不存在该资源
- attach_copied_obj.tag_list.add(ori.tag_list) # tag关联
- attach_copied_obj.container = OrgSubfield.find(subfield_id)
- attach_copied_obj.created_on = Time.now
- attach_copied_obj.author_id = User.current.id
- attach_copied_obj.is_public = 0
- attach_copied_obj.copy_from = ori.copy_from.nil? ? ori.id : ori.copy_from #发送要添加copy_from
- if attach_copied_obj.attachtype == nil
- attach_copied_obj.attachtype = 1
- end
- if attach_copied_obj.save
- ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now)
- end
+ end
+ if @exist == false #如果不存在该资源
+ attach_copied_obj.tag_list.add(ori.tag_list) # tag关联
+ attach_copied_obj.container = OrgSubfield.find(subfield_id)
+ attach_copied_obj.created_on = Time.now
+ attach_copied_obj.author_id = User.current.id
+ attach_copied_obj.is_public = 0
+ attach_copied_obj.copy_from = ori.copy_from.nil? ? ori.id : ori.copy_from #发送要添加copy_from
+ if attach_copied_obj.attachtype == nil
+ attach_copied_obj.attachtype = 1
end
+ if attach_copied_obj.save
+ # 更新引用次数
+ quotes = ori.quotes.to_i + 1
+ ori.update_attribute(:quotes, quotes) unless ori.nil?
+ ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now)
+ end
+ end
end
+ @ori = ori
elsif params[:send_ids].present?
send_ids = params[:send_ids].split(" ")
subfield_id = params[:subfield]
@@ -1802,33 +1950,36 @@ class UsersController < ApplicationController
@flag = false
end
send_ids.each do |send_id|
-
+ quotes = 0
ori = Attachment.find_by_id(send_id)
unless subfield_id.nil?
- next if ori.blank?
- @exist = false
- OrgSubfield.find(subfield_id).attachments.each do |att| #如果课程中包含该资源
- if att.id == ori.id || (!att.copy_from.nil? && !ori.copy_from.nil? && att.copy_from == ori.copy_from) || att.copy_from == ori.id || att.id == ori.copy_from
- att.created_on = Time.now
- att.save
- @exist = true
- break
- end
- end
- next if @exist
- attach_copied_obj = ori.copy
- attach_copied_obj.tag_list.add(ori.tag_list) # tag关联
- attach_copied_obj.container = OrgSubfield.find(subfield_id)
- attach_copied_obj.created_on = Time.now
- attach_copied_obj.author_id = User.current.id
- attach_copied_obj.is_public = 0
- attach_copied_obj.copy_from = ori.copy_from.nil? ? ori.id : ori.copy_from #发送要添加copy_from
- if attach_copied_obj.attachtype == nil
- attach_copied_obj.attachtype = 1
- end
- if attach_copied_obj.save
- ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now)
+ next if ori.blank?
+ @exist = false
+ OrgSubfield.find(subfield_id).attachments.each do |att| #如果课程中包含该资源
+ if att.id == ori.id || (!att.copy_from.nil? && !ori.copy_from.nil? && att.copy_from == ori.copy_from) || att.copy_from == ori.id || att.id == ori.copy_from
+ att.created_on = Time.now
+ att.save
+ @exist = true
+ break
end
+ end
+ next if @exist
+ attach_copied_obj = ori.copy
+ attach_copied_obj.tag_list.add(ori.tag_list) # tag关联
+ attach_copied_obj.container = OrgSubfield.find(subfield_id)
+ attach_copied_obj.created_on = Time.now
+ attach_copied_obj.author_id = User.current.id
+ attach_copied_obj.is_public = 0
+ attach_copied_obj.copy_from = ori.copy_from.nil? ? ori.id : ori.copy_from #发送要添加copy_from
+ if attach_copied_obj.attachtype == nil
+ attach_copied_obj.attachtype = 1
+ end
+ if attach_copied_obj.save
+ # 更新引用次数
+ quotes = ori.quotes.to_i + 1
+ ori.update_attribute(:quotes, quotes) unless ori.nil?
+ ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now)
+ end
end
end
else
@@ -1863,8 +2014,8 @@ class UsersController < ApplicationController
end
news.attachments.each do |attach|
course_news.attachments << Attachment.new(:filename => attach.filename, :disk_filename => attach.disk_filename, :filesize => attach.filesize, :content_type => attach.content_type, :digest => attach.digest,
- :downloads => 0, :author_id => User.current.id, :created_on => Time.now, :description => attach.description, :disk_directory => attach.disk_directory, :attachtype => attach.attachtype,
- :is_public => attach.is_public, :quotes => 0)
+ :downloads => 0, :author_id => User.current.id, :created_on => Time.now, :description => attach.description, :disk_directory => attach.disk_directory, :attachtype => attach.attachtype,
+ :is_public => attach.is_public, :quotes => 0)
end
end
end
@@ -1883,8 +2034,8 @@ class UsersController < ApplicationController
end
news.attachments.each do |attach|
message.attachments << Attachment.new(:filename => attach.filename, :disk_filename => attach.disk_filename, :filesize => attach.filesize, :content_type => attach.content_type, :digest => attach.digest,
- :downloads => 0, :author_id => User.current.id, :created_on => Time.now, :description => attach.description, :disk_directory => attach.disk_directory, :attachtype => attach.attachtype,
- :is_public => attach.is_public, :quotes => 0)
+ :downloads => 0, :author_id => User.current.id, :created_on => Time.now, :description => attach.description, :disk_directory => attach.disk_directory, :attachtype => attach.attachtype,
+ :is_public => attach.is_public, :quotes => 0)
end
end
end
@@ -1900,8 +2051,8 @@ class UsersController < ApplicationController
end
news.attachments.each do |attach|
org_news.attachments << Attachment.new(:filename => attach.filename, :disk_filename => attach.disk_filename, :filesize => attach.filesize, :content_type => attach.content_type, :digest => attach.digest,
- :downloads => 0, :author_id => User.current.id, :created_on => Time.now, :description => attach.description, :disk_directory => attach.disk_directory, :attachtype => attach.attachtype,
- :is_public => attach.is_public, :quotes => 0)
+ :downloads => 0, :author_id => User.current.id, :created_on => Time.now, :description => attach.description, :disk_directory => attach.disk_directory, :attachtype => attach.attachtype,
+ :is_public => attach.is_public, :quotes => 0)
end
OrgActivity.create(:container_type => 'OrgSubfield', :container_id => field_id.to_i, :org_act_type=>'News', :org_act_id => org_news.id, :user_id => User.current.id)
end
@@ -2169,54 +2320,107 @@ class UsersController < ApplicationController
end
end
+ # 获取公共资源
+ def get_public_resources user_course_ids, user_project_ids
+ attachments = Attachment.where("(is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) "+
+ "or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}) and is_publish = 1 and container_id is not null)" +
+ "or (container_type = 'Project' and container_id in (#{user_project_ids.empty? ? '0': user_project_ids.join(',')}) and is_publish = 1 and container_id is not null)" ).order("created_on desc")
+ end
+
+ # 获取我的资源
+ def get_my_resources author_id, user_course_ids, user_project_ids
+ attachments = Attachment.where("(author_id = #{author_id} and is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','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 is_publish = 1 and container_id is not null)" +
+ "or (container_type = 'Project' and container_id in (#{user_project_ids.empty? ? '0': user_project_ids.join(',')}) and is_publish = 1 and container_id is not null)" ).order("created_on desc")
+ end
+
+ # 获取我的课程资源
+ def get_course_resources author_id, user_course_ids
+ attchments = Attachment.where("(author_id = #{author_id} and container_type = 'Course' and is_publish = 1) or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}) and is_publish = 1) ").order("created_on desc")
+ end
+
+ # 获取公共资源课程
+ def get_course_resources_public user_course_ids
+ attchments = Attachment.where("(container_type = 'Course' and is_publish = 1) or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}) and is_publish = 1) ").order("created_on desc")
+ end
+
+ # 获取我的项目资源
+ def get_project_resources author_id, user_project_ids
+ attchments = Attachment.where("(author_id = #{author_id} and container_type = 'Project') or (container_type = 'Course' and container_id in (#{user_project_ids.empty? ? '0': user_project_ids.join(',')}) and is_publish = 1) ").order("created_on desc")
+ end
+
+ # 获取公共资源的项目资源
+ def get_project_resources_public user_project_ids
+ attchments = Attachment.where("(container_type = 'Project') or (container_type = 'Project' and container_id in (#{user_project_ids.empty? ? '0': user_project_ids.join(',')}) and is_publish = 1) ").order("created_on desc")
+ end
+
+ # 获取我上传的附件
+ def get_attch_resources author_id
+ attchments = Attachment.where("author_id = #{author_id} and container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal')").order("created_on desc")
+ end
+
+ # 获取公共资源中我上传的附件
+ def get_attch_resources_public
+ attchments = Attachment.where("container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal')").order("created_on desc")
+ end
+
+ # 获取我的用户类型资源
+ def get_principal_resources author_id
+ attchments = Attachment.where("author_id = #{author_id} and container_type = 'Principal'").order("created_on desc")
+ end
+
+ # 获取我的用户类型资源
+ def get_principal_resources_public
+ attchments = Attachment.where("container_type = 'Principal'").order("created_on desc")
+ end
+
# 资源库 分为全部 课程资源 项目资源 附件
def user_resource
- #确定container_type
- # @user = User.find(params[:id])
# 别人的资源库是没有权限去看的
if User.current.id.to_i != params[:id].to_i
render_403
return
end
- 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 is_publish = 1 and container_type in('Project','OrgSubfield','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 is_publish = 1)").order("created_on desc")
- else
- user_course_ids = User.find(params[:id]).courses.visible.map { |c| c.id} #Ta的资源库的话,应该是他上传的公开资源 加上 他加入的所有我可见课程里的公开资源
- @attachments = Attachment.where("(author_id = #{params[:id]} and is_public = 1 and is_publish = 1 " +
- "and container_type in('Project','OrgSubfield','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 is_publish = 1)").order("created_on desc")
- end
- elsif params[:type] == "2" #课程资源
- 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 = 'Course' and is_publish = 1) or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}) and is_publish = 1) ").order("created_on desc")
+ user_course_ids = User.current.courses.map { |c| c.id}
+ user_project_ids = User.current.projects.map {|p| p.id}
+ # user_org_ids = User.current.organizations.map {|o| o.id}
+ if(params[:type].blank? || params[:type] == "1") # 我的资源
+ # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源
+ if params[:status] == "2"
+ @attachments = get_course_resources(params[:id], user_course_ids)
+ elsif params[:status] == "3"
+ @attachments = get_project_resources(params[:id], user_project_ids)
+ elsif params[:status] == "4"
+ @attachments = get_attch_resources params[:id]
+ elsif params[:status] == "5"
+ @attachments = get_principal_resources params[:id]
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' and is_publish = 1)"+
- "or (container_type = 'Course' and is_public = 1 and is_publish = 1 and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}))").order("created_on desc")
- end
- elsif params[:type] == "3" #项目资源
- if User.current.id.to_i == params[:id].to_i
- @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Project'").order("created_on desc")
- else
- @attachments = Attachment.where("author_id = #{params[:id]} and is_public = 1 and container_type = 'Project' ").order("created_on desc")
+ # 公共资源库:所有公开资源或者我上传的私有资源
+ @attachments = get_my_resources(params[:id], user_course_ids, user_project_ids)
end
+ elsif params[:type] == "2" # 课程资源
+ @attachments = get_course_resources(params[:id], user_course_ids)
+ elsif params[:type] == "3" # 项目资源
+ @attachments = get_project_resources(params[:id], user_project_ids)
elsif params[:type] == "4" #附件
- if User.current.id.to_i == params[:id].to_i
- @attachments = Attachment.where("author_id = #{params[:id]} and container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal')").order("created_on desc")
- else
- @attachments = Attachment.where("author_id = #{params[:id]} and is_public = 1 and container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal')").order("created_on desc")
- end
+ @attachments = get_attch_resources params[:id]
elsif params[:type] == "5" #用户资源
- if User.current.id.to_i == params[:id].to_i
- @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Principal'").order("created_on desc")
+ @attachments = get_principal_resources params[:id]
+ elsif params[:type] == "6" # 公共资源
+ if params[:status] == "2"
+ @attachments = get_course_resources_public( user_course_ids)
+ elsif params[:status] == "3"
+ @attachments = get_project_resources_public(user_project_ids)
+ elsif params[:status] == "4"
+ @attachments = get_attch_resources_public
+ elsif params[:status] == "5"
+ @attachments = get_principal_resources_public
else
- @attachments = Attachment.where("author_id = #{params[:id]} and is_public = 1 and container_type = 'Principal'").order("created_on desc")
+ # 公共资源库:所有公开资源或者我上传的私有资源
+ @attachments = get_public_resources(user_course_ids, user_project_ids)
end
end
+ @status = params[:status]
@type = params[:type]
@limit = 25
@is_remote = true
@@ -2227,18 +2431,141 @@ class UsersController < ApplicationController
@attachments = paginateHelper @attachments,25
respond_to do |format|
format.js
- format.html {render :layout => 'new_base_user'}
+ format.html {render :layout => 'new_base'}
+ end
+ end
+
+ # 导入资源
+ def import_resources
+ # 别人的资源库是没有权限去看的
+ if User.current.id.to_i != params[:id].to_i
+ render_403
+ return
+ end
+ user_course_ids = User.current.courses.map { |c| c.id}
+ user_project_ids = User.current.projects.map {|p| p.id}
+ # user_org_ids = User.current.organizations.map {|o| o.id}
+ if(params[:type].blank? || params[:type] == "1") # 我的资源
+ # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源
+ @attachments = get_my_resources(params[:id], user_course_ids, user_project_ids)
+ elsif params[:type] == "6" # 公共资源
+ # 公共资源库:所有公开资源或者我上传的私有资源
+ @attachments = get_public_resources(user_course_ids, user_project_ids)
+ end
+ @type = params[:type]
+ @limit = 10
+ @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,10
+ respond_to do |format|
+ format.js
+ format.html {render :layout => 'new_base'}
+ end
+ end
+
+ def import_resources_search
+ search = "%#{params[:search].strip.downcase}%"
+ # 别人的资源库是没有权限去看的
+ if User.current.id.to_i != params[:id].to_i
+ render_403
+ return
+ end
+ user_course_ids = User.current.courses.map { |c| c.id}
+ user_project_ids = User.current.projects.map {|p| p.id}
+ # user_org_ids = User.current.organizations.map {|o| o.id}
+ if(params[:type].blank? || params[:type] == "1") # 我的资源
+ # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源
+ user_course_ids = User.current.courses.map { |c| c.id}
+ user_project_ids = User.current.projects.map {|p| p.id}
+ # user_org_ids = User.current.organizations.map {|o| o.id}
+ @attachments = Attachment.where("((author_id = #{params[:id]} and is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','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 is_publish = 1 and container_id is not null)" +
+ "or (container_type = 'Project' and container_id in (#{user_project_ids.empty? ? '0': user_project_ids.join(',')}) and is_publish = 1 and container_id is not null)) and (filename like :p)" ,:p => search).order("created_on desc")
+ elsif params[:type] == "6" # 公共资源
+ # 公共资源库:所有公开资源或者我上传的私有资源
+ @attachments = get_public_resources(user_course_ids, user_project_ids)
+ end
+ @type = params[:type]
+ @limit = 10
+ @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,10
+ respond_to do |format|
+ format.js
+ format.html {render :layout => 'new_base'}
+ end
+ end
+
+ # 内容导入到对象中
+ def import_into_container
+ send_ids = params[:checkbox1]
+ # mul_id为当前课程id、项目id、组织id的多种形态
+ mul_id = params[:mul_id]
+ if params[:mul_type] == "Course"
+ mul_container = Course.find(mul_id)
+ elsif params[:mul_type] == "Project"
+ mul_container = Project.find(mul_id)
+ elsif params[:mul_type] == "SubfieldFile"
+ mul_container = OrgSubfield.find(mul_id)
+ end
+ unless params[:checkbox1].blank?
+ send_ids.each do |send_id|
+ ori = Attachment.find_by_id(send_id)
+ # 如果该附件已经存课程中,则只更新附件创建时间
+ mul_container.attachments.each do |att|
+ if att.id == ori.id || (!att.copy_from.nil? && !ori.copy_from.nil? && att.copy_from == ori.copy_from) || att.copy_from == ori.id || att.id == ori.copy_from
+ att.created_on = Time.now
+ att.save
+ @exist = true
+ break
+ end
+ end
+ next if @exist
+ attach_copied_obj = ori.copy
+ attach_copied_obj.tag_list.add(ori.tag_list) # tag关联
+ attach_copied_obj.container = mul_container
+ attach_copied_obj.created_on = Time.now
+ attach_copied_obj.author_id = User.current.id
+ attach_copied_obj.is_public = 0
+ attach_copied_obj.copy_from = ori.copy_from.nil? ? ori.id : ori.copy_from #发送要添加copy_from
+ 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
+ respond_to do |format|
+ format.html {
+ if params[:mul_type] == "Course"
+ redirect_to course_files_url(mul_container) unless mul_container.nil?
+ elsif params[:mul_type] == "Project"
+ redirect_to project_files_url(mul_container) unless mul_container.nil?
+ elsif params[:mul_type] == "SubfieldFile"
+ redirect_to org_subfield_files_url(mul_container) unless mul_container.nil?
+ end
+ }
end
end
# 根据资源关键字进行搜索
def resource_search
search = "%#{params[:search].strip.downcase}%"
+ user_course_ids = User.current.courses.map { |c| c.id}
+ user_project_ids = User.current.projects.map {|p| p.id}
+ # user_org_ids = User.current.organizations.map {|o| o.id}
if(params[:type].nil? || params[:type].blank? || params[:type] == "1" || params[:type] == 'all') #全部
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','OrgSubfield','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 :p) ",:p=>search).order("created_on desc")
+
+ @attachments = Attachment.where("((author_id = #{params[:id]} and is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','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 is_publish = 1 and container_id is not null)" +
+ "or (container_type = 'Project' and container_id in (#{user_project_ids.empty? ? '0': user_project_ids.join(',')}) and is_publish = 1 and container_id is not null)) and (filename like :p)" ,:p => search).order("created_on desc")
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" +
@@ -2274,6 +2601,11 @@ class UsersController < ApplicationController
else
@attachments = Attachment.where("author_id = #{params[:id]} and is_public = 1 and container_type = 'Principal' and (filename like :p)",:p=>search).order("created_on desc")
end
+ elsif params[:type] == "6" #全部资源
+ # 公共资源库:所有公开资源或者我上传的私有资源
+ @attachments = Attachment.where("((is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) "+
+ "or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}) and is_publish = 1 and container_id is not null)" +
+ "or (container_type = 'Project' and container_id in (#{user_project_ids.empty? ? '0': user_project_ids.join(',')}) and is_publish = 1 and container_id is not null)) and (filename like :p)" ,:p => search).order("created_on desc")
end
@type = params[:type]
@limit = 25
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 9d08be378..bf7a5fdf9 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -110,11 +110,19 @@ module ApplicationHelper
end
end
- # 更新课程英雄榜得分
- # user传过来必须是学生
+ # 更新课程活跃度得分
def course_member_score(course_id,user_id,type)
course_contributor_score = CourseContributorScore.where("course_id =? and user_id =?", course_id, user_id).first
case type
+ when "HomeworkCommon"
+ if course_contributor_score.nil?
+ CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :message_num => 0, :message_reply_num => 0,
+ :news_reply_num => 0, :resource_num => 0, :journal_num => 0, :journal_reply_num => 0, :homework_journal_num => 1 , :total_score => 1)
+ else
+ score = course_contributor_score.homework_journal_num + 1
+ total_score = course_contributor_score.total_score + 1
+ course_contributor_score.update_attributes(:homework_journal_num => score, :total_score => total_score)
+ end
when "JournalForMessage"
if course_contributor_score.nil?
CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :message_num => 0, :message_reply_num => 0,
@@ -151,6 +159,15 @@ module ApplicationHelper
total_score = course_contributor_score.total_score + 1
course_contributor_score.update_attributes(:news_reply_num => score, :total_score => total_score)
end
+ when "News"
+ if course_contributor_score.nil?
+ CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :message_num => 0, :message_reply_num => 0,
+ :news_reply_num => 0, :news_num => 1, :resource_num => 0, :journal_num => 0, :journal_reply_num => 0, :total_score => 1)
+ else
+ score = course_contributor_score.news_num + 1
+ total_score = course_contributor_score.total_score + 1
+ course_contributor_score.update_attributes(:news_num => score, :total_score => total_score)
+ end
end
end
@@ -2032,9 +2049,11 @@ module ApplicationHelper
course = attachment.container
candown= User.current.member_of_course?(course) || (course.is_public==1 && attachment.is_public == 1)
elsif attachment.container.is_a?(OrgSubfield)
- candown = true
+ org = attachment.container.organization
+ candown = User.current.member_of_org?(org) || (org.is_public && attachment.is_public == 1)
elsif attachment.container.is_a?(OrgDocumentComment)
- candown = true
+ org = attachment.container.organization
+ candown = User.current.member_of_org?(org) || (org.is_public && attachment.is_public == 1)
elsif (attachment.container.has_attribute?(:board) || attachment.container.has_attribute?(:board_id)) && attachment.container.board &&
attachment.container.board.course
course = attachment.container.board.course
@@ -2512,7 +2531,7 @@ module ApplicationHelper
#获取匿评相关连接代码
def homework_anonymous_comment (homework, is_in_course, user_activity_id = -1, course_activity = -1)
- if Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")
+ if homework.homework_detail_manual.comment_status == 0 ||Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")
link = link_to "启动匿评","javascript:void(0)", :class => "postOptionLink", :title => "作业截止日期之前不可以启动匿评"
elsif homework.student_works.count >= 2 && homework.homework_detail_manual#作业份数大于2
case homework.homework_detail_manual.comment_status
diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb
index 1875f920d..aff7ecc7d 100644
--- a/app/helpers/courses_helper.rb
+++ b/app/helpers/courses_helper.rb
@@ -25,7 +25,7 @@ module CoursesHelper
# 获取tag匹配结果ID
a_tags = []
# kc = keywords.to_a
- Course.visible.where("is_excellent =?", 1).each do |ec|
+ Course.visible.where("is_excellent =? and is_public =?", 1, 1).each do |ec|
if ec.tags.any?{|value| current_course.name.include?(value.to_s)}
a_tags << ec.id
end
@@ -44,7 +44,7 @@ module CoursesHelper
excellent_ids = a_courses.flatten.uniq.delete_if{|i| i == current_course.id}
limit = 5 - excellent_ids.length.to_i
sql = "SELECT distinct c.id FROM course_activities cs, courses c where cs.course_id = c.id
- and c.is_excellent =1 and c.id != #{current_course.id} order by cs.updated_at desc;"
+ and c.is_excellent =1 and c.is_public = 1 and c.id != #{current_course.id} order by cs.updated_at desc;"
default_ecourse_ids = Course.find_by_sql(sql).flatten
# REDO:时间紧,待优化
default_ids =[]
@@ -121,7 +121,7 @@ module CoursesHelper
@course.journals_for_messages.where('m_parent_id IS NULL').count
end
- #当前学期
+ #当前学期(2015春季学期)
def current_time_and_term course
str = ""
term = cur_course_term
@@ -149,6 +149,22 @@ module CoursesHelper
val
end
+ #当前学期(2015春)
+ def current_time_and_term_short course
+ str = ""
+ term = cur_course_term
+ if (course.time == course.end_time && course.term == course.end_term) || (course.end_term.nil? && course.end_time.nil?) || course.time > Time.now.year
+ str = course.time.to_s + course.term[0]
+ elsif course.time == Time.now.year && set_term_value(cur_course_term) <= set_term_value(course.term)
+ str = course.time.to_s + course.term[0]
+ elsif course.end_time < Time.now.year || (course.end_time == Time.now.year && set_term_value(cur_course_term) >= set_term_value(course.term))
+ str = course.end_time.to_s + course.end_term[0]
+ else
+ str = Time.now.year.to_s + cur_course_term[0]
+ end
+ str
+ end
+
# 返回学生数量,即roles表中定义的Reporter
#def studentCount project
# searchStudent(project).count
@@ -845,7 +861,9 @@ module CoursesHelper
end
def contributor_course_scor(course_id)
- ccs = CourseContributorScore.where("course_id =?", course_id).order("total_score desc") .limit(9)
+ ccs = CourseContributorScore.find_by_sql("SELECT * FROM `course_contributor_scores` where course_id = #{course_id} order by
+ (message_num*2 + message_reply_num + news_reply_num + news_num +
+ resource_num*5 + journal_num + homework_journal_num ) desc limit 9;")
end
end
diff --git a/app/helpers/exercise_helper.rb b/app/helpers/exercise_helper.rb
index aba2fb58e..6dadf92b5 100644
--- a/app/helpers/exercise_helper.rb
+++ b/app/helpers/exercise_helper.rb
@@ -1,153 +1,178 @@
-# encoding: utf-8
-module ExerciseHelper
-
- # 单选
- def sigle_selection_standard_answer(params)
- size = params.ord - 96
- if size > 0 # 小写字母答案
- answer = params.ord - 96
- else
- answer = params.ord - 64
- end
- end
-
- # 多选
- def multiselect_standard_answer(params)
- size = params.ord - 96
- answer = []
- if size > 0 # 小写字母答案
- for i in 0..(params.length-1)
- answer << (params[i].ord - 96).to_s
- end
- else
- for i in 0..(params.length-1)
- answer << (params[i].ord - 64)
- end
- end
- answer = answer.sort
- answer.join("")
- end
-
- #
- def fill_standart_answer(params, standart_answer)
- params.each do |param|
- standart_answer.answer_text = param.value
- standart_answer.save
- end
- end
-
- # 获取多选的得分
- def get_mulscore(question, user)
- ecs = ExerciseAnswer.where("user_id =? and exercise_question_id =?", user.id, question.id)
- arr = []
- ecs.each do |ec|
- arr << ec.exercise_choice.choice_position
- end
- #arr = arr.sort
- str = arr.sort.join("")
- return str
- end
-
- # 判断用户是否已经提交了问卷
- # status 为0的时候是用户点击试卷。为1表示用户已经提交
- def has_commit_exercise?(exercise_id, user_id)
- pu = ExerciseUser.where("exercise_id=? and user_id=? and status=?",exercise_id, user_id, true)
- if pu.empty?
- false
- else
- true
- end
- end
-
- # 判断学生是否点击过问卷,点击则为他保存一个记录,记录start_at
- def has_click_exercise?(exercise_id, user_id)
- pu = ExerciseUser.where("exercise_id=? and user_id=? and status=?",exercise_id, user_id, false)
- if pu.empty?
- false
- else
- true
- end
- end
-
- def convert_to_char(str)
- result = ""
- length = str.length
- unless str.nil?
- if length === 1
- result += (str.to_i + 64).chr
- return result
- elsif length > 1
- for i in 0...length
- result += (str[i].to_i + 64).chr
- end
- return result
- end
- end
- return result
- end
-
- def get_current_score exercise
- score = 0
- unless exercise.nil?
- exercise.exercise_questions.each do |exercise_question|
- unless exercise_question.question_score.nil?
- score += exercise_question.question_score
- end
- end
- return score
- end
- return score
- end
-
- def answer_be_selected?(answer,user)
- pv = answer.exercise_answers.where("#{ExerciseAnswer.table_name}.user_id = #{user.id} ")
- if !pv.nil? && pv.count > 0
- true
- else
- false
- end
- end
-
- #获取未完成的题目
- def get_uncomplete_question exercise,user
- all_questions = exercise.exercise_questions
- uncomplete_question = []
- all_questions.each do |question|
- answers = get_user_answer(question, user)
- if answers.empty?
- uncomplete_question << question
- end
- end
- uncomplete_question
- end
-
- #获取文本题答案
- def get_anwser_vote_text(question_id,user_id)
- pv = ExerciseAnswer.find_by_exercise_question_id_and_user_id(question_id,user_id)
- if pv.nil?
- ''
- else
- pv.answer_text
- end
- end
-
- # 获取当前学生回答问题的答案
- def get_user_answer(question,user)
- user_answer = question.exercise_answers.where("#{ExerciseAnswer.table_name}.user_id = #{user.id}")
- user_answer
- end
-
- # 获取问题的标准答案
- def get_user_standard_answer(question,user)
- if question.question_type == 3
- standard_answer =[]
- question.exercise_standard_answers.each do |answer|
- standard_answer << answer.answer_text
- end
- else
- standard_answer = question.exercise_standard_answers
- end
- standard_answer
- end
-
+# encoding: utf-8
+module ExerciseHelper
+
+ # 单选
+ def sigle_selection_standard_answer(params)
+ size = params.ord - 96
+ if size > 0 # 小写字母答案
+ answer = params.ord - 96
+ else
+ answer = params.ord - 64
+ end
+ end
+
+ # 多选
+ def multiselect_standard_answer(params)
+ size = params.ord - 96
+ answer = []
+ if size > 0 # 小写字母答案
+ for i in 0..(params.length-1)
+ answer << (params[i].ord - 96).to_s
+ end
+ else
+ for i in 0..(params.length-1)
+ answer << (params[i].ord - 64)
+ end
+ end
+ answer = answer.sort
+ answer.join("")
+ end
+
+ #
+ def fill_standart_answer(params, standart_answer)
+ params.each do |param|
+ standart_answer.answer_text = param.value
+ standart_answer.save
+ end
+ end
+
+ # 获取多选的得分
+ def get_mulscore(question, user)
+ ecs = ExerciseAnswer.where("user_id =? and exercise_question_id =?", user.id, question.id)
+ arr = []
+ ecs.each do |ec|
+ arr << ec.exercise_choice.choice_position
+ end
+ #arr = arr.sort
+ str = arr.sort.join("")
+ return str
+ end
+
+ # 判断用户是否已经提交了问卷
+ # status 为0的时候是用户点击试卷。为1表示用户已经提交
+ def has_commit_exercise?(exercise_id, user_id)
+ pu = ExerciseUser.where("exercise_id=? and user_id=? and status=?",exercise_id, user_id, true)
+ if pu.empty?
+ false
+ else
+ true
+ end
+ end
+
+ # 判断学生是否点击过问卷,点击则为他保存一个记录,记录start_at
+ def has_click_exercise?(exercise_id, user_id)
+ pu = ExerciseUser.where("exercise_id=? and user_id=? and status=?",exercise_id, user_id, false)
+ if pu.empty?
+ false
+ else
+ true
+ end
+ end
+
+ def convert_to_char(str)
+ result = ""
+ length = str.length
+ unless str.nil?
+ if length === 1
+ result += (str.to_i + 64).chr
+ return result
+ elsif length > 1
+ for i in 0...length
+ result += (str[i].to_i + 64).chr
+ end
+ return result
+ end
+ end
+ return result
+ end
+
+ def convert_to_chi_num num
+ result = ""
+ case num.to_i
+ when 1
+ result = '一'
+ when 2
+ result = '二'
+ when 3
+ result = '三'
+ when 4
+ result = '四'
+ when 5
+ result = '五'
+ when 6
+ result = '六'
+ when 7
+ result = '七'
+ when 8
+ result = '八'
+ when 9
+ result = '九'
+ end
+ return result
+ end
+
+ def get_current_score exercise
+ score = 0
+ unless exercise.nil?
+ exercise.exercise_questions.each do |exercise_question|
+ unless exercise_question.question_score.nil?
+ score += exercise_question.question_score
+ end
+ end
+ return score
+ end
+ return score
+ end
+
+ def answer_be_selected?(answer,user)
+ pv = answer.exercise_answers.where("#{ExerciseAnswer.table_name}.user_id = #{user.id} ")
+ if !pv.nil? && pv.count > 0
+ true
+ else
+ false
+ end
+ end
+
+ #获取未完成的题目
+ def get_uncomplete_question exercise,user
+ all_questions = exercise.exercise_questions
+ uncomplete_question = []
+ all_questions.each do |question|
+ answers = get_user_answer(question, user)
+ if answers.empty?
+ uncomplete_question << question
+ end
+ end
+ uncomplete_question
+ end
+
+ #获取文本题答案
+ def get_anwser_vote_text(question_id,user_id)
+ pv = ExerciseAnswer.find_by_exercise_question_id_and_user_id(question_id,user_id)
+ if pv.nil?
+ ''
+ else
+ pv.answer_text
+ end
+ end
+
+ # 获取当前学生回答问题的答案
+ def get_user_answer(question,user)
+ user_answer = question.exercise_answers.where("#{ExerciseAnswer.table_name}.user_id = #{user.id}")
+ user_answer
+ end
+
+ # 获取问题的标准答案
+ def get_user_standard_answer(question,user)
+ if question.question_type == 3
+ standard_answer =[]
+ question.exercise_standard_answers.each do |answer|
+ standard_answer << answer.answer_text
+ end
+ else
+ standard_answer = question.exercise_standard_answers
+ end
+ standard_answer
+ end
+
end
\ No newline at end of file
diff --git a/app/helpers/files_helper.rb b/app/helpers/files_helper.rb
index 6b748649b..238999a71 100644
--- a/app/helpers/files_helper.rb
+++ b/app/helpers/files_helper.rb
@@ -126,7 +126,7 @@ module FilesHelper
(attachment.container_type == "Course" && User.current.allowed_to?(:as_teacher,Course.find(attachment.container_id)))||
(attachment.container_type == "Course" && User.current.member_of_course?(Course.find(attachment.container_id)) && attachment.is_publish == 1)||
attachment.author_id == User.current.id ||
- attachment.container_type == "OrgSubfield"
+ (attachment.container_type == "OrgSubfield" and User.current.member_of_org?(attachment.container.organization))
result << attachment
end
end
diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb
index efb67a2ac..44b919121 100644
--- a/app/helpers/users_helper.rb
+++ b/app/helpers/users_helper.rb
@@ -1,609 +1,676 @@
-# encoding: utf-8
-#
-# Redmine - project management software
-# Copyright (C) 2006-2013 Jean-Philippe Lang
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
-
-
-include AvatarHelper
-module UsersHelper
- def users_status_options_for_select(selected)
- user_count_by_status = User.count(:group => 'status').to_hash
- options_for_select([[l(:label_all), ''],
- ["#{l(:status_active)} (#{user_count_by_status[1].to_i})", '1'],
- ["#{l(:status_registered)} (#{user_count_by_status[2].to_i})", '2'],
- ["#{l(:status_locked)} (#{user_count_by_status[3].to_i})", '3']], selected.to_s)
- end
-
- def get_resource_type type
- case type
- when 'Course'
- '课程资源'
- when 'Project'
- '项目资源'
- when 'Issue'
- '缺陷附件'
- when 'Message'
- '讨论区附件'
- when 'Document'
- '文档附件'
- when 'News'
- '通知附件'
- when 'HomewCommon'
- '作业附件'
- when 'StudentWorkScore'
- '批改附件'
- when 'Principal'
- '用户资源'
- when 'OrgSubfield'
- '组织资源'
- end
- end
-
- def title_for_message type
- case type
- when nil
- '消息'
- when 'unviewed'
- '未读消息'
- when 'apply'
- '用户申请'
- when 'system_messages'
- '系统消息'
- when 'homework'
- '作业消息'
- when 'course_message'
- '课程讨论'
- when 'course_news'
- '课程通知'
- when 'poll'
- '课程问卷'
- when 'issue'
- '项目任务'
- when 'forge_message'
- '项目讨论'
- when 'forge_news'
- '项目新闻'
- when 'forum'
- '贴吧帖子'
- when 'user_feedback'
- '用户留言'
- end
- end
-
- def link_to_user_version(version, options = {})
- return '' unless version && version.is_a?(Version)
- link_to_if version.visible?, format_version_name(version), { :controller => 'versions', :action => 'show', :id => version }, :class => "linkBlue"
- end
-
- # 统计未读消息数
- def unviewed_message(user)
- course_count = CourseMessage.where("user_id =? and viewed =?", user, 0).count
- forge_count = ForgeMessage.where("user_id =? and viewed =?", user, 0).count
- org_count = OrgMessage.where("user_id =? and viewed =?", user, 0).count
- user_feedback_count = UserFeedbackMessage.where("user_id =? and viewed =?", user, 0).count
- user_memo_count = MemoMessage.where("user_id =? and viewed =?", user, 0).count
- at_count = user.at_messages.where(viewed: false).count
- messages_count = course_count + forge_count + user_feedback_count + user_memo_count + at_count + org_count
- end
-
- def user_mail_notification_options(user)
- user.valid_notification_options.collect {|o| [l(o.last), o.first]}
- end
-
- def change_status_link(user)
- url = {:controller => 'users', :action => 'update', :id => user, :page => params[:page], :status => params[:status], :tab => nil}
-
- if user.locked?
- link_to l(:button_unlock), url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :put, :class => 'icon icon-unlock'
- elsif user.registered?
- link_to l(:button_activate), url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :put, :class => 'icon icon-unlock'
- elsif user != User.current
- link_to l(:button_lock), url.merge(:user => {:status => User::STATUS_LOCKED}), :method => :put, :class => 'icon icon-lock'
- end
- end
-
- def user_settings_tabs
- tabs = [{:name => 'general', :partial => 'users/general', :label => :label_general},
- {:name => 'memberships', :partial => 'users/memberships', :label => :label_project_plural}
- ]
- if Group.all.any?
- tabs.insert 1, {:name => 'groups', :partial => 'users/groups', :label => :label_group_plural}
- end
- tabs
- end
-
- # this method is used to get all projects that tagged one tag
- # added by william
- def get_users_by_tag(tag_name)
- User.tagged_with(tag_name).order('updated_on desc')
- end
-
- # added by fq
- #
-
- # TODO: 待删
- # def show_activity(state)
- # content = ''.html_safe
- # case state
- # when 0
- # s = content_tag('span', l(:label_user_all_activity), :class => "current-page")
- # content << content_tag('li', s)
- # content << content_tag('li', link_to(l(:label_user_activity_myself), {:controller => 'users', :action => 'show', :type => 1}))
- # content << content_tag('li', link_to(l(:label_user_all_respond), {:controller => 'users', :action => 'show', :type => 2}))
- # when 1
- # s = content_tag('span', l(:label_user_activity_myself), :class => "current-page")
- # content << content_tag('li', link_to(l(:label_user_all_activity), {:controller => 'users', :action => 'show'}))
- # content << content_tag('li', s, :class => "current-page")
- # content << content_tag('li', link_to(l(:label_user_all_respond), {:controller => 'users', :action => 'show', :type => 2}))
- # when 2
- # s = content_tag('span', l(:label_user_all_respond), :class => "current-page")
- # content << content_tag('li', link_to(l(:label_user_all_activity), {:controller => 'users', :action => 'show'}))
- # content << content_tag('li', link_to(l(:label_user_activity_myself), {:controller => 'users', :action => 'show', :type => 1}))
- # content << content_tag('li', s, :class => "current-page")
- # end
- # content_tag('div', content, :class => "pagination")
- # end
-
- #TODO: 待删
- def watch_projects(state)
- content = ''.html_safe
- case state
- when 0
- s = content_tag('span', l(:label_project_take), :class => "current-page")
- content << content_tag('li', s)
- content << content_tag('li', link_to(l(:label_has_watched_project), {:controller => 'users', :action => 'watch_projects', :type => 1}))
- when 1
- s = content_tag('span', l(:label_has_watched_project), :class => "current-page")
- content << content_tag('li', link_to(l(:label_project_take), {:controller => 'users', :action => 'user_projects'}))
- content << content_tag('li', s, :class => "current-page")
- end
- content_tag('div', content, :class => "pagination")
- end
-
- def user_course(state)
- content = ''.html_safe
- if @user != User.current
- if @user.user_extensions.identity == 0
- case state
- when 0
- s = content_tag('span', '他执教的课程', :class => "current-page")
- content << content_tag('li', s)
- content << content_tag('li', link_to('他发布的作业', {:controller => 'users', :action => 'user_courses', :type => 1}))
- content_tag('div', content, :class => "pagination")
- when 1
- s = content_tag('span', '他发布的作业', :class => "current-page")
- content << content_tag('li', link_to('他执教的课程', {:controller => 'users', :action => 'user_courses'}))
- content << content_tag('li', s, :class => "current-page")
- content_tag('div', content, :class => "pagination")
- end
- else
- case state
- when 0
- s = content_tag('span', '他的课程', :class => "current-page")
- content << content_tag('li', s)
- content << content_tag('li', link_to('他的作业', {:controller => 'users', :action => 'user_courses', :type => 1}))
- content_tag('div', content, :class => "pagination")
- when 1
- s = content_tag('span', '他的作业', :class => "current-page")
- content << content_tag('li', link_to('他的课程', {:controller => 'users', :action => 'user_courses', :type => 0}))
- content << content_tag('li', s, :class => "current-page")
- content_tag('div', content, :class => "pagination")
- end
- end
- else
- if @user.user_extensions.identity == 0
- case state
- when 0
- s = content_tag('span', l(:label_teaching_course), :class => "current-page")
- content << content_tag('li', s)
- content << content_tag('li', link_to(l(:label_release_homework), {:controller => 'users', :action => 'user_courses', :type => 1}))
- content_tag('div', content, :class => "pagination")
- when 1
- s = content_tag('span', l(:label_release_homework), :class => "current-page")
- content << content_tag('li', link_to(l(:label_teaching_course), {:controller => 'users', :action => 'user_courses'}))
- content << content_tag('li', s, :class => "current-page")
- content_tag('div', content, :class => "pagination")
- end
- else
- case state
- when 0
- s = content_tag('span', l(:label_my_course), :class => "current-page")
- content << content_tag('li', s)
- content << content_tag('li', link_to('我的作业', {:controller => 'users', :action => 'user_courses', :type => 1}))
- content_tag('div', content, :class => "pagination")
- when 1
- s = content_tag('span', '我的作业', :class => "current-page")
- content << content_tag('li', link_to(l(:label_my_course), {:controller => 'users', :action => 'user_courses', :type => 0}))
- content << content_tag('li', s, :class => "current-page")
- content_tag('div', content, :class => "pagination")
- end
- end
- end
- end
-
- # added by huang
- def sort_user(state, project_type)
- content = ''.html_safe
- case state
- when 0
- content << content_tag('li', link_to(l(:label_sort_by_active), users_path(params.merge({:user_sort_type => '1', :project_type => project_type}) )))
- content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(params.merge({:user_sort_type => '2', :project_type => project_type}) )))
- content << content_tag('li', link_to(l(:label_sort_by_time), users_path(params.merge({:user_sort_type => '0', :project_type => project_type}) ), :class=>"selected") )
- when 1
- content << content_tag('li', link_to(l(:label_sort_by_active), users_path(params.merge({:user_sort_type => '1', :project_type => project_type}) ), :class=>"selected") )
- content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(params.merge({:user_sort_type => '2', :project_type => project_type}) )))
- content << content_tag('li', link_to(l(:label_sort_by_time), users_path(params.merge({:user_sort_type => '0', :project_type => project_type}) )))
- when 2
- content << content_tag('li', link_to(l(:label_sort_by_active), users_path(params.merge({:user_sort_type => '1', :project_type => project_type}) )))
- content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(params.merge({:user_sort_type => '2', :project_type => project_type}) ), :class=>"selected") )
- content << content_tag('li', link_to(l(:label_sort_by_time), users_path(params.merge({:user_sort_type => '0', :project_type => project_type}) )))
- end
- content = content_tag('ul', content)
- content_tag('div', content, :class => "tabs")
- end
-
- def sort_user_enterprise(state, project_type)
- content = ''.html_safe
- case state
- when 0
- content << content_tag('li', link_to(l(:label_sort_by_active), users_path(:user_sort_type => '1', :project_type => project_type)))
- content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(:user_sort_type => '2', :project_type => project_type)))
- content << content_tag('li', link_to(l(:label_sort_by_time), users_path(:user_sort_type => '0', :project_type => project_type), :class=>"selected"), :class=>"selected")
- when 1
- content << content_tag('li', link_to(l(:label_sort_by_active), users_path(:user_sort_type => '1', :project_type => project_type), :class=>"selected"), :class=>"selected")
- content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(:user_sort_type => '2', :project_type => project_type)))
- content << content_tag('li', link_to(l(:label_sort_by_time), users_path(:user_sort_type => '0', :project_type => project_type)))
- when 2
- content << content_tag('li', link_to(l(:label_sort_by_active), users_path(:user_sort_type => '1', :project_type => project_type)))
- content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(:user_sort_type => '2', :project_type => project_type), :class=>"selected"), :class=>"selected")
- content << content_tag('li', link_to(l(:label_sort_by_time), users_path(:user_sort_type => '0', :project_type => project_type)))
- end
- content = content_tag('ul', content)
- content_tag('div', content, :class => "tabs_enterprise")
- end
-
- def gender_avatar_uri user
- img_uri = '/images/sidebar/female.png'
- return img_uri if user.user_extensions.blank?
- person_gender = user.user_extensions.gender
- img_uri = (person_gender == 1) ? '/images/sidebar/female.png' : '/images/sidebar/male.png'
- end
-
- include CoursesHelper
- def is_watching?(user)
- login_user = User.current# 登录者
-
- courses = user.projects.where('project_type=1')
- return true if ((login_user == user) or login_user.admin?)
- courses.each do |course|
- return true if login_user.member_of?(course)
- end
- ## 下面的代码只判断是否是老师或者助教,上面是成员都可以看到
- # people_ids = []
- # user.projects.where('project_type=1').each do |project|
- # tmp = searchTeacherAndAssistant(project)
- # people_ids += (members_to_user_ids(tmp)) unless tmp.nil?
- # end
- # people_ids.include?(login_user.id) or (login_user == user) or login_user.admin?
-
- false
- end
-
- # base user上面的navbar显示内容
- def show_item_on_navbar params
- displayed_item = %w|index|
- displayed_item.include?(params['action'])
- end
- # base user上面searchBar显示
- def show_search_bar params
- displayed_flag = %w|index|
- !displayed_flag.include?(params['action'])
- end
-
- #获取指定用户的未过期的课程列表
- def user_courses_list user
- result = []
- user.coursememberships.map(&:course).each do |course|
- if !course_endTime_timeout?(course)
- result << course
- end
- end
- return result
- end
-
- #获取用户参与的公开的课程列表
- def user_public_course_list user
- membership = user.coursememberships.all#@user.coursememberships.all(:conditions => Course.visible_condition(User.current))
- membership.sort! {|older, newer| newer.created_on <=> older.created_on }
- memberships = []
- membership.collect { |e|
- memberships.push(e)
- }
- ## 判断课程是否过期 [需封装]
- memberships_doing = []
- memberships_done = []
- memberships.map { |e|
- if course_endTime_timeout?(e.course)
- memberships_done.push e
- else
- memberships_doing.push e
- end
- }
- end
-
- #获取用户留言相关的连接
- def user_jour_feed_back_url active
- if active.act_type == "JournalsForMessage"
- jour = JournalsForMessage.find active.act_id
- if jour
- case jour.jour_type
- when "Principal"
- link_to(l(:label_goto), user_newfeedback_user_path(jour.jour_id))
- when "Project"
- link_to(l(:label_goto), project_feedback_path(jour.jour_id))
- when "Bid"
- link_to(l(:label_goto), course_for_bid_path(jour.jour_id))
- when "Course"
- link_to(l(:label_goto), course_feedback_path(jour.jour_id))
- when "Contest"
- link_to(l(:label_goto), show_contest_contest_path(jour.jour_id))
- when "Softapplication"
- link_to(l(:label_goto), softapplication_path(jour.jour_id))
- when "HomeworkAttach"
- link_to(l(:label_goto), course_for_bid_path(jour.jour_id))
- end
- end
- end
- end
-
- def get_watcher_users(obj)
- count = User.watched_by(obj.id).count
- if count == 0
- return [0,[]]
- end
- list = User.watched_by(obj.id).order("#{Watcher.table_name}.id desc").limit(10).all
- return [count,list];
- end
-
- def get_fans_users(obj)
- count = obj.watcher_users.count
- if count == 0
- return [0,[]]
- end
- list = obj.watcher_users.order("#{Watcher.table_name}.id desc").limit(10).all
- return [count,list];
- end
-
- def get_visitor_users(obj)
- query = Visitor.where("master_id=?",obj.id)
- count = query.count
- if count == 0
- return [0,[]]
- end
- list = query.order("updated_on desc").limit(10).all
- return [count,list]
- end
-
- def get_create_course_count(user)
- user.courses.visible.where("tea_id = ?",user.id).count
- end
-
- #获取加入课程数
- def get_join_course_count(user)
- user.courses.visible.count - get_create_course_count(user)
- end
-
- #发布作业数
- def get_homework_commons_count(user)
- HomeworkCommon.where("user_id = ?",user.id).count
- end
-
- #资源数
- def get_projectandcourse_attachment_count(user)
- Attachment.where("author_id = ? and container_type in ('Project','Course')",user.id).count
- end
-
- #创建项目数
- def get_create_project_count(user)
- user.projects.visible.where("projects.user_id=#{user.id}").count
- end
-
- #加入项目数
- def get_join_project_count(user)
- user.projects.visible.count - get_create_project_count(user)
- end
-
- #创建缺陷数
- def get_create_issue_count(user)
- Issue.where("author_id = ?",user.id).count
- end
-
- #解决缺陷数
- def get_resolve_issue_count(user)
- Issue.where("assigned_to_id = ? and status_id=3",user.id).count
- end
-
- #参与匿评数
- def get_anonymous_evaluation_count(user)
- StudentWorksScore.where("user_id = ? and reviewer_role=3",user.id).count
- end
-
- def query_activities(query)
- list = query.limit(13).all
- result = []
- for item in list
- container = get_activity_container(item)
- result << { :item=>item,:e=>container }
- end
- result
- end
-
- def get_activity_container activity
- return activity.activity_container
- end
-
- def get_activity_act_showname_htmlclear(activity)
- str = get_activity_act_showname(activity)
- str = str.gsub(/<.*>/,'')
- str = str.gsub(/\r/,'')
- str = str.gsub(/\n/,'')
- str = str.lstrip.rstrip
- if str == ''
- str = 'RE:'
- end
- return str.html_safe
- end
-
- # journal.details 记录每个动作的新旧值
- def get_issue_des_update(journal)
- no_html = "message"
- arr = details_to_strings(journal.details, no_html)
- unless journal.notes.blank?
- arr << journal.notes
- end
- str = ''
- arr.each { |item| str = str+item }
- return str
- end
-
- def get_activity_act_showname(activity)
- case activity.act_type
- when "HomeworkCommon"
- return activity.act.name
- when "Issue"
- return activity.act.subject
- when "Journal"
- arr = details_to_strings(activity.act.details,true)
- arr << activity.act.notes
- str = ''
- arr.each { |item| str = str+item }
- return str
- when "JournalsForMessage"
- return activity.act.notes
- when "Message"
- return activity.act.subject
- when "News"
- return activity.act.title
- when "Poll"
- return activity.act.polls_name
- when "Contest"
- return ''
- when "Contestnotification"
- return ''
- when "Principal"
- return ''
- else
- return activity.act_type
- end
- end
-
- def get_activity_act_createtime(activity)
- case activity.act_type
- when "HomeworkCommon"
- return activity.act.created_at
- when "Poll"
- return activity.act.created_at
- else
- 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"
- # when "Principal"
- when "HomeworkCommon"
- return homework_common_index_path( :course=>e.id )
- when "Issue"
- return issue_path(activity.act.id)
- when "Journal"
- return issue_path( activity.act.journalized_id )
- when "JournalsForMessage"
- return e.class.to_s == 'Course' ? course_feedback_path(e) : project_feedback_path(e)
- when "Message"
- return e.class.to_s == 'Course' ? course_boards_path(e) : project_boards_path(e)
- when "News"
- return news_path(activity.act)
- #return e.class.to_s == 'Course' ? course_news_index_path(e) : project_news_index_path(e)
- when "Poll"
- return poll_index_path( :polls_group_id=>activity.act.polls_group_id, :polls_type=>e.class.to_s )
- else
- return 'javascript:;'
- end
- end
-
- def get_activity_opt(activity,e)
- case activity.act_type
- when "HomeworkCommon"
- return '创建了作业'
- when "News"
- return e.class.to_s == 'Course' ? '发布了通知' : '添加了新闻'
- when "Issue"
- return '发表了问题'
- when "Journal"
- return '更新了问题'
- when "JournalsForMessage"
- return e.class.to_s == 'Course' ? '发表了留言' : '提交了反馈'
- #return ( activity.act.reply_id == nil || activity.act.reply_id == 0 ) ? '' : ''
- when "Message"
- return ( activity.act.parent_id == nil || activity.act.parent_id == '' ) ? '发布了帖子' : '回复了帖子'
- when "Poll"
- return '创建了问卷'
- else
- return '有了新动态'
- end
- end
-
- #获取指定用户作为老师的课程
- def get_as_teacher_courses user
- type = []
- option = []
- option << "请选择发布作业的课程"
- option << -1
- type << option
- user.courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(created_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").select{|c| user.allowed_to?(:as_teacher,c)}.each do |course|
- option = []
- option << course.name+"("+course.time.to_s+course.term+")"
- option << course.id
- type << option
- end
- type
- end
-
-end
+# encoding: utf-8
+#
+# Redmine - project management software
+# Copyright (C) 2006-2013 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+
+include AvatarHelper
+module UsersHelper
+ def users_status_options_for_select(selected)
+ user_count_by_status = User.count(:group => 'status').to_hash
+ options_for_select([[l(:label_all), ''],
+ ["#{l(:status_active)} (#{user_count_by_status[1].to_i})", '1'],
+ ["#{l(:status_registered)} (#{user_count_by_status[2].to_i})", '2'],
+ ["#{l(:status_locked)} (#{user_count_by_status[3].to_i})", '3']], selected.to_s)
+ end
+
+ def get_resource_type type
+ case type
+ when 'Course'
+ '课程资源'
+ when 'Project'
+ '项目资源'
+ when 'Issue'
+ '缺陷附件'
+ when 'Message'
+ '讨论区附件'
+ when 'Document'
+ '文档附件'
+ when 'News'
+ '通知附件'
+ when 'HomewCommon'
+ '作业附件'
+ when 'StudentWorkScore'
+ '批改附件'
+ when 'Principal'
+ '用户资源'
+ when 'OrgSubfield'
+ '组织资源'
+ end
+ end
+
+ def get_resource_origin attach
+ type = attach.container_type
+ content = attach.container
+ unless content.nil?
+ case type
+ when 'Course'
+ result = current_time_and_term_resource content
+ when 'Project'
+ result = content.name
+ when 'Issue'
+ result = content.subject
+ when 'Message'
+ result = content.subject
+ when 'News'
+ result = content.title
+ when 'HomewCommon'
+ result = content.name
+ when 'StudentWorkScore'
+ result = content.name
+ when 'Principal'
+ result = content.name
+ when 'OrgSubfield'
+ result = content.name
+ end
+ end
+ end
+
+ def current_time_and_term_resource course
+ str = ""
+ term = cur_course_term_resource
+ name = course.name
+ if (course.time == course.end_time && course.term == course.end_term) || (course.end_term.nil? && course.end_time.nil?) || course.time > Time.now.year
+ str = name + "(" + course.time.to_s + course.term.to_s + ")"
+ elsif course.time == Time.now.year && set_term_value(cur_course_term) <= set_term_value(course.term)
+ str = name + "(" + course.time.to_s + course.term.to_s + ")"
+ elsif course.end_time < Time.now.year || (course.end_time == Time.now.year && set_term_value(cur_course_term) >= set_term_value(course.term))
+ str = name + "(" + course.end_time.to_s + course.end_term.to_s + ")"
+ else
+ str = name + "(" + Time.now.year.to_s + cur_course_term_resource.to_s + ")"
+ end
+ str
+ end
+
+ def cur_course_term_resource
+ month = Time.now.month
+ if month >= 9 || month < 2
+ term = "秋"
+ elsif (month >= 7 && Time.now.day >= 15) || month == 8
+ term = "夏"
+ else
+ term = "春"
+ end
+ term
+ end
+
+ def title_for_message type
+ case type
+ when nil
+ '消息'
+ when 'unviewed'
+ '未读消息'
+ when 'apply'
+ '用户申请'
+ when 'system_messages'
+ '系统消息'
+ when 'homework'
+ '作业消息'
+ when 'course_message'
+ '课程讨论'
+ when 'course_news'
+ '课程通知'
+ when 'poll'
+ '课程问卷'
+ when 'issue'
+ '项目任务'
+ when 'forge_message'
+ '项目讨论'
+ when 'forge_news'
+ '项目新闻'
+ when 'forum'
+ '贴吧帖子'
+ when 'user_feedback'
+ '用户留言'
+ end
+ end
+
+ def link_to_user_version(version, options = {})
+ return '' unless version && version.is_a?(Version)
+ link_to_if version.visible?, format_version_name(version), { :controller => 'versions', :action => 'show', :id => version }, :class => "linkBlue"
+ end
+
+ # 统计未读消息数
+ def unviewed_message(user)
+ course_count = CourseMessage.where("user_id =? and viewed =?", user, 0).count
+ forge_count = ForgeMessage.where("user_id =? and viewed =?", user, 0).count
+ org_count = OrgMessage.where("user_id =? and viewed =?", user, 0).count
+ user_feedback_count = UserFeedbackMessage.where("user_id =? and viewed =?", user, 0).count
+ user_memo_count = MemoMessage.where("user_id =? and viewed =?", user, 0).count
+ at_count = user.at_messages.where(viewed: false).count
+ messages_count = course_count + forge_count + user_feedback_count + user_memo_count + at_count + org_count
+ end
+
+ def user_mail_notification_options(user)
+ user.valid_notification_options.collect {|o| [l(o.last), o.first]}
+ end
+
+ def change_status_link(user)
+ url = {:controller => 'users', :action => 'update', :id => user, :page => params[:page], :status => params[:status], :tab => nil}
+
+ if user.locked?
+ link_to l(:button_unlock), url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :put, :class => 'icon icon-unlock'
+ elsif user.registered?
+ link_to l(:button_activate), url.merge(:user => {:status => User::STATUS_ACTIVE}), :method => :put, :class => 'icon icon-unlock'
+ elsif user != User.current
+ link_to l(:button_lock), url.merge(:user => {:status => User::STATUS_LOCKED}), :method => :put, :class => 'icon icon-lock'
+ end
+ end
+
+ def user_settings_tabs
+ tabs = [{:name => 'general', :partial => 'users/general', :label => :label_general},
+ {:name => 'memberships', :partial => 'users/memberships', :label => :label_project_plural}
+ ]
+ if Group.all.any?
+ tabs.insert 1, {:name => 'groups', :partial => 'users/groups', :label => :label_group_plural}
+ end
+ tabs
+ end
+
+ # this method is used to get all projects that tagged one tag
+ # added by william
+ def get_users_by_tag(tag_name)
+ User.tagged_with(tag_name).order('updated_on desc')
+ end
+
+ # added by fq
+ #
+
+ # TODO: 待删
+ # def show_activity(state)
+ # content = ''.html_safe
+ # case state
+ # when 0
+ # s = content_tag('span', l(:label_user_all_activity), :class => "current-page")
+ # content << content_tag('li', s)
+ # content << content_tag('li', link_to(l(:label_user_activity_myself), {:controller => 'users', :action => 'show', :type => 1}))
+ # content << content_tag('li', link_to(l(:label_user_all_respond), {:controller => 'users', :action => 'show', :type => 2}))
+ # when 1
+ # s = content_tag('span', l(:label_user_activity_myself), :class => "current-page")
+ # content << content_tag('li', link_to(l(:label_user_all_activity), {:controller => 'users', :action => 'show'}))
+ # content << content_tag('li', s, :class => "current-page")
+ # content << content_tag('li', link_to(l(:label_user_all_respond), {:controller => 'users', :action => 'show', :type => 2}))
+ # when 2
+ # s = content_tag('span', l(:label_user_all_respond), :class => "current-page")
+ # content << content_tag('li', link_to(l(:label_user_all_activity), {:controller => 'users', :action => 'show'}))
+ # content << content_tag('li', link_to(l(:label_user_activity_myself), {:controller => 'users', :action => 'show', :type => 1}))
+ # content << content_tag('li', s, :class => "current-page")
+ # end
+ # content_tag('div', content, :class => "pagination")
+ # end
+
+ #TODO: 待删
+ def watch_projects(state)
+ content = ''.html_safe
+ case state
+ when 0
+ s = content_tag('span', l(:label_project_take), :class => "current-page")
+ content << content_tag('li', s)
+ content << content_tag('li', link_to(l(:label_has_watched_project), {:controller => 'users', :action => 'watch_projects', :type => 1}))
+ when 1
+ s = content_tag('span', l(:label_has_watched_project), :class => "current-page")
+ content << content_tag('li', link_to(l(:label_project_take), {:controller => 'users', :action => 'user_projects'}))
+ content << content_tag('li', s, :class => "current-page")
+ end
+ content_tag('div', content, :class => "pagination")
+ end
+
+ def user_course(state)
+ content = ''.html_safe
+ if @user != User.current
+ if @user.user_extensions.identity == 0
+ case state
+ when 0
+ s = content_tag('span', '他执教的课程', :class => "current-page")
+ content << content_tag('li', s)
+ content << content_tag('li', link_to('他发布的作业', {:controller => 'users', :action => 'user_courses', :type => 1}))
+ content_tag('div', content, :class => "pagination")
+ when 1
+ s = content_tag('span', '他发布的作业', :class => "current-page")
+ content << content_tag('li', link_to('他执教的课程', {:controller => 'users', :action => 'user_courses'}))
+ content << content_tag('li', s, :class => "current-page")
+ content_tag('div', content, :class => "pagination")
+ end
+ else
+ case state
+ when 0
+ s = content_tag('span', '他的课程', :class => "current-page")
+ content << content_tag('li', s)
+ content << content_tag('li', link_to('他的作业', {:controller => 'users', :action => 'user_courses', :type => 1}))
+ content_tag('div', content, :class => "pagination")
+ when 1
+ s = content_tag('span', '他的作业', :class => "current-page")
+ content << content_tag('li', link_to('他的课程', {:controller => 'users', :action => 'user_courses', :type => 0}))
+ content << content_tag('li', s, :class => "current-page")
+ content_tag('div', content, :class => "pagination")
+ end
+ end
+ else
+ if @user.user_extensions.identity == 0
+ case state
+ when 0
+ s = content_tag('span', l(:label_teaching_course), :class => "current-page")
+ content << content_tag('li', s)
+ content << content_tag('li', link_to(l(:label_release_homework), {:controller => 'users', :action => 'user_courses', :type => 1}))
+ content_tag('div', content, :class => "pagination")
+ when 1
+ s = content_tag('span', l(:label_release_homework), :class => "current-page")
+ content << content_tag('li', link_to(l(:label_teaching_course), {:controller => 'users', :action => 'user_courses'}))
+ content << content_tag('li', s, :class => "current-page")
+ content_tag('div', content, :class => "pagination")
+ end
+ else
+ case state
+ when 0
+ s = content_tag('span', l(:label_my_course), :class => "current-page")
+ content << content_tag('li', s)
+ content << content_tag('li', link_to('我的作业', {:controller => 'users', :action => 'user_courses', :type => 1}))
+ content_tag('div', content, :class => "pagination")
+ when 1
+ s = content_tag('span', '我的作业', :class => "current-page")
+ content << content_tag('li', link_to(l(:label_my_course), {:controller => 'users', :action => 'user_courses', :type => 0}))
+ content << content_tag('li', s, :class => "current-page")
+ content_tag('div', content, :class => "pagination")
+ end
+ end
+ end
+ end
+
+ # added by huang
+ def sort_user(state, project_type)
+ content = ''.html_safe
+ case state
+ when 0
+ content << content_tag('li', link_to(l(:label_sort_by_active), users_path(params.merge({:user_sort_type => '1', :project_type => project_type}) )))
+ content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(params.merge({:user_sort_type => '2', :project_type => project_type}) )))
+ content << content_tag('li', link_to(l(:label_sort_by_time), users_path(params.merge({:user_sort_type => '0', :project_type => project_type}) ), :class=>"selected") )
+ when 1
+ content << content_tag('li', link_to(l(:label_sort_by_active), users_path(params.merge({:user_sort_type => '1', :project_type => project_type}) ), :class=>"selected") )
+ content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(params.merge({:user_sort_type => '2', :project_type => project_type}) )))
+ content << content_tag('li', link_to(l(:label_sort_by_time), users_path(params.merge({:user_sort_type => '0', :project_type => project_type}) )))
+ when 2
+ content << content_tag('li', link_to(l(:label_sort_by_active), users_path(params.merge({:user_sort_type => '1', :project_type => project_type}) )))
+ content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(params.merge({:user_sort_type => '2', :project_type => project_type}) ), :class=>"selected") )
+ content << content_tag('li', link_to(l(:label_sort_by_time), users_path(params.merge({:user_sort_type => '0', :project_type => project_type}) )))
+ end
+ content = content_tag('ul', content)
+ content_tag('div', content, :class => "tabs")
+ end
+
+ def sort_user_enterprise(state, project_type)
+ content = ''.html_safe
+ case state
+ when 0
+ content << content_tag('li', link_to(l(:label_sort_by_active), users_path(:user_sort_type => '1', :project_type => project_type)))
+ content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(:user_sort_type => '2', :project_type => project_type)))
+ content << content_tag('li', link_to(l(:label_sort_by_time), users_path(:user_sort_type => '0', :project_type => project_type), :class=>"selected"), :class=>"selected")
+ when 1
+ content << content_tag('li', link_to(l(:label_sort_by_active), users_path(:user_sort_type => '1', :project_type => project_type), :class=>"selected"), :class=>"selected")
+ content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(:user_sort_type => '2', :project_type => project_type)))
+ content << content_tag('li', link_to(l(:label_sort_by_time), users_path(:user_sort_type => '0', :project_type => project_type)))
+ when 2
+ content << content_tag('li', link_to(l(:label_sort_by_active), users_path(:user_sort_type => '1', :project_type => project_type)))
+ content << content_tag('li', link_to(l(:label_sort_by_influence), users_path(:user_sort_type => '2', :project_type => project_type), :class=>"selected"), :class=>"selected")
+ content << content_tag('li', link_to(l(:label_sort_by_time), users_path(:user_sort_type => '0', :project_type => project_type)))
+ end
+ content = content_tag('ul', content)
+ content_tag('div', content, :class => "tabs_enterprise")
+ end
+
+ def gender_avatar_uri user
+ img_uri = '/images/sidebar/female.png'
+ return img_uri if user.user_extensions.blank?
+ person_gender = user.user_extensions.gender
+ img_uri = (person_gender == 1) ? '/images/sidebar/female.png' : '/images/sidebar/male.png'
+ end
+
+ include CoursesHelper
+ def is_watching?(user)
+ login_user = User.current# 登录者
+
+ courses = user.projects.where('project_type=1')
+ return true if ((login_user == user) or login_user.admin?)
+ courses.each do |course|
+ return true if login_user.member_of?(course)
+ end
+ ## 下面的代码只判断是否是老师或者助教,上面是成员都可以看到
+ # people_ids = []
+ # user.projects.where('project_type=1').each do |project|
+ # tmp = searchTeacherAndAssistant(project)
+ # people_ids += (members_to_user_ids(tmp)) unless tmp.nil?
+ # end
+ # people_ids.include?(login_user.id) or (login_user == user) or login_user.admin?
+
+ false
+ end
+
+ # base user上面的navbar显示内容
+ def show_item_on_navbar params
+ displayed_item = %w|index|
+ displayed_item.include?(params['action'])
+ end
+ # base user上面searchBar显示
+ def show_search_bar params
+ displayed_flag = %w|index|
+ !displayed_flag.include?(params['action'])
+ end
+
+ #获取指定用户的未过期的课程列表
+ def user_courses_list user
+ result = []
+ user.coursememberships.map(&:course).each do |course|
+ if !course_endTime_timeout?(course)
+ result << course
+ end
+ end
+ return result
+ end
+
+ #获取用户参与的公开的课程列表
+ def user_public_course_list user
+ membership = user.coursememberships.all#@user.coursememberships.all(:conditions => Course.visible_condition(User.current))
+ membership.sort! {|older, newer| newer.created_on <=> older.created_on }
+ memberships = []
+ membership.collect { |e|
+ memberships.push(e)
+ }
+ ## 判断课程是否过期 [需封装]
+ memberships_doing = []
+ memberships_done = []
+ memberships.map { |e|
+ if course_endTime_timeout?(e.course)
+ memberships_done.push e
+ else
+ memberships_doing.push e
+ end
+ }
+ end
+
+ #获取用户留言相关的连接
+ def user_jour_feed_back_url active
+ if active.act_type == "JournalsForMessage"
+ jour = JournalsForMessage.find active.act_id
+ if jour
+ case jour.jour_type
+ when "Principal"
+ link_to(l(:label_goto), user_newfeedback_user_path(jour.jour_id))
+ when "Project"
+ link_to(l(:label_goto), project_feedback_path(jour.jour_id))
+ when "Bid"
+ link_to(l(:label_goto), course_for_bid_path(jour.jour_id))
+ when "Course"
+ link_to(l(:label_goto), course_feedback_path(jour.jour_id))
+ when "Contest"
+ link_to(l(:label_goto), show_contest_contest_path(jour.jour_id))
+ when "Softapplication"
+ link_to(l(:label_goto), softapplication_path(jour.jour_id))
+ when "HomeworkAttach"
+ link_to(l(:label_goto), course_for_bid_path(jour.jour_id))
+ end
+ end
+ end
+ end
+
+ def get_watcher_users(obj)
+ count = User.watched_by(obj.id).count
+ if count == 0
+ return [0,[]]
+ end
+ list = User.watched_by(obj.id).order("#{Watcher.table_name}.id desc").limit(10).all
+ return [count,list];
+ end
+
+ def get_fans_users(obj)
+ count = obj.watcher_users.count
+ if count == 0
+ return [0,[]]
+ end
+ list = obj.watcher_users.order("#{Watcher.table_name}.id desc").limit(10).all
+ return [count,list];
+ end
+
+ def get_visitor_users(obj)
+ query = Visitor.where("master_id=?",obj.id)
+ count = query.count
+ if count == 0
+ return [0,[]]
+ end
+ list = query.order("updated_on desc").limit(10).all
+ return [count,list]
+ end
+
+ def get_create_course_count(user)
+ user.courses.visible.where("tea_id = ?",user.id).count
+ end
+
+ #获取加入课程数
+ def get_join_course_count(user)
+ user.courses.visible.count - get_create_course_count(user)
+ end
+
+ #发布作业数
+ def get_homework_commons_count(user)
+ HomeworkCommon.where("user_id = ?",user.id).count
+ end
+
+ #资源数
+ def get_projectandcourse_attachment_count(user)
+ Attachment.where("author_id = ? and container_type in ('Project','Course')",user.id).count
+ end
+
+ #创建项目数
+ def get_create_project_count(user)
+ user.projects.visible.where("projects.user_id=#{user.id}").count
+ end
+
+ #加入项目数
+ def get_join_project_count(user)
+ user.projects.visible.count - get_create_project_count(user)
+ end
+
+ #创建缺陷数
+ def get_create_issue_count(user)
+ Issue.where("author_id = ?",user.id).count
+ end
+
+ #解决缺陷数
+ def get_resolve_issue_count(user)
+ Issue.where("assigned_to_id = ? and status_id=3",user.id).count
+ end
+
+ #参与匿评数
+ def get_anonymous_evaluation_count(user)
+ StudentWorksScore.where("user_id = ? and reviewer_role=3",user.id).count
+ end
+
+ def query_activities(query)
+ list = query.limit(13).all
+ result = []
+ for item in list
+ container = get_activity_container(item)
+ result << { :item=>item,:e=>container }
+ end
+ result
+ end
+
+ def get_activity_container activity
+ return activity.activity_container
+ end
+
+ def get_activity_act_showname_htmlclear(activity)
+ str = get_activity_act_showname(activity)
+ str = str.gsub(/<.*>/,'')
+ str = str.gsub(/\r/,'')
+ str = str.gsub(/\n/,'')
+ str = str.lstrip.rstrip
+ if str == ''
+ str = 'RE:'
+ end
+ return str.html_safe
+ end
+
+ # journal.details 记录每个动作的新旧值
+ def get_issue_des_update(journal)
+ no_html = "message"
+ arr = details_to_strings(journal.details, no_html)
+ unless journal.notes.blank?
+ arr << journal.notes
+ end
+ str = ''
+ arr.each { |item| str = str+item }
+ return str
+ end
+
+ def get_activity_act_showname(activity)
+ case activity.act_type
+ when "HomeworkCommon"
+ return activity.act.name
+ when "Issue"
+ return activity.act.subject
+ when "Journal"
+ arr = details_to_strings(activity.act.details,true)
+ arr << activity.act.notes
+ str = ''
+ arr.each { |item| str = str+item }
+ return str
+ when "JournalsForMessage"
+ return activity.act.notes
+ when "Message"
+ return activity.act.subject
+ when "News"
+ return activity.act.title
+ when "Poll"
+ return activity.act.polls_name
+ when "Contest"
+ return ''
+ when "Contestnotification"
+ return ''
+ when "Principal"
+ return ''
+ else
+ return activity.act_type
+ end
+ end
+
+ def get_activity_act_createtime(activity)
+ case activity.act_type
+ when "HomeworkCommon"
+ return activity.act.created_at
+ when "Poll"
+ return activity.act.created_at
+ else
+ 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"
+ # when "Principal"
+ when "HomeworkCommon"
+ return homework_common_index_path( :course=>e.id )
+ when "Issue"
+ return issue_path(activity.act.id)
+ when "Journal"
+ return issue_path( activity.act.journalized_id )
+ when "JournalsForMessage"
+ return e.class.to_s == 'Course' ? course_feedback_path(e) : project_feedback_path(e)
+ when "Message"
+ return e.class.to_s == 'Course' ? course_boards_path(e) : project_boards_path(e)
+ when "News"
+ return news_path(activity.act)
+ #return e.class.to_s == 'Course' ? course_news_index_path(e) : project_news_index_path(e)
+ when "Poll"
+ return poll_index_path( :polls_group_id=>activity.act.polls_group_id, :polls_type=>e.class.to_s )
+ else
+ return 'javascript:;'
+ end
+ end
+
+ def get_activity_opt(activity,e)
+ case activity.act_type
+ when "HomeworkCommon"
+ return '创建了作业'
+ when "News"
+ return e.class.to_s == 'Course' ? '发布了通知' : '添加了新闻'
+ when "Issue"
+ return '发表了问题'
+ when "Journal"
+ return '更新了问题'
+ when "JournalsForMessage"
+ return e.class.to_s == 'Course' ? '发表了留言' : '提交了反馈'
+ #return ( activity.act.reply_id == nil || activity.act.reply_id == 0 ) ? '' : ''
+ when "Message"
+ return ( activity.act.parent_id == nil || activity.act.parent_id == '' ) ? '发布了帖子' : '回复了帖子'
+ when "Poll"
+ return '创建了问卷'
+ else
+ return '有了新动态'
+ end
+ end
+
+ #获取指定用户作为老师的课程
+ def get_as_teacher_courses user
+ type = []
+ option = []
+ option << "请选择发布作业的课程"
+ option << -1
+ type << option
+ user.courses.visible.where("is_delete =?", 0).select("courses.*,(SELECT MAX(created_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a").order("a desc").select{|c| user.allowed_to?(:as_teacher,c)}.each do |course|
+ option = []
+ option << course.name+"("+course.time.to_s+course.term+")"
+ option << course.id
+ type << option
+ end
+ type
+ end
+
+ #根据姓名搜索用户
+ def search_user_by_name user_ids, name
+ result_ids = []
+ user_ids.each do |user_id|
+ user = User.find user_id
+ username = user.lastname.to_s.downcase + user.firstname.to_s.downcase
+ if username.include?(name)
+ result_ids << user_id
+ end
+ end
+ result_ids
+ end
+end
diff --git a/app/models/comment.rb b/app/models/comment.rb
index 69753d81c..4d7af1d73 100644
--- a/app/models/comment.rb
+++ b/app/models/comment.rb
@@ -82,9 +82,7 @@ class Comment < ActiveRecord::Base
# 课程成员得分(英雄榜)
def act_as_student_score
if self.commented.course
- unless self.author.allowed_to?(:as_teacher, self.commented.course)
- course_member_score(self.commented.course.id, self.author_id, "NewReply")
- end
+ course_member_score(self.commented.course.id, self.author_id, "NewReply")
end
end
diff --git a/app/models/course_contributor_score.rb b/app/models/course_contributor_score.rb
index f2b05458f..4f3b3e187 100644
--- a/app/models/course_contributor_score.rb
+++ b/app/models/course_contributor_score.rb
@@ -1,5 +1,6 @@
class CourseContributorScore < ActiveRecord::Base
- attr_accessible :course_id, :journal_num, :journal_reply_num, :message_num, :message_reply_num, :news_reply_num, :resource_num, :user_id, :total_score
+ attr_accessible :course_id, :journal_num, :journal_reply_num, :message_num, :message_reply_num, :news_reply_num,
+ :resource_num, :user_id, :total_score, :homework_journal_num, :news_num
belongs_to :course
belongs_to :user
end
diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb
index cdcf9d19e..7990979e4 100644
--- a/app/models/journals_for_message.rb
+++ b/app/models/journals_for_message.rb
@@ -283,10 +283,12 @@ class JournalsForMessage < ActiveRecord::Base
end
end
- # 课程成员得分(英雄榜)
+ # 课程成员得分(活跃度)
def act_as_student_score
- if !self.user.allowed_to?(:as_teacher, self.jour) && self.jour_type == "Course"
+ if self.jour_type == "Course"
course_member_score(self.jour_id, self.user_id, "JournalForMessage")
+ elsif self.jour_type == "HomeworkCommon"
+ course_member_score(self.jour.course_id, self.user_id, "HomeworkCommon")
end
end
diff --git a/app/models/message.rb b/app/models/message.rb
index 24bda5610..44f2d2c80 100644
--- a/app/models/message.rb
+++ b/app/models/message.rb
@@ -341,17 +341,15 @@ class Message < ActiveRecord::Base
delete_kindeditor_assets_from_disk self.id,OwnerTypeHelper::MESSAGE
end
- # 课程成员得分(英雄榜)
+ # 课程成员得分(活跃度)
def act_as_student_score
if self.course
- unless self.author.allowed_to?(:as_teacher, self.course)
- if self.parent_id.nil?
- # 发帖
- course_member_score(self.course.id, self.author_id, "Message")
- else
- # 回帖
- course_member_score(self.course.id, self.author_id, "MessageReply")
- end
+ if self.parent_id.nil?
+ # 发帖
+ course_member_score(self.course.id, self.author_id, "Message")
+ else
+ # 回帖
+ course_member_score(self.course.id, self.author_id, "MessageReply")
end
end
end
diff --git a/app/models/news.rb b/app/models/news.rb
index f31c6bcef..028b6d737 100644
--- a/app/models/news.rb
+++ b/app/models/news.rb
@@ -59,7 +59,7 @@ class News < ActiveRecord::Base
:author_key => :author_id
acts_as_watchable
- after_create :act_as_activity,:act_as_forge_activity, :act_as_course_activity,:act_as_system_message, :add_author_as_watcher, :send_mail, :add_news_count
+ after_create :act_as_activity,:act_as_forge_activity, :act_as_course_activity,:act_as_system_message, :add_author_as_watcher, :send_mail, :add_news_count, :act_as_student_score
after_update :update_activity
after_destroy :delete_kindeditor_assets, :decrease_news_count, :delete_org_activities
@@ -195,4 +195,10 @@ class News < ActiveRecord::Base
OrgActivity.where("container_type='OrgSubfield' and org_act_type='News' and org_act_id=?", self.id).destroy_all
end
+ def act_as_student_score
+ if self.course
+ course_member_score(self.course.id, self.author_id, "News")
+ end
+ end
+
end
\ No newline at end of file
diff --git a/app/views/admin/latest_login_teachers.html.erb b/app/views/admin/latest_login_teachers.html.erb
index 06c0386f5..05f20ba8d 100644
--- a/app/views/admin/latest_login_teachers.html.erb
+++ b/app/views/admin/latest_login_teachers.html.erb
@@ -1,84 +1,84 @@
-<%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2', :media => 'all' %>
-
- <%=l(:label_latest_login_user_list)%>
-
-<%= render 'tab_users' %>
-
-
- 最近登录老师列表
-
-<%= form_tag({}, :method => :get) do %>
-
-
- <%= l(:label_filter_plural) %>
-
- 开始日期:
- <%= text_field_tag 'startdate', params[:startdate], :size => 15, :onchange=>"$('#ui-datepicker-div').hide()", :style=>"float:left"%>
- <%= calendar_for('startdate')%>
- 结束日期:
- <%= text_field_tag 'enddate', params[:enddate], :size => 15, :onchange =>"$('#ui-datepicker-div').hide()", :style=>"float:left"%>
- <%= calendar_for('enddate')%>
- <%= submit_tag l(:button_apply), :class => "small", :name => nil %>
- <%= link_to l(:button_clear), {:controller => 'admin', :action => 'latest_login_teachers'}, :class => 'icon icon-reload' %>
-
-<% end %>
-
-
-
+<%= stylesheet_link_tag 'jquery/jquery-ui-1.9.2', :media => 'all' %>
+
+ <%=l(:label_latest_login_user_list)%>
+
+<%= render 'tab_users' %>
+
+
+ 最近登录老师列表
+
+<%= form_tag({}, :method => :get) do %>
+
+
+ <%= l(:label_filter_plural) %>
+
+ 开始日期:
+ <%= text_field_tag 'startdate', params[:startdate], :size => 15, :onchange=>"$('#ui-datepicker-div').hide()", :style=>"float:left"%>
+ <%= calendar_for('startdate')%>
+ 结束日期:
+ <%= text_field_tag 'enddate', params[:enddate], :size => 15, :onchange =>"$('#ui-datepicker-div').hide()", :style=>"float:left"%>
+ <%= calendar_for('enddate')%>
+ <%= submit_tag l(:button_apply), :class => "small", :name => nil %>
+ <%= link_to l(:button_clear), {:controller => 'admin', :action => 'latest_login_teachers'}, :class => 'icon icon-reload' %>
+
+<% end %>
+
+
+
diff --git a/app/views/admin/projects.html.erb b/app/views/admin/projects.html.erb
index 3f6ee36f0..d12e85856 100644
--- a/app/views/admin/projects.html.erb
+++ b/app/views/admin/projects.html.erb
@@ -45,8 +45,8 @@
- <% project_tree(@projects) do |project, level| %>
- <%= project.css_classes %> <%= level > 0 ? "idnt idnt-#{level}" : nil %>">
+ <% @projects.each do |project| %>
+ ">
<%= project.id %>
diff --git a/app/views/boards/_course_show.html.erb b/app/views/boards/_course_show.html.erb
index de3b038e6..16b4fcd3d 100644
--- a/app/views/boards/_course_show.html.erb
+++ b/app/views/boards/_course_show.html.erb
@@ -22,7 +22,7 @@
-
+
+
+
+ <% if activity.status == 1 %>
+ <%= image_tag("/images/trustie_logo1.png", width: "50px", height: "50px") %>
+ <% else %>
+ <%= link_to image_tag(url_to_avatar(activity.author), :width => "50", :height => "50"), user_path(activity.author_id,:host=>Setting.host_user), :alt => "用户头像" %>
+ <%= render :partial => 'users/show_detail_info', :locals => {:user => activity.author} %>
+ <% end %>
+
+
+
+ <% if activity.status == 1 %>
+ 确实团队
+ <% else %>
+ <% if activity.try(:author).try(:realname) == ' ' %>
+ <%= link_to activity.try(:author), user_path(activity.author_id,:host=>Setting.host_user), :class => "newsBlue mr15" %>
+ <% else %>
+ <%= link_to activity.try(:author).try(:realname), user_path(activity.author_id,:host=>Setting.host_user), :class => "newsBlue mr15" %>
+ <% end %>
+ <% end %>
+ TO
+ <%= link_to activity.course.name.to_s+" | 课程问答区", course_boards_path(activity.course,:host=> Setting.host_course), :class => "newsBlue ml15 mr5"%>
+
+
+ <% if activity.parent_id.nil? %>
+ <%= link_to activity.subject.to_s.html_safe, board_message_path(activity.board_id, activity), :class=> "postGrey" %>
+ <% else %>
+ <%= link_to activity.parent.subject.to_s.html_safe, board_message_path(activity.board_id, activity), :class=> "postGrey"%>
+ <% end %>
+
+ <% if activity.sticky == 1%>
+
置顶
+ <% end%>
+ <% if activity.locked%>
+
+ <% end%>
+
+
+ 发帖时间:<%= format_time(activity.created_on) %>
+
+
+ 更新时间:<%= format_time(CourseActivity.where("course_act_type='#{activity.class}' and course_act_id =#{activity.id}").first.updated_at) %>
+
+
+ <% if activity.parent_id.nil? %>
+ <% content = activity.content%>
+ <% else %>
+ <% content = activity.parent.content%>
+ <% end %>
+ <%=render :partial =>"users/intro_content", :locals=>{:user_activity_id =>user_activity_id, :content=>content} %>
+ <% if activity.status == 1 %>
+
<%= activity.created_on.year %>
+
年
+
<%= activity.created_on.month %>
+
月
+
<%= activity.created_on.day %>
+
日
+ <% end %>
+
+
+
+
+
+ <%= render :partial=>"attachments/activity_attach", :locals=>{:activity => activity} %>
+
+
+
+
+
+
+ <% if activity.author.id == User.current.id%>
+
+ <%= link_to(
+ l(:button_edit),
+ edit_board_message_path(activity.id,:board_id=>activity.board_id,:is_course=>is_course,:is_board=>is_board),
+ :class => 'postOptionLink'
+ ) if activity.course_editable_by?(User.current) %>
+
+
+ <%= link_to(
+ l(:button_delete),
+ delete_board_message_path(activity.id,:board_id=>activity.board_id,:is_course=>is_course,:is_board=>is_board),
+ :method => :post,
+ :data => {:confirm => l(:text_are_you_sure)},
+ :class => 'postOptionLink'
+ ) if activity.course_destroyable_by?(User.current) %>
+
+ <% end %>
+ <%= link_to "发送", "javascript:void(0);", :onclick => "show_send(#{activity.id}, #{User.current.id}, 'message');", :class => "postOptionLink" %>
+
+
+
+
+
+
+
+
+ <% count=0 %>
+ <% if activity.parent %>
+ <% count=activity.parent.children.count%>
+ <% else %>
+ <% count=activity.children.count%>
+ <% end %>
+
+
+
回复
+ <%= count>0 ? "(#{count})" : "" %> ▪
+
+ <% if activity.author == User.current %>
+ 赞 <%= get_praise_num(activity) > 0 ? "(#{get_praise_num(activity)})" : "" %>
+ <% else %>
+ <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
+ <% end %>
+
+
+
<%#=format_date(activity.updated_on)%>
+ <%if count > 3 %>
+
+ <% end %>
+
+
+ <% activity= activity.parent ? activity.parent : activity%>
+ <% replies_all_i = 0 %>
+ <% if count > 0 %>
+
+
+ <% activity.children.reorder("created_on desc").each do |reply|%>
+
+ <% replies_all_i=replies_all_i+1 %>
+
+
+ <%= link_to image_tag(url_to_avatar(reply.author), :width => "33", :height => "33"), user_path(reply.author_id,:host=>Setting.host_user), :alt => "用户头像" %>
+
+
+
+ <% if reply.try(:author).try(:realname) == ' ' %>
+ <%= link_to reply.try(:author), user_path(reply.author_id,:host=>Setting.host_user), :class => "newsBlue mr10 f14" %>
+ <% else %>
+ <%= link_to reply.try(:author).try(:realname), user_path(reply.author_id,:host=>Setting.host_user), :class => "newsBlue mr10 f14" %>
+ <% end %>
+ <%= format_time(reply.created_on) %>
+
+ <% if reply.author == User.current %>
+ 赞 <%= get_praise_num(reply) > 0 ? "(#{get_praise_num(reply)})" : "" %>
+ <% else %>
+ <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%>
+ <% end %>
+
+
+
+
+ <%= reply.content.html_safe %>
+
+
+
+
+ <% end %>
+
+
+ <% end %>
+
+ <% if !activity.locked? && authorize_for_course('messages', 'reply') %>
+
+
<%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33"), user_path(activity.author_id), :alt => "用户头像" %>
+
+
+ <%= form_for('new_form',:url => {:controller=>'messages',:action => 'reply', :id => activity.id, :board_id => activity.board_id, :is_board => is_board,is_course=>is_course},:method => "post", :remote => true) do |f|%>
+
+
+
+
+
发送
+
+
+ <% end%>
+
+
+
+
+
+
+ <% end %>
+
+
+
diff --git a/app/views/users/_homework_detail_information.html.erb b/app/views/users/_homework_detail_information.html.erb
index d650cd084..07328e696 100644
--- a/app/views/users/_homework_detail_information.html.erb
+++ b/app/views/users/_homework_detail_information.html.erb
@@ -1,31 +1,31 @@
-题目信息
-
- <% if homework.nil? %>
-
请先在左侧选择作业
- <% else %>
-
标题:<%=homework.name %>
- 来源:<%=homework.course.name %>
- <% if homework.homework_type == 2 && homework.homework_detail_programing %>
- 编程语言:<%=homework.language_name %>
- <% end %>
- 贡献者:<%=homework.user.show_name %>
- <% if homework.user.user_extensions.occupation && homework.user.user_extensions.occupation!="" %>
- ,<%=homework.user.user_extensions.occupation%>
- <% end %>
-
- 描述如下:
-
-
- <%=homework.description.html_safe %>
-
- <% if homework.homework_type == 2 %>
-
- 测试集:<%=homework.homework_tests.count %>组
-
- <% elsif homework.homework_type ==3 && homework.homework_detail_group %>
-
- 分组人数:<%=homework.homework_detail_group.min_num %> - <%=homework.homework_detail_group.max_num %>人
-
- <% end %>
- <% end %>
+
题目信息
+
+ <% if homework.nil? %>
+
请先在左侧选择作业
+ <% else %>
+
标题:<%=homework.name %>
+ 来源:<%=homework.course.name %>
+ <% if homework.homework_type == 2 && homework.homework_detail_programing %>
+ 编程语言:<%=homework.language_name %>
+ <% end %>
+ 贡献者:<%=homework.user.show_name %>
+ <% if homework.user.user_extensions.occupation && homework.user.user_extensions.occupation!="" %>
+ ,<%=homework.user.user_extensions.occupation%>
+ <% end %>
+
+ 描述如下:
+
+
+ <%=homework.description.html_safe %>
+
+ <% if homework.homework_type == 2 %>
+
+ 测试集:<%=homework.homework_tests.count %>组
+
+ <% elsif homework.homework_type ==3 && homework.homework_detail_group %>
+
+ 分组人数:<%=homework.homework_detail_group.min_num %> - <%=homework.homework_detail_group.max_num %>人
+
+ <% end %>
+ <% end %>
\ No newline at end of file
diff --git a/app/views/users/_homework_post_notice.html.erb b/app/views/users/_homework_post_notice.html.erb
new file mode 100644
index 000000000..d67fa44ae
--- /dev/null
+++ b/app/views/users/_homework_post_notice.html.erb
@@ -0,0 +1,12 @@
+
+
+
+ 题目已发送到目标课程的作业列表,但需要您设置发布和截止时间,以激活相应作业,谢谢!
+
+
+
+
\ No newline at end of file
diff --git a/app/views/users/_homework_repository.html.erb b/app/views/users/_homework_repository.html.erb
new file mode 100644
index 000000000..a30e21a3f
--- /dev/null
+++ b/app/views/users/_homework_repository.html.erb
@@ -0,0 +1,39 @@
+
+
+
+ <% homeworks.each do |homework| %>
+
+ <% end %>
+
\ No newline at end of file
diff --git a/app/views/users/_homework_repository_detail.html.erb b/app/views/users/_homework_repository_detail.html.erb
new file mode 100644
index 000000000..7cf74e11e
--- /dev/null
+++ b/app/views/users/_homework_repository_detail.html.erb
@@ -0,0 +1,33 @@
+
+
题目信息
+
+ <% if homework.nil? %>
+
请先在左侧选择作业
+ <% else %>
+
标题:<%=homework.name %>
+ 来源:<%=homework.course.name %>
+ <% if homework.homework_type == 2 && homework.homework_detail_programing %>
+ 编程语言:<%=homework.language_name %>
+ <% end %>
+ 贡献者:<%=homework.user.show_name %>
+ <% if homework.user.user_extensions.occupation && homework.user.user_extensions.occupation!="" %>
+ ,<%=homework.user.user_extensions.occupation%>
+ <% end %>
+
+ 描述如下:
+
+
+ <%=homework.description.html_safe %>
+
+ <% if homework.homework_type == 2 %>
+
+ 测试集:<%=homework.homework_tests.count %>组
+
+ <% elsif homework.homework_type ==3 && homework.homework_detail_group %>
+
+ 分组人数:<%=homework.homework_detail_group.min_num %> - <%=homework.homework_detail_group.max_num %>人
+
+ <% end %>
+ <% end %>
+
+
\ No newline at end of file
diff --git a/app/views/users/_homework_repository_search.html.erb b/app/views/users/_homework_repository_search.html.erb
new file mode 100644
index 000000000..dfbaacd05
--- /dev/null
+++ b/app/views/users/_homework_repository_search.html.erb
@@ -0,0 +1,29 @@
+
+
\ No newline at end of file
diff --git a/app/views/users/_homework_search_input.html.erb b/app/views/users/_homework_search_input.html.erb
index ba85f0d09..31d7602d4 100644
--- a/app/views/users/_homework_search_input.html.erb
+++ b/app/views/users/_homework_search_input.html.erb
@@ -1,29 +1,29 @@
-
-
\ No newline at end of file
diff --git a/app/views/users/_import_resource_info.html.erb b/app/views/users/_import_resource_info.html.erb
new file mode 100644
index 000000000..bc1152ce4
--- /dev/null
+++ b/app/views/users/_import_resource_info.html.erb
@@ -0,0 +1,75 @@
+
+
选用资源库中的资源
+
+ <% if !params[:course_id].nil? %>
+
公共资源
+
我的资源
+ <% elsif !params[:project_id].nil? %>
+
公共资源
+
我的资源
+ <% elsif !params[:subfield_file_id].nil? %>
+
公共资源
+
我的资源
+ <% end %>
+ <%#= form_tag( url_for(:controller => 'users', :action => 'import_resources_search', :id => User.current.id, :type => 1),
+ :remote => true , :method => 'get', :id => 'resource_search_form') do %>
+
+ <%#= hidden_field_tag(:type,type.nil? ? 1 : type) %>
+ <%# end %>
+
+
+
+
+
+ 资源名称
+ 类别
+ 大小
+ 上传者
+ 上传时间
+
+ <%= form_tag( url_for({:controller => 'users', :action => 'import_into_container',
+ :mul_id => params[:project_id].nil? ? (params[:course_id].nil? ? params[:subfield_file_id] : params[:course_id]) : params[:project_id],
+ :mul_type => params[:project_id].nil? ? (params[:course_id].nil? ? "SubfieldFile" : "Course") : "Project"}),
+ :method => 'post', :id => 'resource_import_container_form') do %>
+ <% @attachments.each do |attach| %>
+
+ <% end %>
+ <% end %>
+
+
+
+
+
+
+
+
diff --git a/app/views/users/_resource_search_form.html.erb b/app/views/users/_resource_search_form.html.erb
index c629f9f32..9e42f9c96 100644
--- a/app/views/users/_resource_search_form.html.erb
+++ b/app/views/users/_resource_search_form.html.erb
@@ -1,7 +1,7 @@
-<%= form_tag( url_for(:controller => 'users',:action => 'resource_search',:id=>user.id),
- :remote=>true ,:method => 'get',:class=>'resourcesSearchloadBox',:id=>'resource_search_form') do %>
-
- <%= hidden_field_tag(:type,type.nil? ? 1 : type) %>
- <%= submit_tag '',:class=>'homepageSearchIcon',:onfocus=>'this.blur();',:style=>'border-style:none' %>
-
+<%= form_tag( url_for(:controller => 'users', :action => 'resource_search', :id => user.id),
+ :remote => true , :method => 'get', :class => 'resourcesSearchloadBox mt10', :id => 'resource_search_form') do %>
+
+ <%= hidden_field_tag(:type,type.nil? ? 1 : type) %>
+ <%= submit_tag '', :class => 'homepageSearchIcon', :onfocus => 'this.blur();', :style => 'border-style:none' %>
+
<% end %>
\ No newline at end of file
diff --git a/app/views/users/_resources_list.html.erb b/app/views/users/_resources_list.html.erb
index a0a1377f1..f679f9c8c 100644
--- a/app/views/users/_resources_list.html.erb
+++ b/app/views/users/_resources_list.html.erb
@@ -1,27 +1,374 @@
-
-<% if attachments.nil? || attachments.empty? %>
-
-
-
-<% else %>
- <% attachments.each do |attach| %>
-
-
-
- <% end %>
-<% end %>
+<% if attachments.nil? || attachments.empty? %>
+
+
+
+<% else %>
+ <% attachments.each do |attach| %>
+
+
+ <% end %>
+<% end %>
+
+
diff --git a/app/views/users/_send_homework_to_course.html.erb b/app/views/users/_send_homework_to_course.html.erb
new file mode 100644
index 000000000..b19fbd1a8
--- /dev/null
+++ b/app/views/users/_send_homework_to_course.html.erb
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+ <%= form_tag send_homework_to_course_user_path(user),:remote=>true,:id=>'choose_course_list_form' %>
+
+ <%= hidden_field_tag(:send_id, send_id) %>
+
+ <% if !courses.empty? %>
+ <% courses.each do |course| %>
+
+ <% end %>
+
+
+
+
+
+
+ <% end %>
+
+
\ No newline at end of file
diff --git a/app/views/users/_show_user_homework_form.html.erb b/app/views/users/_show_user_homework_form.html.erb
index 004c8fec4..be9a5bf13 100644
--- a/app/views/users/_show_user_homework_form.html.erb
+++ b/app/views/users/_show_user_homework_form.html.erb
@@ -1,12 +1,13 @@
<% homeworks.each do |homework| %>
-
-
-
+
<% end %>
+
+
选用题库中的题目
+
+
公共题库
+
我的题库
+
+ <%=render :partial=>'homework_search_input', :locals=>{:type => @type,:is_import => 1} %>
+
+
+
+
+ 作业名称
+ 来源
+ 类别
+ 贡献者
+ 引用数
+ 发布时间
+
+
+ <%= form_tag(user_select_homework_users_path, :multipart => true,:remote => true,:name=>"select_homework_form",:id=>'select_homework_form') do %>
+
+
+ <%= render :partial => 'users/show_user_homework_form', :locals => {:homeworks => @homeworks}%>
+
+ <% end %>
+
+
+
+
+ <%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true%>
+
+
+
+
+
+ <%=render :partial=>'homework_detail_information', :locals=>{:homework=>nil} %>
+
+
+
+
diff --git a/app/views/users/_upload_resource.html.erb b/app/views/users/_upload_resource.html.erb
index c973217f6..b72ec880b 100644
--- a/app/views/users/_upload_resource.html.erb
+++ b/app/views/users/_upload_resource.html.erb
@@ -1,54 +1,54 @@
-
- 上传资源
-
-
- <%= form_tag(user_resource_create_user_path, :multipart => true,:remote => !ie8?,:name=>"upload_form",:id=>'upload_form') do %>
-
-
- <% if defined?(container) && container && container.saved_attachments %>
-
- <% container.attachments.each_with_index do |attachment, i| %>
-
- <%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename readonly', :readonly=>'readonly')%>
- <%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 254, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
- <%= l(:field_is_public)%>:
- <%= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false,:class => 'remove-upload')%>
- <%= if attachment.id.nil?
- #待补充代码
- else
- link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload')
- end
- %>
- <%#= render :partial => 'tags/tag', :locals => {:obj => attachment, :object_flag => "6"} %>
-
- <%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
-
- <% end %>
- <% end %>
-
-
-
-
-
- <%= render :partial => 'attachment_list' %>
-
-
-
-
-
-
-
(未选择文件)
-
您可以上传小于50MB 的文件
-
-
-
-
-
-
- <%= submit_tag '确定',:onclick=>'submit_files();',:onfocus=>'this.blur()',:id=>'upload_files_submit_btn',:class=>'sendSourceText' %>
-
-
-
- <% end %>
-
+
+ 上传资源
+
+
+ <%= form_tag(user_resource_create_user_path(:type=>type,:status=>status), :multipart => true,:remote => !ie8?,:name=>"upload_form",:id=>'upload_form') do %>
+
+
+ <% if defined?(container) && container && container.saved_attachments %>
+
+ <% container.attachments.each_with_index do |attachment, i| %>
+
+ <%= text_field_tag("attachments[p#{i}][filename]", attachment.filename, :class => 'filename readonly', :readonly=>'readonly')%>
+ <%= text_field_tag("attachments[p#{i}][description]", attachment.description, :maxlength => 254, :placeholder => l(:label_optional_description), :class => 'description', :style=>"display: inline-block;") %>
+ <%= l(:field_is_public)%>:
+ <%= check_box_tag("attachments[p#{i}][is_public_checkbox]", attachment.is_public,attachment.is_public == 1 ? true : false,:class => 'remove-upload')%>
+ <%= if attachment.id.nil?
+ #待补充代码
+ else
+ link_to(' '.html_safe, attachment_path(attachment, :attachment_id => "p#{i}", :format => 'js'), :method => 'delete', :remote => true, :class => 'remove-upload')
+ end
+ %>
+ <%#= render :partial => 'tags/tag', :locals => {:obj => attachment, :object_flag => "6"} %>
+
+ <%= hidden_field_tag "attachments[p#{i}][token]", "#{attachment.token}" %>
+
+ <% end %>
+ <% end %>
+
+
+
+
+
+ <%= render :partial => 'attachment_list' %>
+
+
+
+
+
+
+
+
+
+
+
+ <%= submit_tag '确定',:onclick=>'submit_files();',:onfocus=>'this.blur()',:id=>'upload_files_submit_btn',:class=>'sendSourceText' %>
+
+
+
+ <% end %>
+
\ No newline at end of file
diff --git a/app/views/users/_user_homework_detail.html.erb b/app/views/users/_user_homework_detail.html.erb
index 4c980d7fc..0c2856c89 100644
--- a/app/views/users/_user_homework_detail.html.erb
+++ b/app/views/users/_user_homework_detail.html.erb
@@ -1,365 +1,374 @@
-<% is_teacher = User.current.allowed_to?(:as_teacher,homework_common.course) %>
-
-
-
- <%=link_to image_tag(url_to_avatar(homework_common.user),width:"50px", height: "50px"), user_activities_path(homework_common.user.id)%>
-
-
-
- <%= link_to homework_common.user.show_name, user_activities_path(homework_common.user_id), :class => "newsBlue mr15"%>
- TO
- <%= link_to homework_common.course.name, course_path(homework_common.course_id), :class => "newsBlue ml15"%>
-
-
- <%= link_to homework_common.name,student_work_index_path(:homework => homework_common.id),:class => "postGrey"%>
-
-
- <% if homework_common.homework_detail_manual%>
- <% if homework_common.homework_detail_manual.comment_status == 0 %>
-
未发布
- <% elsif homework_common.homework_detail_manual.comment_status == 1%>
- <% if homework_common.anonymous_comment == 0%>
-
未开启匿评
- <% else %>
-
匿评已禁用
- <% end %>
- <% if Time.parse(homework_common.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")%>
-
作品提交中
- <% elsif Time.parse(homework_common.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d") %>
-
作品补交中
- <% end %>
- <% elsif homework_common.homework_detail_manual.comment_status == 2%>
- <% if homework_common.anonymous_comment == 0%>
-
匿评中
- <% else %>
-
匿评已禁用
- <% end %>
-
教师评阅中
- <% elsif homework_common.homework_detail_manual.comment_status == 3%>
- <% if homework_common.anonymous_comment == 0%>
-
匿评已结束
- <% else %>
-
匿评已禁用
- <% end %>
-
教师评阅中
- <% end%>
- <% end%>
-
- <% if homework_common.homework_type == 3 && homework_common.homework_detail_group.base_on_project == 1%>
-
系统提示:该作业要求各组长<%=link_to "创建项目", new_project_path(:host=>Setting.host_name),:class=>"c_red",:title=>"新建项目",:style=>"text-decoration:underline;"%>,组成员加入项目,然后由组长关联项目。谢谢配合!
- <% elsif homework_common.homework_type == 3 && homework_common.homework_detail_group.base_on_project == 0%>
-
系统提示:该作业要求各组长提交作品,提交作品时请添加组成员。谢谢配合!
- <% end %>
-
- <% if homework_common.homework_type == 3 && !is_teacher && homework_common.homework_detail_group.base_on_project == 1 && User.current.member_of_course?(homework_common.course) %>
- <% projects = cur_user_projects_for_homework homework_common %>
- <% works = cur_user_works_for_homework homework_common %>
- <% if works.nil? && projects.nil? %>
-
- <%=link_to "关联项目",new_student_work_project_student_work_index_path(:homework => homework_common.id,:is_in_course=>is_in_course,:user_activity_id=>-1,:course_activity=>-1),remote: true,:class=> 'c_blue', :title=> '请各组长关联作业项目' %>
- <%#= relate_project(activity,is_teacher,-1,user_activity_id,course_activity) %>
-
- <% elsif works.nil? %>
-
- <%=link_to "取消关联",cancel_relate_project_student_work_index_path(:homework => homework_common.id,:is_in_course=>is_in_course,:user_activity_id=>-1,:course_activity=>-1), :confirm => "您确定要取消关联吗?", remote: true,:class => "c_blue", :title=> '取消关联项目' %>
-
- <% end %>
- <% end %>
-
- <%= user_for_homework_common homework_common,is_teacher %>
-
- <% if homework_common.homework_type == 2 && is_teacher%>
-
- <%= link_to "模拟答题", new_user_commit_homework_users_path(homework_id: homework_common.id, is_test: true), class: 'c_blue test-program-btn', title: '教师可以通过模拟答题设置作业的标准答案' %>
-
- <% end %>
- <% if homework_common.homework_type == 2%>
-
- 语言:
- <%= homework_common.language_name%>
-
- <% end %>
- <% if homework_common.homework_type == 3 && homework_common.homework_detail_group%>
-
- 分组人数:<%=homework_common.homework_detail_group.min_num %>-<%=homework_common.homework_detail_group.max_num %> 人
-
- <% end %>
- <% if homework_common.homework_detail_manual && homework_common.homework_detail_manual.comment_status < 2 %>
-
提交截止时间:<%= homework_common.end_time.to_s %> 23:59
- <% elsif homework_common.homework_detail_manual && homework_common.homework_detail_manual.comment_status >= 2 %>
-
匿评截止时间:<%= homework_common.homework_detail_manual.evaluation_end.to_s %> 23:59
- <% end %>
- <% if homework_common.homework_detail_manual.comment_status == 0 %>
-
- <%= l(:label_publish_time)%>:<%= homework_common.publish_time%> 00:00
-
- <% end %>
-
- <%=render :partial =>"users/intro_content", :locals=>{:user_activity_id =>homework_common.id, :content=>homework_common.description} %>
-
-
-
-
-
- <%= render :partial=>"attachments/activity_attach", :locals=>{:activity => homework_common} %>
-
-
-
- 迟交扣分:<%= homework_common.late_penalty%>分
-
- <% if homework_common.anonymous_comment == 0%>
-
- 匿评开启时间:<%= homework_common.homework_detail_manual.evaluation_start%> 00:00
-
- <% end %>
-
-
-
- <% if homework_common.anonymous_comment == 0 %>
-
- 缺评扣分:<%= homework_common.homework_detail_manual.absence_penalty%>分/作品
-
- <% end %>
- <% if homework_common.anonymous_comment == 0%>
-
- 匿评关闭时间:<%= homework_common.homework_detail_manual.evaluation_end%> 23:59
-
- <% end %>
-
-
- <% if homework_common.student_works.count != 0 %>
- <% sw = homework_common.student_works.reorder("created_at desc").first %>
-
- # <%=time_from_now sw.created_at %><%= link_to sw.user.show_name, user_activities_path(sw.user_id), :class => "newsBlue ml5 mr5"%>提交了作品
-
- <% end %>
-
- <% if homework_common.student_works.count != 0 %>
- <% sw_id = "("+homework_common.student_works.map{|sw| sw.id}.join(",")+")" %>
- <% student_work_scores = StudentWorksScore.find_by_sql("select max(created_at) as created_at, student_work_id, user_id from student_works_scores where student_work_id in #{sw_id} group by student_work_id order by max(created_at) desc") %>
- <%# student_work_scores = StudentWorksScore.where("student_work_id in #{sw_id}").reorder("created_at desc") %>
- <% unless student_work_scores.empty? %>
- <% last_score = student_work_scores.first %>
-
-
# <%=time_from_now last_score.created_at %>
- <%= link_to last_score.user.show_name, user_activities_path(last_score.user_id), :class => "newsBlue ml5 mr5"%>评阅了作品,优秀排行:
-
- <% ids = '('+student_work_scores.map{|sw|sw.student_work_id}.join(',')+')' %>
- <% student_works = homework_common.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where("student_works.id in #{ids}").order("score desc") %>
- <% student_works.each_with_index do |sw, i| %>
-
- <% if i == 4 %>
- <% break %>
- <% end %>
- <% end %>
- <% if student_works.count > 5%>
- <%= link_to "更多>>", student_work_index_path(:homework => homework_common.id),:class=>'linkGrey2 fl ml50',:style=>'margin-top:60px;'%>
- <% end %>
-
-
- <% end %>
- <% end %>
-
- <% if homework_common.homework_type == 3 && homework_common.homework_detail_group.base_on_project == 1 %>
- <% projects = homework_common.student_work_projects.where("is_leader = 1") %>
- <% unless projects.empty? %>
- <% sort_projects = project_sort_update projects %>
-
-
- # <%=time_from_now sort_projects.first.updated_at %><%= link_to User.find(sort_projects.first.user_id).show_name, user_activities_path(sort_projects.first.user_id), :class => "newsBlue ml5 mr5"%>更新了项目,最近更新:
-
-
- <% sort_projects.each_with_index do |pro, i| %>
- <% project = Project.find pro.project_id %>
-
-
-
- <% if project.is_public || User.current.member_of?(project) || User.current.admin? %>
- <%= link_to image_tag(url_to_avatar(project),:width=>"40",:height => "40",:class => "borderRadius"),project_path(project.id,:host=>Setting.host_name),:id=>"project_img_"+project.id.to_s+"_"+homework_common.id.to_s,:alt =>"项目头像" %>
- <% else %>
- <%= image_tag(url_to_avatar(project),:width=>"40",:height => "40",:class => "borderRadius",:id=>"project_img_"+project.id.to_s+"_"+homework_common.id.to_s,:alt =>"项目头像") %>
- <% end %>
- <% com_time = project.project_score.commit_time %>
- <% time=project.updated_on %>
- <% time=ForgeActivity.where("project_id=?",project.id).last.updated_at if ForgeActivity.where("project_id=?",project.id).last %>
-
<%=(User.find project.user_id).show_name %> (组长)
-
<%=time_from_now !com_time.nil? && format_time(com_time) > format_time(time) ? com_time : time %> <%= project.project_score.changeset_num %>提交
-
- 项目名称:<%=project.name %>
- 创建者:<%=(User.find project.user_id).show_name %>(组长)
- 更新时间:<%=time_from_now time %>
-
-
- <% if i == 9 && projects.count > 10 %>
-
更多>>
- <% end %>
- <% if i > 9 && i == (projects.count - 1) %>
-
收回<<
- <% end %>
- <% end %>
-
- <% end %>
- <% end %>
-
- <% if is_teacher%>
- <% comment_status = homework_common.homework_detail_manual.comment_status%>
-
-
-
-
-
- <%= link_to l(:button_edit),edit_homework_common_path(homework_common,:is_in_course => is_in_course,:course_activity=>-1), :class => "postOptionLink"%>
-
-
- <%= link_to(l(:label_bid_respond_delete), homework_common_path(homework_common,:is_in_course => is_in_course,:course_activity=>-1),:method => 'delete', :confirm => l(:text_are_you_sure), :class => "postOptionLink") %>
-
-
- <%= link_to("评分设置", score_rule_set_homework_common_path(homework_common, :is_in_course => is_in_course,:course_activity=>-1),:class => "postOptionLink", :remote => true) %>
-
- <% if homework_common.anonymous_comment == 0 &&(comment_status == 0 || comment_status == 1)%>
-
- <%= link_to("匿评设置", start_evaluation_set_homework_common_path(homework_common, :is_in_course => is_in_course,:course_activity=>-1),:class => "postOptionLink", :remote => true)%>
-
- <% end %>
- <% if homework_common.anonymous_comment == 0%>
-
- <%= homework_anonymous_comment(homework_common, is_in_course) %>
-
- <% end %>
- <% if homework_common.anonymous_comment == 0 && (comment_status == 0 || comment_status == 1)%>
-
- <%= link_to("禁用匿评", alert_forbidden_anonymous_comment_homework_common_path(homework_common,:is_in_course => is_in_course),:class => "postOptionLink", :remote => true)%>
-
- <% end %>
- <% if (homework_common.anonymous_comment == 1 && homework_common.is_open == 0) || (homework_common.anonymous_comment == 0 && comment_status == 3 && homework_common.is_open == 0) %>
-
- <%= link_to("公开作品", alert_open_student_works_homework_common_path(homework_common, :is_in_course => is_in_course,:course_activity=> -1),:class => "postOptionLink", :remote => true)%>
-
- <% elsif homework_common.is_open == 1 %>
-
- <%= link_to("取消公开", alert_open_student_works_homework_common_path(homework_common, :is_in_course => is_in_course,:course_activity=> -1),:class => "postOptionLink", :remote => true)%>
-
- <% end %>
-
-
-
-
- <% end%>
-
-
-
-
- <% count=homework_common.journals_for_messages.count %>
-
-
-
回复
- <%= count>0 ? "(#{count})" : "" %> ▪
-
- <% if homework_common.user == User.current %>
- 赞 <%= get_praise_num(homework_common) > 0 ? "(#{get_praise_num(homework_common)})" : "" %>
- <% else %>
- <%=render :partial=> "praise_tread/praise", :locals => {:activity=>homework_common, :user_activity_id=>homework_common.id,:type=>"activity"}%>
- <% end %>
-
-
-
- <%if count>3 %>
-
- <% end %>
-
-
- <% replies_all_i = 0 %>
- <% if count > 0 %>
-
-
- <% homework_common.journals_for_messages.reorder("created_on desc").each do |comment| %>
-
- <% replies_all_i = replies_all_i + 1 %>
-
-
- <%= link_to image_tag(url_to_avatar(comment.user), :width => "33", :height => "33", :class =>"mt8"), user_path(comment.user_id), :alt => "用户头像" %>
-
-
-
- <% if comment.try(:user).try(:realname) == ' ' %>
- <%= link_to comment.try(:user), user_path(comment.user_id), :class => "newsBlue mr10 f14" %>
- <% else %>
- <%= link_to comment.try(:user).try(:realname), user_path(comment.user_id), :class => "newsBlue mr10 f14" %>
- <% end %>
- <%= format_time(comment.created_on) %>
-
-
-
-
-
-
- <% end %>
-
-
- <% end %>
-
-
-
<%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33"), :alt => "用户头像" %>
-
-
- <%= form_for('new_form',:url => {:controller => 'words', :action => 'leave_homework_message', :id => homework_common.id},:method => "post", :remote => true) do |f|%>
- <%= hidden_field_tag 'homework_common_id',params[:homework_common_id],:value =>homework_common.id %>
- <%= hidden_field_tag 'is_in_course',params[:is_in_course],:value =>is_in_course %>
-
-
-
发送
-
-
- <% end%>
-
-
-
-
-
-
-
-
+
+
+ <% if project.is_public || User.current.member_of?(project) || User.current.admin? %>
+ <%= link_to image_tag(url_to_avatar(project),:width=>"40",:height => "40",:class => "borderRadius"),project_path(project.id,:host=>Setting.host_name),:id=>"project_img_"+project.id.to_s+"_"+homework_common.id.to_s,:alt =>"项目头像" %>
+ <% else %>
+ <%= image_tag(url_to_avatar(project),:width=>"40",:height => "40",:class => "borderRadius",:id=>"project_img_"+project.id.to_s+"_"+homework_common.id.to_s,:alt =>"项目头像") %>
+ <% end %>
+ <% com_time = project.project_score.commit_time %>
+ <% time=project.updated_on %>
+ <% time=ForgeActivity.where("project_id=?",project.id).last.updated_at if ForgeActivity.where("project_id=?",project.id).last %>
+
<%=(User.find project.user_id).show_name %> (组长)
+
<%=time_from_now !com_time.nil? && format_time(com_time) > format_time(time) ? com_time : time %> <%= project.project_score.changeset_num %>提交
+
+ 项目名称:<%=project.name %>
+ 创建者:<%=(User.find project.user_id).show_name %>(组长)
+ 更新时间:<%=time_from_now time %>
+
+
+ <% if i == 9 && projects.count > 10 %>
+ 更多>>
+ <% end %>
+ <% if i > 9 && i == (projects.count - 1) %>
+ 收回<<
+ <% end %>
+ <% end %>
+
+ <% end %>
+ <% end %>
+
+ <% if is_teacher%>
+ <% comment_status = homework_common.homework_detail_manual.comment_status%>
+
+
+
+
+
+ <%= link_to l(:button_edit),edit_homework_common_path(homework_common,:is_in_course => is_in_course,:course_activity=>-1), :class => "postOptionLink"%>
+
+
+ <%= link_to(l(:label_bid_respond_delete), homework_common_path(homework_common,:is_in_course => is_in_course,:course_activity=>-1),:method => 'delete', :confirm => l(:text_are_you_sure), :class => "postOptionLink") %>
+
+
+ <%= link_to("评分设置", score_rule_set_homework_common_path(homework_common, :is_in_course => is_in_course,:course_activity=>-1),:class => "postOptionLink", :remote => true) %>
+
+ <% if homework_common.anonymous_comment == 0 &&(comment_status == 0 || comment_status == 1)%>
+
+ <%= link_to("匿评设置", start_evaluation_set_homework_common_path(homework_common, :is_in_course => is_in_course,:course_activity=>-1),:class => "postOptionLink", :remote => true)%>
+
+ <% end %>
+ <% if homework_common.anonymous_comment == 0%>
+
+ <%= homework_anonymous_comment(homework_common, is_in_course) %>
+
+ <% end %>
+ <% if homework_common.anonymous_comment == 0 && (comment_status == 0 || comment_status == 1)%>
+
+ <%= link_to("禁用匿评", alert_forbidden_anonymous_comment_homework_common_path(homework_common,:is_in_course => is_in_course),:class => "postOptionLink",
+ :title => "匿评是同学之间的双盲互评过程:每个同学将评阅系统分配给他/她的若干个作品", :remote => true)%>
+
+ <% end %>
+ <% if (homework_common.anonymous_comment == 1 && homework_common.is_open == 0) || (homework_common.anonymous_comment == 0 && comment_status == 3 && homework_common.is_open == 0) %>
+
+ <%= link_to("公开作品", alert_open_student_works_homework_common_path(homework_common, :is_in_course => is_in_course,:course_activity=> -1),:class => "postOptionLink", :remote => true)%>
+
+ <% elsif homework_common.is_open == 1 %>
+
+ <%= link_to("取消公开", alert_open_student_works_homework_common_path(homework_common, :is_in_course => is_in_course,:course_activity=> -1),:class => "postOptionLink", :remote => true)%>
+
+ <% end %>
+
+
+
+
+ <% end%>
+
+
+
+
+ <% count=homework_common.journals_for_messages.count %>
+
+
+
回复
+ <%= count>0 ? "(#{count})" : "" %> ▪
+
+ <% if homework_common.user == User.current %>
+ 赞 <%= get_praise_num(homework_common) > 0 ? "(#{get_praise_num(homework_common)})" : "" %>
+ <% else %>
+ <%=render :partial=> "praise_tread/praise", :locals => {:activity=>homework_common, :user_activity_id=>homework_common.id,:type=>"activity"}%>
+ <% end %>
+
+
+
+ <%if count>3 %>
+
+ <% end %>
+
+
+ <% replies_all_i = 0 %>
+ <% if count > 0 %>
+
+
+ <% homework_common.journals_for_messages.reorder("created_on desc").each do |comment| %>
+
+ <% replies_all_i = replies_all_i + 1 %>
+
+
+ <%= link_to image_tag(url_to_avatar(comment.user), :width => "33", :height => "33", :class =>"mt8"), user_path(comment.user_id), :alt => "用户头像" %>
+
+
+
+ <% if comment.try(:user).try(:realname) == ' ' %>
+ <%= link_to comment.try(:user), user_path(comment.user_id), :class => "newsBlue mr10 f14" %>
+ <% else %>
+ <%= link_to comment.try(:user).try(:realname), user_path(comment.user_id), :class => "newsBlue mr10 f14" %>
+ <% end %>
+ <%= format_time(comment.created_on) %>
+
+
+
+
+
+
+ <% end %>
+
+
+ <% end %>
+
+
+
<%= link_to image_tag(url_to_avatar(User.current), :width => "33", :height => "33"), :alt => "用户头像" %>
+
+
+ <%= form_for('new_form',:url => {:controller => 'words', :action => 'leave_homework_message', :id => homework_common.id},:method => "post", :remote => true) do |f|%>
+ <%= hidden_field_tag 'homework_common_id',params[:homework_common_id],:value =>homework_common.id %>
+ <%= hidden_field_tag 'is_in_course',params[:is_in_course],:value =>is_in_course %>
+
+
+
发送
+
+
+ <% end%>
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/views/users/_user_homework_form.html.erb b/app/views/users/_user_homework_form.html.erb
index 0d542882a..8b72ec781 100644
--- a/app/views/users/_user_homework_form.html.erb
+++ b/app/views/users/_user_homework_form.html.erb
@@ -1,268 +1,270 @@
-<% content_for :header_tags do %>
- <%= import_ke(enable_at: true, prettify: false, init_activity: false) %>
-
- <%= javascript_include_tag 'homework','baiduTemplate' %>
-
-<% end %>
-
-
-
-
-
-
-
- <%= link_to("导入作业", user_import_homeworks_user_path(User.current.id,:select_course => defined?(select_course)),:class => "BlueCirBtn fl mr10",:remote => true,:title=>"导入自己发布过的作业,或者共享题库中的作业") unless edit_mode%>
- <% unless edit_mode %>
-
- <% end %>
- <% if edit_mode %>
-
截止日期:
- <% end %>
-
-
- <% if homework.homework_detail_manual.comment_status.to_i < 3 %>
- <%= calendar_for('homework_end_time')%>
- <% end %>
-
- <% if edit_mode %>
-
发布日期(可选):
- <% end %>
-
-
- <% if homework.homework_detail_manual.comment_status.to_i == 0 %>
- <%= calendar_for('homework_publish_time')%>
- <% end %>
-
- <% if !edit_mode || edit_mode && homework.homework_detail_manual.comment_status < 2 %>
-
-
- 禁用匿评
-
- <% end %>
-
-
-
-
-
-
- <% if edit_mode %>
-
- <%#= f.kindeditor :description, :editor_id => 'homework_description_editor', :height => "150px", :owner_id => homework.id, :owner_type => OwnerTypeHelper::HOMEWORKCOMMON, at_id: homework.id, at_type: homework.class.to_s %>
- <% else %>
- <%= hidden_field_tag :asset_id, params[:asset_id], :required => false, :style => 'display:none' %>
-
- <%#= f.kindeditor :description, :editor_id => 'homework_description_editor', :height => "150px",at_id: homework.id, at_type: homework.class.to_s %>
- <% end %>
-
-
-
-
- <%= select_tag :course_id, options_for_select(get_as_teacher_courses(User.current), homework.course_id), {:class => "InputBox w709",:value => "请选择发布作业的课程"} %>
-
-
-
-
-
-
- <%= render :partial => 'users/user_homework_attachment', :locals => {:container => homework, :has_program=>!(edit_mode && homework.homework_type != 2), :has_group=>(!(edit_mode && homework.homework_type != 3))&& homework.student_works.empty?,:show_member => true} %>
-
-
-
- <% if edit_mode %>
-
确定
-
或
- <%#= link_to "取消",user_homeworks_user_path(User.current.id),:class => "fr mr10 mt3"%>
-
取消
- <% else %>
-
发送
-
或
-
取消
- <% end %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<% unless edit_mode %>
-
+<% content_for :header_tags do %>
+ <%= import_ke(enable_at: true, prettify: false, init_activity: false) %>
+
+ <%= javascript_include_tag 'homework','baiduTemplate' %>
+
+<% end %>
+
+
+
+
+
+
+
+ <%= link_to("导入作业", user_import_homeworks_user_path(User.current.id,:select_course => defined?(select_course)),:class => "BlueCirBtn fl mr10",:remote => true,:title=>"导入自己发布过的作业,或者共享题库中的作业") unless edit_mode%>
+ <% unless edit_mode %>
+
+ <% end %>
+ <% if edit_mode %>
+
截止日期:
+ <% end %>
+
+
+ <% if homework.homework_detail_manual.comment_status.to_i < 3 %>
+ <%= calendar_for('homework_end_time')%>
+ <% end %>
+
+ <% if edit_mode %>
+
发布日期(可选):
+ <% end %>
+
+
+ <% if homework.homework_detail_manual.comment_status.to_i == 0 %>
+ <%= calendar_for('homework_publish_time')%>
+ <% end %>
+
+ <% if !edit_mode || edit_mode && homework.homework_detail_manual.comment_status < 2 %>
+
+
+ 禁用匿评
+
+ <% end %>
+
+
+
+
+
+
+ <% if edit_mode %>
+
+ <%#= f.kindeditor :description, :editor_id => 'homework_description_editor', :height => "150px", :owner_id => homework.id, :owner_type => OwnerTypeHelper::HOMEWORKCOMMON, at_id: homework.id, at_type: homework.class.to_s %>
+ <% else %>
+ <%= hidden_field_tag :asset_id, params[:asset_id], :required => false, :style => 'display:none' %>
+
+ <%#= f.kindeditor :description, :editor_id => 'homework_description_editor', :height => "150px",at_id: homework.id, at_type: homework.class.to_s %>
+ <% end %>
+
+
+
+
+ <%= select_tag :course_id, options_for_select(get_as_teacher_courses(User.current), homework.course_id), {:class => "InputBox w709",:value => "请选择发布作业的课程"} %>
+
+
+
+
+
+
+ <%= render :partial => 'users/user_homework_attachment', :locals => {:container => homework, :has_program=>!(edit_mode && homework.homework_type != 2), :has_group=>(!(edit_mode && homework.homework_type != 3))&& homework.student_works.empty?,:show_member => true} %>
+
+
+
+ <% if edit_mode %>
+
确定
+
或
+ <%#= link_to "取消",user_homeworks_user_path(User.current.id),:class => "fr mr10 mt3"%>
+
取消
+ <% else %>
+
发送
+
或
+
取消
+ <% end %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<% unless edit_mode %>
+
<% end %>
\ No newline at end of file
diff --git a/app/views/users/_user_homework_list.html.erb b/app/views/users/_user_homework_list.html.erb
index 34e975762..e42c5d8b2 100644
--- a/app/views/users/_user_homework_list.html.erb
+++ b/app/views/users/_user_homework_list.html.erb
@@ -1,40 +1,40 @@
-<%= content_for(:header_tags) do %>
- <%= import_ke(enable_at: true, prettify: false, init_activity: true) %>
-<% end %>
-
-
-<% homework_commons.each do |homework_common|%>
-
- <%= render :partial => 'users/user_homework_detail', :locals => {:homework_common => homework_common,:is_in_course => is_in_course} %>
-<% end%>
-<% if homework_commons.count == 10%>
- <% if is_in_course == 1%>
-
- <%= link_to "点击展开更多",homework_common_index_path(:course => course_id,:page => page,:is_in_course => is_in_course),:id => "user_show_more_homework",:remote => "true",:class => "loadMore f_grey"%>
- <% else%>
-
- <%= link_to "点击展开更多",user_homeworks_user_path(User.current.id,:page => page,:is_in_course => is_in_course),:id => "user_show_more_homework",:remote => "true",:class => "loadMore f_grey"%>
- <% end%>
-<% end%>
-
+<%= content_for(:header_tags) do %>
+ <%= import_ke(enable_at: true, prettify: false, init_activity: true) %>
+<% end %>
+
+
+<% homework_commons.each do |homework_common|%>
+
+ <%= render :partial => 'users/user_homework_detail', :locals => {:homework_common => homework_common,:is_in_course => is_in_course} %>
+<% end%>
+<% if homework_commons.count == 10%>
+ <% if is_in_course == 1%>
+
+ <%= link_to "点击展开更多",homework_common_index_path(:course => course_id,:page => page,:is_in_course => is_in_course),:id => "user_show_more_homework",:remote => "true",:class => "loadMore f_grey"%>
+ <% else%>
+
+ <%= link_to "点击展开更多",student_homeworks_user_path(User.current.id,:page => page,:is_in_course => is_in_course),:id => "user_show_more_homework",:remote => "true",:class => "loadMore f_grey"%>
+ <% end%>
+<% end%>
+
diff --git a/app/views/users/_user_homeworks_old.html.erb b/app/views/users/_user_homeworks_old.html.erb
new file mode 100644
index 000000000..59ec24ad3
--- /dev/null
+++ b/app/views/users/_user_homeworks_old.html.erb
@@ -0,0 +1,47 @@
+
+
+
+
+<% if @is_teacher%>
+
+
+ <% homework = HomeworkCommon.new %>
+ <% homework.homework_detail_manual = HomeworkDetailManual.new%>
+ <%= labelled_form_for homework,:url => user_new_homework_users_path,:method => "post" do |f| %>
+
+ <%= render :partial => 'users/user_homework_form', :locals => { :homework => homework,:f => f,:edit_mode => false } %>
+
+ <% end%>
+
+<% end%>
+
+<%= render :partial => 'users/user_homework_list', :locals => {:homework_commons => @homework_commons,:page => 0,:is_in_course => 0} %>
diff --git a/app/views/users/_user_programing_attr.html.erb b/app/views/users/_user_programing_attr.html.erb
index 71816689b..e04caf533 100644
--- a/app/views/users/_user_programing_attr.html.erb
+++ b/app/views/users/_user_programing_attr.html.erb
@@ -7,12 +7,13 @@
<%= options_for_select({"C语言"=>1, "C++"=>2, "Python"=>3, "Java"=>4}, (edit_mode && homework.is_program_homework?) ? homework.language : 1) %>
-
+
<% if edit_mode && homework.is_program_homework? %>
<% homework.homework_tests.each_with_index do |test, index| %>
-
-
+
<%=index+1 %>
+
+
<% if index != 0 %>
@@ -22,8 +23,9 @@
<% end %>
<% else %>
@@ -39,8 +41,10 @@
\ No newline at end of file
diff --git a/app/views/users/_user_resource_info.html.erb b/app/views/users/_user_resource_info.html.erb
new file mode 100644
index 000000000..cafbf457f
--- /dev/null
+++ b/app/views/users/_user_resource_info.html.erb
@@ -0,0 +1,60 @@
+
+
+
+ <%= render :partial => 'users/resource_search_form',:locals => {:user => @user, :type => @type} %>
+
+
为您找到<%= @atta_count %> 个资源
+
+
+
+
+ 资源名称
+ 上传时间
+ 引用数
+ 下载数
+ 大小
+ 上传者
+ 类别
+ 来源
+
+
+
+
+
+ <%= pagination_links_full @atta_pages, @atta_count, :per_page_links => false, :remote => @is_remote, :flag => true %>
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/views/users/add_exist_file_to_course.js.erb b/app/views/users/add_exist_file_to_course.js.erb
index 57fe9d42d..c05a2ebd0 100644
--- a/app/views/users/add_exist_file_to_course.js.erb
+++ b/app/views/users/add_exist_file_to_course.js.erb
@@ -4,7 +4,8 @@ $("#resources_list").html('<%= escape_javascript( render :partial => 'resources_
$("#res_count").html(0);
$("#checkboxAll").attr('checked',false);
$("#res_all_count").html(<%= @atta_count%>);
+$("#reference_number_<%= @ori.id %>").text("<%= @ori.quotes %>");
hideModal();
-alert("发送成功")
+alert("发送成功");
<% else%>
<% end %>
\ No newline at end of file
diff --git a/app/views/users/add_exist_file_to_org.js.erb b/app/views/users/add_exist_file_to_org.js.erb
index 57fe9d42d..9bfe1230a 100644
--- a/app/views/users/add_exist_file_to_org.js.erb
+++ b/app/views/users/add_exist_file_to_org.js.erb
@@ -4,7 +4,10 @@ $("#resources_list").html('<%= escape_javascript( render :partial => 'resources_
$("#res_count").html(0);
$("#checkboxAll").attr('checked',false);
$("#res_all_count").html(<%= @atta_count%>);
+<% if @ori.present? and @ori.quotes.present? %>
+ $("#reference_number_<%= @ori.id %>").text("<%= @ori.quotes %>");
+<% end %>
hideModal();
-alert("发送成功")
+alert("发送成功");
<% else%>
<% end %>
\ No newline at end of file
diff --git a/app/views/users/add_exist_file_to_project.js.erb b/app/views/users/add_exist_file_to_project.js.erb
index 57fe9d42d..ed38fa066 100644
--- a/app/views/users/add_exist_file_to_project.js.erb
+++ b/app/views/users/add_exist_file_to_project.js.erb
@@ -4,7 +4,10 @@ $("#resources_list").html('<%= escape_javascript( render :partial => 'resources_
$("#res_count").html(0);
$("#checkboxAll").attr('checked',false);
$("#res_all_count").html(<%= @atta_count%>);
+<% if @ori and @ori.quotes.present? %>
+ $("#reference_number_<%= @ori.id %>").text("<%= @ori.quotes %>");
+<% end %>
hideModal();
-alert("发送成功")
+alert("发送成功");
<% else%>
<% end %>
\ No newline at end of file
diff --git a/app/views/users/choose_user_course.js.erb b/app/views/users/choose_user_course.js.erb
new file mode 100644
index 000000000..508004816
--- /dev/null
+++ b/app/views/users/choose_user_course.js.erb
@@ -0,0 +1,7 @@
+$("#ajax-modal").html('<%= escape_javascript( render :partial => 'users/send_homework_to_course', :locals => {:courses => @course, :user => @user, :send_id => @send_id}) %>');
+showModal('ajax-modal', '452px');
+$('#ajax-modal').siblings().remove();
+$('#ajax-modal').before("
");
+$('#ajax-modal').parent().css("top","50%").css("left","50%");
+$('#ajax-modal').parent().addClass("popbox").addClass("resourceUploadPopup");
+$('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px");
\ No newline at end of file
diff --git a/app/views/users/import_into_container.js.erb b/app/views/users/import_into_container.js.erb
new file mode 100644
index 000000000..2a1ea3599
--- /dev/null
+++ b/app/views/users/import_into_container.js.erb
@@ -0,0 +1,3 @@
+<% if @flag == true%>
+alert("发送成功")
+<% end %>
\ No newline at end of file
diff --git a/app/views/users/import_resources.js.erb b/app/views/users/import_resources.js.erb
new file mode 100644
index 000000000..6244e8e64
--- /dev/null
+++ b/app/views/users/import_resources.js.erb
@@ -0,0 +1,18 @@
+<% if params[:project_id] %>
+$('#ajax-modal').html('<%= escape_javascript( render :partial => 'users/import_resource_info', :locals => {:user => User.current, :type => @type, :project_id => params[:project_id]} ) %>');
+<% elsif params[:course_id] %>
+$('#ajax-modal').html('<%= escape_javascript( render :partial => 'users/import_resource_info', :locals => {:user => User.current, :type => @type, :course_id => params[:course_id]} ) %>');
+<% elsif params[:subfield_file_id] %>
+$('#ajax-modal').html('<%= escape_javascript( render :partial => 'users/import_resource_info', :locals => {:user => User.current, :type => @type, :subfield_file_id => params[:subfield_file_id]} ) %>');
+<% end %>
+showModal('ajax-modal', '615px');
+$('#ajax-modal').siblings().remove();
+$('#ajax-modal').before("
");
+<% if params[:project_id] %>
+$('#ajax-modal').parent().css("top","10%").css("left","34%").css("border","3px solid #269ac9");
+<% else %>
+$('#ajax-modal').parent().css("top","20%").css("left","42%").css("border","3px solid #269ac9");
+<% end %>
+$('#ajax-modal').parent().addClass("popbox_polls");
+
+
diff --git a/app/views/users/import_resources_search.js.erb b/app/views/users/import_resources_search.js.erb
new file mode 100644
index 000000000..549cf6329
--- /dev/null
+++ b/app/views/users/import_resources_search.js.erb
@@ -0,0 +1,25 @@
+//$("#resources_list").html('<%#= escape_javascript( render :partial => 'users/import_resource_info' ,:locals=>{ :attachments => @attachments, :type => @type})%>');
+//$("#pages").html('<%#= pagination_links_full @atta_pages, @atta_count, :per_page_links => false, :remote => @is_remote, :flag => true %>');
+//$("#res_all_count").html(<%#= @atta_count%>);
+//$("#res_count").html(0);
+//$("#checkboxAll").attr('checked',false);
+
+
+<% if params[:project_id] %>
+$('#ajax-modal').html('<%= escape_javascript( render :partial => 'users/import_resource_info', :locals => {:user => User.current, :type => 1, :project_id => params[:project_id]} ) %>');
+<% elsif params[:course_id] %>
+$('#ajax-modal').html('<%= escape_javascript( render :partial => 'users/import_resource_info', :locals => {:user => User.current, :type => 1, :course_id => params[:course_id]} ) %>');
+<% elsif params[:subfield_file_id] %>
+$('#ajax-modal').html('<%= escape_javascript( render :partial => 'users/import_resource_info', :locals => {:user => User.current, :type => 1, :subfield_file_id => params[:subfield_file_id]} ) %>');
+<% end %>
+showModal('ajax-modal', '615px');
+$('#ajax-modal').siblings().remove();
+$('#ajax-modal').before("
");
+<% if params[:project_id] %>
+$('#ajax-modal').parent().css("top","10%").css("left","34%").css("border","3px solid #269ac9");
+<% else %>
+$('#ajax-modal').parent().css("top","20%").css("left","42%").css("border","3px solid #269ac9");
+<% end %>
+$('#ajax-modal').parent().addClass("popbox_polls");
+
+
diff --git a/app/views/users/new_user_commit_homework.html.erb b/app/views/users/new_user_commit_homework.html.erb
index 02bfc9203..3c0c4969b 100644
--- a/app/views/users/new_user_commit_homework.html.erb
+++ b/app/views/users/new_user_commit_homework.html.erb
@@ -97,7 +97,7 @@
测试代码
<% if @is_test %>
- <%=link_to '返 回',course_path(@course),:class=>'fr mt6' %>
+ <%=link_to '返 回',homework_common_index_path(:course => @course.id),:class=>'fr mt6' %>
<% else @is_test %>
提交代码
<% end %>
diff --git a/app/views/users/send_homework_to_course.js.erb b/app/views/users/send_homework_to_course.js.erb
new file mode 100644
index 000000000..b06d8e434
--- /dev/null
+++ b/app/views/users/send_homework_to_course.js.erb
@@ -0,0 +1,9 @@
+$("#subject_count_homework_<%=@homework.id %>").html(<%= @homework.quotes %>);
+$("#ajax-modal").html("<%=escape_javascript(render :partial => 'homework_post_notice') %>");
+showModal('ajax-modal', '500px');
+$('#ajax-modal').siblings().remove();
+$('#ajax-modal').before("
" +
+ " ");
+$('#ajax-modal').parent().css("top","50%").css("left","50%");
+$('#ajax-modal').parent().addClass("popbox").addClass("resourceUploadPopup");
+$('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px");
\ No newline at end of file
diff --git a/app/views/users/show_homework_detail.js.erb b/app/views/users/show_homework_detail.js.erb
index 12be1b786..a5dd82453 100644
--- a/app/views/users/show_homework_detail.js.erb
+++ b/app/views/users/show_homework_detail.js.erb
@@ -1 +1,5 @@
-$("#homework_detail_information").html("<%=escape_javascript(render :partial => 'users/homework_detail_information', :locals => {:homework=>@homework}) %>")
\ No newline at end of file
+<% if @is_import.to_i == 1 %>
+ $("#homework_detail_information").html("<%=escape_javascript(render :partial => 'users/homework_detail_information', :locals => {:homework=>@homework}) %>");
+<% else %>
+ $("#homework_repository_detail").html("<%=escape_javascript(render :partial => 'users/homework_repository_detail', :locals => {:homework=>@homework}) %>");
+<% end %>
\ No newline at end of file
diff --git a/app/views/users/student_homeworks.html.erb b/app/views/users/student_homeworks.html.erb
new file mode 100644
index 000000000..59ec24ad3
--- /dev/null
+++ b/app/views/users/student_homeworks.html.erb
@@ -0,0 +1,47 @@
+
+
+
+
+<% if @is_teacher%>
+
+
+ <% homework = HomeworkCommon.new %>
+ <% homework.homework_detail_manual = HomeworkDetailManual.new%>
+ <%= labelled_form_for homework,:url => user_new_homework_users_path,:method => "post" do |f| %>
+
+ <%= render :partial => 'users/user_homework_form', :locals => { :homework => homework,:f => f,:edit_mode => false } %>
+
+ <% end%>
+
+<% end%>
+
+<%= render :partial => 'users/user_homework_list', :locals => {:homework_commons => @homework_commons,:page => 0,:is_in_course => 0} %>
diff --git a/app/views/users/student_homeworks.js.erb b/app/views/users/student_homeworks.js.erb
new file mode 100644
index 000000000..c34be666c
--- /dev/null
+++ b/app/views/users/student_homeworks.js.erb
@@ -0,0 +1 @@
+$("#user_show_more_homework").replaceWith("<%= escape_javascript( render :partial => 'users/user_homework_list',:locals => {:homework_commons => @homework_commons, :page => @page,:is_in_course => 0} )%>");
\ No newline at end of file
diff --git a/app/views/users/user_homework_type.js.erb b/app/views/users/user_homework_type.js.erb
index 691fdc72b..701cf45fa 100644
--- a/app/views/users/user_homework_type.js.erb
+++ b/app/views/users/user_homework_type.js.erb
@@ -1,4 +1,15 @@
-$("#homework_list_form_show").html('<%= escape_javascript(render :partial => 'users/show_user_homework_form', :locals => {:homeworks => @homeworks})%>');
-$("#homewrok_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>');
-$("#homework_detail_information").html("<%=escape_javascript(render :partial => 'users/homework_detail_information', :locals => {:homework=>nil}) %>");
-$("#homework_search_input").html("<%=escape_javascript(render :partial=>'homework_search_input', :locals=>{:type=>@type}) %>");
\ No newline at end of file
+<% if @is_import.to_i == 1 %>
+$("#homework_list_form_show").html('<%= escape_javascript(render :partial => 'users/show_user_homework_form', :locals => {:homeworks => @homeworks})%>');
+$("#homewrok_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>');
+$("#homework_detail_information").html("<%=escape_javascript(render :partial => 'users/homework_detail_information', :locals => {:homework=>nil}) %>");
+$("#homework_search_input").html("<%=escape_javascript(render :partial=>'homework_search_input', :locals=>{:type=>@type,:is_import=>@is_import}) %>");
+<% else %>
+$("#homework_repository").html('<%= escape_javascript(render :partial => 'users/homework_repository', :locals => {:homeworks => @homeworks})%>');
+$("#homework_pository_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>');
+$("#homework_repository_detail").html("<%=escape_javascript(render :partial => 'users/homework_repository_detail', :locals => {:homework=>nil}) %>");
+$("#homework_search_input").html("<%=escape_javascript(render :partial=>'homework_repository_search', :locals=>{:type=>@type,:is_import=>@is_import,:property=>@property}) %>");
+$("#homework_type_all").attr('href','<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 0) %>');
+$("#homework_type_nor").attr('href','<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 1) %>');
+$("#homework_type_pro").attr('href','<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 2) %>');
+$("#homework_type_gro").attr('href','<%= user_homework_type_user_path(@user,:type => @type,:is_import => 0,:property => 3) %>');
+<% end %>
diff --git a/app/views/users/user_homeworks.html.erb b/app/views/users/user_homeworks.html.erb
index d0adb291f..4e928ca78 100644
--- a/app/views/users/user_homeworks.html.erb
+++ b/app/views/users/user_homeworks.html.erb
@@ -1,47 +1,97 @@
-
-
-
-
-<% if @is_teacher%>
-
-
- <% homework = HomeworkCommon.new %>
- <% homework.homework_detail_manual = HomeworkDetailManual.new%>
- <%= labelled_form_for homework,:url => user_new_homework_users_path,:method => "post" do |f| %>
-
- <%= render :partial => 'users/user_homework_form', :locals => { :homework => homework,:f => f,:edit_mode => false } %>
-
- <% end%>
-
-<% end%>
-
-<%= render :partial => 'users/user_homework_list', :locals => {:homework_commons => @homework_commons,:page => 0,:is_in_course => 0} %>
+<%= stylesheet_link_tag 'pleft','header','new_user','repository','org', 'public' %>
+
+
+
+
+
+
+
+
+ <%=render :partial=>'homework_repository_search', :locals=>{:type => @type,:is_import => 0,:property => @property} %>
+
+
+
+
+
+ 作业名称
+ 来源
+ 类别
+ 贡献者
+ 引用数
+ 发布时间
+
+
+ <%=render :partial => 'homework_repository', :locals => {:homeworks => @homeworks} %>
+
+
+
+ <%=render :partial => 'homework_repository_detail', :locals => {:homework => nil} %>
+
+
+
+
+ <%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true%>
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/views/users/user_homeworks.js.erb b/app/views/users/user_homeworks.js.erb
index cc1bc051a..a24b3d018 100644
--- a/app/views/users/user_homeworks.js.erb
+++ b/app/views/users/user_homeworks.js.erb
@@ -1,2 +1,3 @@
-$("#user_show_more_homework").replaceWith("<%= escape_javascript( render :partial => 'users/user_homework_list',:locals => {:homework_commons => @homework_commons, :page => @page,:is_in_course => 0} )%>");
-
+$("#homework_repository").html('<%= escape_javascript(render :partial => 'users/homework_repository', :locals => {:homeworks => @homeworks})%>');
+$("#homework_pository_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>');
+$("#homework_repository_detail").html("<%=escape_javascript(render :partial => 'users/homework_repository_detail', :locals => {:homework=>nil}) %>");
diff --git a/app/views/users/user_resource.html.erb b/app/views/users/user_resource.html.erb
index 5abadfb29..f45eb11c2 100644
--- a/app/views/users/user_resource.html.erb
+++ b/app/views/users/user_resource.html.erb
@@ -1,4 +1,3 @@
-
<%= javascript_include_tag 'bootstrap'%>
<%= stylesheet_link_tag 'project' %>
<%= stylesheet_link_tag 'leftside' %>
@@ -12,18 +11,22 @@
function remote_get_resources(user_id,type){
}
+ $(document).ready(function(){
+ $(".resource-switch").click(function(){
+ $(".resource-switch").children().removeClass("resource-tab-active");
+ $(this).children().addClass("resource-tab-active");
+ });
+ });
function remote_search(){
$("#resource_search_form").submit();
}
- function show_upload(){
- $("#ajax-modal").html('<%= escape_javascript( render :partial => 'upload_resource' ,:locals => {:user=>@user})%>');
- showModal('ajax-modal', '452px');
- $('#ajax-modal').siblings().remove();
- $('#ajax-modal').before("
");
- $('#ajax-modal').parent().css("top","50%").css("left","50%");
- $('#ajax-modal').parent().addClass("resourceUploadPopup");
- $('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px");
+ function show_public_resource(){
+ $("#resource_remote").html('<%= escape_javascript( render :partial => 'user_resource_info' ,:locals => { :tpye => 6}) %>');
+ }
+
+ function show_public_resource(){
+ $("#resource_remote").html('<%= escape_javascript( render :partial => 'user_resource_info' ,:locals => { :tpye => 1}) %>');
}
function closeModal()
@@ -56,429 +59,51 @@
}
}
-
-
-
-
-
-
- <%= render :partial => 'resource_search_form',:locals => {:user=>@user,:type=>@type} %>
-
-
为您找到<%= @atta_count%> 个资源
-
-
-
-
- 资源名称
- 大小
- 类别
- 上传者
- 上传时间
-
-
-
+
+
+
+ 公共资源
+
+
+ 我的资源
+
+
+
+
+
+
+
+ 全部
+
+
+ 课程资源
+ <%#= link_to '课程资源' ,user_resource_user_path(:id => @user.id, :type => 2), id="resource_type_course", :remote => true, :method => 'get', :class=> 'homepagePostTypeAssignment postTypeGrey' %>
+
+
+ 项目资源
+ <%#= link_to '项目资源' ,user_resource_user_path(:id => @user.id, :type => 3), id="resource_type_project", :remote => true, :method => 'get', :class => 'homepagePostTypeQuiz postTypeGrey' %>
+
+
+ 用户资源
+ <%#= link_to '用户资源' ,user_resource_user_path(:id=>@user.id,:type=>5), id="resource_type_user", :remote=>true,:method => 'get', :class=>'resourcesTypeUser resourcesGrey' %>
+
+
+ 附件
+ <%#= link_to '附件' ,user_resource_user_path(:id=>@user.id,:type=>4), id="resource_type_file", :remote=>true,:method => 'get',:class=>'resourcesTypeAtt resourcesGrey' %>
+
+
+
+
+
+
+
-
-
- <%= pagination_links_full @atta_pages, @atta_count, :per_page_links => false, :remote => @is_remote, :flag => true%>
-
+
+ <%= render :partial => 'user_resource_info' %>
-
-
-
-
-
-
-
diff --git a/app/views/users/user_resource.js.erb b/app/views/users/user_resource.js.erb
index bb195d4bf..4ba186579 100644
--- a/app/views/users/user_resource.js.erb
+++ b/app/views/users/user_resource.js.erb
@@ -1,6 +1,15 @@
-$("#search_div").html('<%= escape_javascript( render :partial => 'resource_search_form',:locals => {:user=>@user,:type=>@type} ) %>');
-$("#resources_list").html('<%= escape_javascript( render :partial => 'resources_list' ,:locals=>{ :attachments => @attachments})%>');
-$("#pages").html('<%= pagination_links_full @atta_pages, @atta_count, :per_page_links => false, :remote => @is_remote, :flag => true %>');
-$("#res_count").html(0);
-$("#checkboxAll").attr('checked',false);
-$("#res_all_count").html(<%= @atta_count%>);
\ No newline at end of file
+$("#search_div").html('<%= escape_javascript( render :partial => 'resource_search_form', :locals => {:user => @user, :type => @type} ) %>');
+$("#resources_list").html('<%= escape_javascript( render :partial => 'resources_list' , :locals => { :attachments => @attachments}) %>');
+$("#pages").html('<%= pagination_links_full @atta_pages, @atta_count, :per_page_links => false, :remote => @is_remote, :flag => true %>');
+$("#res_count").html(0);
+$("#checkboxAll").attr('checked',false);
+$("#res_all_count").html(<%= @atta_count %>);
+
+$("#public_resource_list").attr('href','<%= user_resource_user_path(@user, :type => '6', :status => @status) %>');
+$("#my_resource_list").attr('href','<%= user_resource_user_path(@user, :type => '1', :status => @status) %>');
+
+$("#resource_type_all").attr('href','<%= user_resource_user_path(@user,:type => @type, :status => 1) %>');
+$("#resource_type_course").attr('href','<%= user_resource_user_path(@user,:type => @type, :status => 2) %>');
+$("#resource_type_project").attr('href','<%= user_resource_user_path(@user,:type => @type, :status => 3) %>');
+$("#resource_type_user").attr('href','<%= user_resource_user_path(@user,:type => @type, :status => 5) %>');
+$("#resource_type_file").attr('href','<%= user_resource_user_path(@user,:type => @type, :status => 4) %>');
diff --git a/app/views/users/user_search_homeworks.js.erb b/app/views/users/user_search_homeworks.js.erb
index c8e3aab3e..34d73b823 100644
--- a/app/views/users/user_search_homeworks.js.erb
+++ b/app/views/users/user_search_homeworks.js.erb
@@ -1,3 +1,9 @@
-$("#homework_list_form_show").html('<%= escape_javascript(render :partial => 'users/show_user_homework_form', :locals => {:homeworks => @homeworks})%>');
-$("#homewrok_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>');
-$("#homework_detail_information").html("<%=escape_javascript(render :partial => 'users/homework_detail_information', :locals => {:homework=>nil}) %>");
\ No newline at end of file
+<% if @is_import.to_i == 1 %>
+$("#homework_list_form_show").html('<%= escape_javascript(render :partial => 'users/show_user_homework_form', :locals => {:homeworks => @homeworks})%>');
+$("#homewrok_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>');
+$("#homework_detail_information").html("<%=escape_javascript(render :partial => 'users/homework_detail_information', :locals => {:homework=>nil}) %>");
+<% else %>
+$("#homework_repository").html('<%= escape_javascript(render :partial => 'users/homework_repository', :locals => {:homeworks => @homeworks})%>');
+$("#homework_pository_ref_pages").html('<%= pagination_links_full @hw_pages, @hw_count, :per_page_links => false, :remote => @is_remote, :flag => true %>');
+$("#homework_repository_detail").html("<%=escape_javascript(render :partial => 'users/homework_repository_detail', :locals => {:homework=>nil}) %>");
+<% end %>
\ No newline at end of file
diff --git a/config/locales/courses/zh.yml b/config/locales/courses/zh.yml
index 19b979d97..b59538bc9 100644
--- a/config/locales/courses/zh.yml
+++ b/config/locales/courses/zh.yml
@@ -15,7 +15,7 @@ zh:
label_course_new: 新建课程
label_course_name: 课程名称
- label_homework: 课程作业
+ label_homework: 作业
label_course_news: 课程通知
label_course_mail_news_reply: 课程通知回复
label_main_teacher: 主讲教师
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index b6bd6afa4..37d26dbd8 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -617,7 +617,7 @@ zh:
label_homework_info: 提交情况 #huang
label_course_news_description: '课程必须是高校正式开设的课程,或是围绕特定主题定期发布课程资料的公共开放课程;
如果您想创建一个协作研究空间,请您前往“我的项目”页面创建项目,谢谢!'
- label_course_board: 讨论区
+ label_course_board: 问答区
label_version: 版本
label_version_new: 新建版本
@@ -1734,7 +1734,7 @@ zh:
label_newbie_faq: '新手指引 & 问答'
label_hot_project: '热门项目'
label_borad_project: 项目讨论区
- label_borad_course: 课程讨论区
+ label_borad_course: 课程问答区
label_borad_org_subfield: 资源栏目讨论区
view_borad_course: 课程讨论
label_memo_create_succ: 发布成功
diff --git a/config/routes.rb b/config/routes.rb
index de1d9d652..6dc2663be 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -505,8 +505,10 @@ RedmineApp::Application.routes.draw do
match 'user_feedback4show', :to => 'users#user_feedback4show', :via => :get
match 'user_visitorlist', :to => 'users#user_visitorlist', :via => :get
match 'user_homeworks', :to => 'users#user_homeworks', :via => :get
+ match 'student_homeworks', :to => 'users#student_homeworks', :via => :get
get 'user_import_homeworks'
get 'user_search_homeworks'
+ get 'choose_user_course'
get 'user_import_resource'
match 'watch_projects', :to => 'users#watch_projects', :via => :get
#
@@ -535,10 +537,14 @@ RedmineApp::Application.routes.draw do
match 'user_act_issue_assign_to', :to => 'users#user_act_issue_assign_to', :via => [:get, :post]
get 'edit_brief_introduction'
get "user_resource"
+ get "import_resources"
+ get "import_resources_search"
+ post "import_into_container"
get "resource_search"
post "user_resource_create"
post "user_resource_delete"
get "search_user_course"
+ post "send_homework_to_course"
post "add_exist_file_to_course"
post "add_exist_file_to_project"
post 'add_exist_file_to_org'
diff --git a/db/migrate/20160303103231_add_homework_journal_to_course_contributor_scores.rb b/db/migrate/20160303103231_add_homework_journal_to_course_contributor_scores.rb
new file mode 100644
index 000000000..e3d4310e6
--- /dev/null
+++ b/db/migrate/20160303103231_add_homework_journal_to_course_contributor_scores.rb
@@ -0,0 +1,5 @@
+class AddHomeworkJournalToCourseContributorScores < ActiveRecord::Migration
+ def change
+ add_column :course_contributor_scores, :homework_journal_num, :integer, :default => 0
+ end
+end
diff --git a/db/migrate/20160304154005_add_news_num_to_course_contributor_scores.rb b/db/migrate/20160304154005_add_news_num_to_course_contributor_scores.rb
new file mode 100644
index 000000000..4cb1679f5
--- /dev/null
+++ b/db/migrate/20160304154005_add_news_num_to_course_contributor_scores.rb
@@ -0,0 +1,5 @@
+class AddNewsNumToCourseContributorScores < ActiveRecord::Migration
+ def change
+ add_column :course_contributor_scores, :news_num, :integer , :default => 0
+ end
+end
diff --git a/db/migrate/20160304234903_uodapte_contributor_course.rb b/db/migrate/20160304234903_uodapte_contributor_course.rb
new file mode 100644
index 000000000..e0f86550d
--- /dev/null
+++ b/db/migrate/20160304234903_uodapte_contributor_course.rb
@@ -0,0 +1,51 @@
+class UodapteContributorCourse < ActiveRecord::Migration
+ def up
+ Course.all.each do |course|
+ if course.course_activities.count > 1
+ course.members.each do |s|
+ puts course.id
+ puts course.name
+ puts s.user_id
+ # board_count = CourseActivity.where("user_id =? and course_id =? and course_act_type =?",s.student_id, course.id, "Message").count * 2
+ # 发帖数
+ board_count = Message.find_by_sql("select DISTINCT me.* from messages me, boards b where b.id = me.board_id and b.course_id = #{course.id} and b.project_id = '-1' and me.author_id = #{s.user_id} and me.parent_id is null;").count
+ # 回帖数
+ message_reply_count = Message.find_by_sql("select DISTINCT me.* from messages me, boards b where b.id = me.board_id and b.course_id = #{course.id} and b.project_id = '-1' and me.author_id = #{s.user_id} and me.parent_id is not null").count * 1
+ # 新闻回复
+ common_reply_count = Comment.find_by_sql("select cm.* from comments cm, news n where cm.author_id = #{s.user_id} and n.course_id = #{course.id} and cm.commented_id = n.id and cm.commented_type ='News'").count * 1
+ # 通知
+ common_count = News.find_by_sql("select n.* from news n where n.author_id = #{s.user_id} and n.course_id = #{course.id} ").count * 1
+ # attachment_count = CourseActivity.where("user_id =? and course_id =? and course_act_type =?", s.student_id, course.id, "Attachment").count * 5
+ # 附件数
+ attachment_count = Attachment.find_by_sql("SELECT * FROM `attachments` where container_id = #{course.id} and author_id = #{s.user_id} and container_type ='Course'").count
+ # 课程留言数
+ journal_count = JournalsForMessage.where("user_id =? and jour_id =? and jour_type =? ", s.user_id, course.id, "Course").count * 1
+ # 作业留言
+ journal_homework_count = JournalsForMessage.find_by_sql("SELECT jfm.* FROM `journals_for_messages` jfm, homework_commons hc where hc.id = jfm.jour_id and hc.course_id =#{course.id} and jfm.user_id =#{s.user_id} and jfm.jour_type ='HomeworkCommon';").count * 1
+ # journal_count = CourseActivity.where("user_id =? and course_id =? and course_act_type =?", s.student_id, course.id, "JournalsForMessage").count * 1
+ # journal_reply_count = JournalsForMessage.where("user_id =? and jour_id =? and jour_type =? and status =?", s.student_id, course.id, "Course",1).count * 1
+ total = board_count + message_reply_count + common_reply_count + attachment_count + journal_count
+ course_contributor = CourseContributorScore.where("course_id =? and user_id =?", course.id, s.user_id).first
+ if course_contributor.nil?
+ CourseContributorScore.create(:course_id => course.id, :user_id => s.user_id, :message_num => board_count, :message_reply_num => message_reply_count,
+ :news_reply_num => common_reply_count, :news_num => common_count, :resource_num => attachment_count, :journal_num => journal_count,
+ :homework_journal_num => journal_homework_count, :journal_reply_num => 0, :total_score => total)
+ else
+ course_contributor.message_num = board_count
+ course_contributor.message_reply_num = message_reply_count
+ course_contributor.news_reply_num = common_reply_count
+ course_contributor.news_num = common_count
+ course_contributor.resource_num = attachment_count
+ course_contributor.journal_num = journal_count
+ course_contributor.homework_journal_num = journal_homework_count
+ course_contributor.save
+ end
+
+ end
+ end
+ end
+ end
+
+ def down
+ end
+end
diff --git a/public/javascripts/homework.js b/public/javascripts/homework.js
index f652d0ce8..7dd416dec 100644
--- a/public/javascripts/homework.js
+++ b/public/javascripts/homework.js
@@ -127,7 +127,15 @@ $(function(){
$("a.CloseBtn").on('click', function(){
$("#BluePopupBox" ).dialog("close");
});
- $('#textarea_input_test').focus();
+ var inputs = document.getElementsByName("program[input][]");
+ var outputs = document.getElementsByName("program[output][]");
+ if (inputs.length == outputs.length) {
+ for (var i=0; i