diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb
index cec419eba..0def99733 100644
--- a/app/controllers/admin_controller.rb
+++ b/app/controllers/admin_controller.rb
@@ -24,7 +24,7 @@ class AdminController < ApplicationController
before_filter :require_admin
helper :sort
helper :Users
- helper :Settings
+ helper :Settings,SchoolHelper
include SortHelper
def index
@@ -51,15 +51,66 @@ class AdminController < ApplicationController
end
end
+ #管理员界面精品课程列表
+ def excellent_courses
+ @courses = Course.where("is_excellent =? or excellent_option =?", 1, 1 )
+ respond_to do |format|
+ format.html
+ end
+ end
+
+ #管理员界面课程资源列表
+ def course_resource_list
+
+ if params[:sort] == 'file_size'
+ @resource = Attachment.where(:container_type => 'Course').order("filesize desc")
+ elsif params[:sort] == 'file_upload'
+ @resource = Attachment.where(:container_type => 'Course').order("created_on desc")
+ elsif params[:sort] == 'file_download_times'
+ @resource = Attachment.where(:container_type => 'Course').order("downloads desc")
+ else
+ @resource = Attachment.where(:container_type => 'Course').order("created_on desc")
+ end
+
+ @resource = paginateHelper @resource,30
+ @page = (params['page'] || 1).to_i - 1
+
+ respond_to do |format|
+ format.html
+ end
+ end
+
+ #管理员界面項目资源列表
+ def project_resource_list
+
+ if params[:sort] == 'file_size'
+ @pro_resource = Attachment.where(:container_type => 'Project').order("filesize desc")
+ elsif params[:sort] == 'file_upload'
+ @pro_resource = Attachment.where(:container_type => 'Project').order("created_on desc")
+ elsif params[:sort] == 'file_download_times'
+ @pro_resource = Attachment.where(:container_type => 'Project').order("downloads desc")
+ else
+ @pro_resource = Attachment.where(:container_type => 'Project').order("created_on desc")
+ end
+
+ @pro_resource = paginateHelper @pro_resource,30
+ @page = (params['page'] || 1).to_i - 1
+
+ respond_to do |format|
+ format.html
+ end
+ end
+
+
def users
sort_init 'login', 'asc'
sort_update %w(login firstname lastname mail admin created_on last_login_on)
case params[:format]
when 'xml', 'json'
- @offset, @limit = api_offset_and_limit({:limit => 15})
+ @offset, @limit = api_offset_and_limit({:limit => 50})
else
- @limit = 15#per_page_option
+ @limit = 50 #per_page_option
end
@status = params[:status] || 1
@@ -339,7 +390,13 @@ class AdminController < ApplicationController
#组织
def organization
- @organizations = Organization.all
+ @organizations = Organization.find_by_sql("SELECT * FROM organizations ORDER BY created_at DESC")
+ #@organizations = Organization.all.order("created_at desc")
+ @organization_count = @organizations.count
+ @organization_pages = Paginator.new @organization_count, 30, params['page'] || 1
+ @organizations = paginateHelper @organizations,30
+
+ @page = (params['page'] || 1).to_i - 1
respond_to do |format|
format.html
end
@@ -347,17 +404,14 @@ class AdminController < ApplicationController
#学校列表
def schools
- @school_name = params[:school_name]
- if @school_name && @school_name != ''
- @schools = School.where("name like '%#{@school_name}%'")
- elsif @school_name.nil?
- @schools = []
- else @school_name && @school_name == ' '
- @schools = School.where('1=1')
- end
+
+ @schools = School.find_by_sql("SELECT * FROM schools ORDER BY created_at DESC")
@school_count = @schools.count
- @school_pages = Paginator.new @school_count, 100, params['page'] || 1
- @schools = paginateHelper @schools,100
+
+ @school_pages = Paginator.new @school_count, 30, params['page'] || 1
+ @schools = paginateHelper @schools,30
+
+ @page = (params['page'] || 1).to_i - 1
respond_to do |format|
format.html
end
diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb
index cf4e6a8e9..b878a14ac 100644
--- a/app/controllers/attachments_controller.rb
+++ b/app/controllers/attachments_controller.rb
@@ -251,7 +251,7 @@ class AttachmentsController < ApplicationController
@history.version = @old_history.nil? ? 1 : @old_history.version + 1
@history.save #历史记录保存完毕
#将最新保存的记录 数据替换到 需要修改的文件记录
- @old_attachment.attributes = @attachment.attributes.dup.except("id","container_id","container_type","is_public","downloads")
+ @old_attachment.attributes = @attachment.attributes.dup.except("id","container_id","container_type","is_public","downloads", "quotes")
@old_attachment.save
#删除当前记录
@attachment.delete
diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index be96124c2..f06a782bc 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -240,6 +240,18 @@ class CoursesController < ApplicationController
# req[:message] = l(:modal_valid_passing) if req[:message].blank?
render :json => req
end
+
+ def teacher_assign_group
+ member = Member.where(:course_id => @course.id, :user_id => params[:user_id]).first
+ member.course_group_id = params[:course_group_id].to_i
+ member.save
+ @course_groups = @course.course_groups
+ @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1'
+ respond_to do |format|
+ format.js
+ end
+ end
+
def join_group
@subPage_title = l :label_student_list
group = CourseGroup.find(params[:object_id])
@@ -838,6 +850,8 @@ class CoursesController < ApplicationController
# render_403
# return
# end
+ # 统计访问量
+ @course.update_attribute(:visits, @course.visits.to_i + 1)
#更新创建课程消息状态
create_course_messages = @course.course_messages.where("user_id =? and course_message_type =? and course_id =? and viewed =?", User.current.id, 'Course', @course.id, 0)
create_course_messages.update_all(:viewed => true)
@@ -1067,7 +1081,7 @@ class CoursesController < ApplicationController
sql_select = ""
if groupid == 0
sql_select = "SELECT members.*,(
- SELECT SUM(IF(student_works.final_score is null,null,student_works.final_score - student_works.absence_penalty - student_works.late_penalty))
+ SELECT SUM(IF(student_works.final_score IS NULL,NULL,IF(student_works.final_score =0,0,student_works.final_score - student_works.absence_penalty - student_works.late_penalty)))
FROM student_works,homework_commons
WHERE student_works.homework_common_id = homework_commons.id
AND homework_commons.course_id = #{@course.id}
@@ -1079,7 +1093,7 @@ class CoursesController < ApplicationController
WHERE members.course_id = #{@course.id} ORDER BY score #{score_sort_by}"
else
sql_select = "SELECT members.*,(
- SELECT SUM(IF(student_works.final_score is null,null,student_works.final_score - student_works.absence_penalty - student_works.late_penalty))
+ SELECT SUM(IF(student_works.final_score IS NULL,NULL,IF(student_works.final_score =0,0,student_works.final_score - student_works.absence_penalty - student_works.late_penalty)))
FROM student_works,homework_commons
WHERE student_works.homework_common_id = homework_commons.id
AND homework_commons.course_id = #{@course.id}
diff --git a/app/controllers/files_controller.rb b/app/controllers/files_controller.rb
index 57cadc10b..b288629c8 100644
--- a/app/controllers/files_controller.rb
+++ b/app/controllers/files_controller.rb
@@ -559,7 +559,8 @@ class FilesController < ApplicationController
end
end
# 更新课程英雄榜得分
- update_contributor_score(@course, attachments[:files].first)
+ course_member_score(@course.id, attachments[:files].first.author_id, "Attachment")
+ # end
# end
# TODO: 临时用 nyan
sort_init 'created_on', 'desc'
@@ -632,18 +633,6 @@ class FilesController < ApplicationController
end
end
- def update_contributor_score(course, file )
- 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
-
def get_project_tag_name_by_type_nmuber type
case type
when "1"
diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb
index 00b11323b..9f754a0fc 100644
--- a/app/controllers/homework_common_controller.rb
+++ b/app/controllers/homework_common_controller.rb
@@ -1,378 +1,378 @@
-class HomeworkCommonController < ApplicationController
- require 'net/http'
- require 'json'
- require "base64"
- layout "base_courses"
-
- include StudentWorkHelper
- before_filter :find_course, :only => [:index,:new,:create]
- before_filter :find_homework, :only => [:edit,:update,:alert_anonymous_comment,:start_anonymous_comment,:stop_anonymous_comment,:destroy,:start_evaluation_set,:set_evaluation_attr,:score_rule_set,:alert_forbidden_anonymous_comment,:alert_open_student_works,:open_student_works]
- before_filter :teacher_of_course, :only => [:new, :create, :edit, :update, :destroy, :start_anonymous_comment, :stop_anonymous_comment, :alert_anonymous_comment,:start_evaluation_set,:set_evaluation_attr,:score_rule_set,:alert_forbidden_anonymous_comment,:alert_open_student_works,:open_student_works]
- before_filter :member_of_course, :only => [:index]
-
- def index
- @new_homework = HomeworkCommon.new
- @new_homework.homework_detail_manual = HomeworkDetailManual.new
- @new_homework.course = @course
- @page = params[:page] ? params[:page].to_i + 1 : 0
- @is_teacher = User.current.logged? && (User.current.admin? || User.current.allowed_to?(:as_teacher,@course))
- if @is_teacher
- @homeworks = @course.homework_commons.order("created_at desc").limit(10).offset(@page * 10)
- else
- @homeworks = @course.homework_commons.where("publish_time <= '#{Date.today}'").order("created_at desc").limit(10).offset(@page * 10)
- end
- @is_student = User.current.logged? && (User.current.admin? || (User.current.member_of_course?(@course) && !@is_teacher))
- @is_new = params[:is_new]
-
- #设置at已读
- @homeworks.each do |homework|
- homework.journals_for_messages.each do |j|
- User.current.at_messages.unviewed('JournalsForMessage', j.id).each {|x| x.viewed!}
- end
- end
-
- respond_to do |format|
- format.js
- format.html
- end
- end
-
- #新建作业,在个人作业列表创建作业
- def new
- render_404
- end
-
- #新建作业,在个人作业列表创建作业
- def create
- redirect_to user_homeworks_user_path(User.current.id)
- end
-
- def edit
- @user = User.current
- @is_in_course = params[:is_in_course].to_i
- @course_activity = params[:course_activity].to_i
- respond_to do |format|
- format.html{render :layout => 'new_base_user'}
- end
- end
-
- def update
- if params[:homework_common]
- @homework.name = params[:homework_common][:name]
- @homework.description = params[:homework_common][:description]
- if params[:homework_common][:publish_time] == ""
- @homework.publish_time = Date.today
- else
- @homework.publish_time = params[:homework_common][:publish_time]
- end
- @homework.end_time = params[:homework_common][:end_time] || Time.now
- @homework.course_id = params[:course_id]
- @homework.anonymous_comment = params[:homework_common][:anonymous_comment] ? params[:homework_common][:anonymous_comment] : 0
-
- homework_detail_manual = @homework.homework_detail_manual || HomeworkDetailManual.new
- if @homework.publish_time <= Date.today && homework_detail_manual.comment_status == 0
- homework_detail_manual.comment_status = 1
- end
- homework_detail_manual.evaluation_start = params[:evaluation_start].blank? ? @homework.end_time + 7 : params[:evaluation_start]
- homework_detail_manual.evaluation_end = params[:evaluation_end].blank? ? homework_detail_manual.evaluation_start + 7 : params[:evaluation_end]
-
- @homework.save_attachments(params[:attachments])
- render_attachment_warning_if_needed(@homework)
-
- #编程作业相关属性
- if @homework.homework_type == 2
- @homework.homework_detail_programing ||= HomeworkDetailPrograming.new
- @homework_detail_programing = @homework.homework_detail_programing
- @homework_detail_programing.language = params[:language_type].to_i
-
- @homework.homework_tests.delete_all
- inputs = params[:program][:input]
- if Array === inputs
- inputs.each_with_index do |val, i|
- @homework.homework_tests << HomeworkTest.new(
- input: val,
- output: params[:program][:output][i]
- )
- end
- end
- end
-
- #分组作业
- if @homework.homework_type == 3
- @homework.homework_detail_group ||= HomeworkDetailGroup.new
- @homework_detail_group = @homework.homework_detail_group
- @homework_detail_group.min_num = params[:min_num].to_i
- @homework_detail_group.max_num = params[:max_num].to_i
- @homework_detail_group.base_on_project = params[:base_on_project].to_i
- end
-
- if @homework.save
- @homework_detail_manual.save if @homework_detail_manual
- @homework_detail_programing.save if @homework_detail_programing
- @homework_detail_group.save if @homework_detail_group
-
- if params[:is_in_course] == "1"
- redirect_to homework_common_index_path(:course => @course.id)
- elsif params[:is_in_course] == "0"
- redirect_to user_homeworks_user_path(User.current.id)
- elsif params[:is_in_course] == "-1" && params[:course_activity] == "0"
- redirect_to user_path(User.current.id)
- elsif params[:is_in_course] == "-1" && params[:course_activity] == "1"
- redirect_to course_path(@course.id)
- end
- end
- end
- end
-
- def destroy
- if @homework.destroy
- respond_to do |format|
- format.html {
- if params[:is_in_course] == "1"
- redirect_to homework_common_index_path(:course => @course.id)
- elsif params[:is_in_course] == "0"
- redirect_to user_homeworks_user_path(User.current.id)
- elsif params[:is_in_course] == "-1" && params[:course_activity] == "0"
- redirect_to user_path(User.current.id)
- elsif params[:is_in_course] == "-1" && params[:course_activity] == "1"
- redirect_to course_path(@course.id)
- end
- }
- end
- end
- end
-
- #开启匿评
- #statue 1:启动成功,2:启动失败,作业总数大于等于2份时才能启动匿评,3:已开启匿评,请务重复开启,4:没有开启匿评的权限
- def start_anonymous_comment
- @statue = 4 and return unless User.current.admin? || User.current.allowed_to?(:as_teacher,@course)
- @statue = 5 and return if Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")
- if @homework_detail_manual.comment_status == 1
- student_works = @homework.student_works
- if student_works && student_works.size >= 2
- if @homework.homework_type == 3
- student_work_projects = @homework.student_work_projects.where("student_work_id is not null")
- student_work_projects.each_with_index do |pro_work, pro_index|
- n = @homework_detail_manual.evaluation_num
- n = n < student_works.size ? n : student_works.size - 1
- work_index = -1
- student_works.each_with_index do |stu_work, stu_index|
- if stu_work.id.to_i == pro_work.student_work_id.to_i
- work_index = stu_index
- end
- end
- assigned_homeworks = get_assigned_homeworks(student_works, n, work_index)
- assigned_homeworks.each do |h|
- student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: pro_work.user_id, student_work_id: h.id)
- student_works_evaluation_distributions.save
- end
- end
- else
- student_works.each_with_index do |work, index|
- user = work.user
- n = @homework_detail_manual.evaluation_num
- n = n < student_works.size ? n : student_works.size - 1
- assigned_homeworks = get_assigned_homeworks(student_works, n, index)
- assigned_homeworks.each do |h|
- student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: user.id, student_work_id: h.id)
- student_works_evaluation_distributions.save
- end
- end
- end
- @homework_detail_manual.update_column('comment_status', 2)
- @homework_detail_manual.update_column('evaluation_start', Date.today)
- @statue = 1
- # 匿评开启消息邮件通知
- send_message_anonymous_comment(@homework, m_status = 2)
- Mailer.send_mail_anonymous_comment_open(@homework).deliver
- else
- @statue = 2
-
- end
- else
- @statue = 3
- end
- @user_activity_id = params[:user_activity_id].to_i
- @is_in_course = params[:is_in_course].to_i
- @course_activity = params[:course_activity].to_i
- end
-
- #关闭匿评
- def stop_anonymous_comment
- @homework_detail_manual.update_column('comment_status', 3)
- @homework_detail_manual.update_column('evaluation_end', Date.today)
- #计算缺评扣分
- work_ids = "(" + @homework.student_works.map(&:id).join(",") + ")"
- @homework.student_works.each do |student_work|
- absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids}").count
- student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0
- student_work.save
- end
- # 匿评关闭消息邮件通知
- send_message_anonymous_comment(@homework, m_status = 3)
- Mailer.send_mail_anonymous_comment_close(@homework).deliver
- @user_activity_id = params[:user_activity_id].to_i
- @is_in_course = params[:is_in_course].to_i
- @course_activity = params[:course_activity].to_i
- respond_to do |format|
- format.js
- end
- end
-
- # 开启/关闭匿评消息通知
- def send_message_anonymous_comment(homework, m_status )
- # status 标记匿评状态 1为关闭 0为开启
- course = homework.course
- course.members.each do |m|
- @homework.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => false, :status => m_status)
- end
- end
- #提示
- def alert_anonymous_comment
- @cur_size = 0
- @totle_size = 0
- if @homework_detail_manual.comment_status == 1
- @totle_size = @course.student.count
- @cur_size = @homework.student_works.size
- elsif @homework_detail_manual.comment_status == 2
- @homework.student_works.map { |work| @totle_size += work.student_works_evaluation_distributions.count}
- @cur_size = 0
- @homework.student_works.map { |work| @cur_size += work.student_works_scores.where(:reviewer_role => 3).count}
- end
- @percent = format("%.2f",(@cur_size.to_f / ( @totle_size == 0 ? 1 : @totle_size)) * 100)
- @user_activity_id = params[:user_activity_id].to_i
- @is_in_course = params[:is_in_course].to_i
- @course_activity = params[:course_activity].to_i
- respond_to do |format|
- format.js
- end
- end
-
- def alert_forbidden_anonymous_comment
- if params[:user_activity_id]
- @user_activity_id = params[:user_activity_id]
- else
- @user_activity_id = -1
- end
- @is_in_course = params[:is_in_course] if params[:is_in_course]
- @course_activity = params[:course_activity] if params[:course_Activity]
- respond_to do |format|
- format.js
- end
- end
-
- def open_student_works
- if @homework.is_open == 0
- @homework.update_attribute(:is_open, 1)
- else
- @homework.update_attribute(:is_open, 0)
- end
- @user_activity_id = params[:user_activity_id]
- @is_in_course = params[:is_in_course] if params[:is_in_course]
- @course_activity = params[:course_activity] if params[:course_Activity]
- end
-
- def alert_open_student_works
- if params[:user_activity_id]
- @user_activity_id = params[:user_activity_id]
- else
- @user_activity_id = -1
- end
- @is_in_course = params[:is_in_course] if params[:is_in_course]
- @course_activity = params[:course_activity] if params[:course_Activity]
- respond_to do |format|
- format.js
- end
- end
-
- def programing_test
- test = {language:params[:language],src:Base64.encode64(params[:src]),input:[params[:input]],output:[params[:output]]}
- @index = params[:index]
- uri = URI('http://192.168.80.21:8080/api/realtime.json')
- body = test.to_json
- res = Net::HTTP.new(uri.host, uri.port).start do |client|
- request = Net::HTTP::Post.new(uri.path)
- request.body = body
- request["Content-Type"] = "application/json"
- client.request(request)
- end
- result = JSON.parse(res.body)
- @err_msg = result["compile_error_msg"]
- result["results"].each do |re|
- @result = re["status"]
- end
- end
-
- #启动匿评参数设置
- def start_evaluation_set
- if params[:user_activity_id]
- @user_activity_id = params[:user_activity_id]
- else
- @user_activity_id = -1
- end
- @is_in_course = params[:is_in_course]
- @course_activity = params[:course_activity].to_i
- end
-
- #设置匿评参数
- def set_evaluation_attr
- if @homework_detail_manual
- unless params[:evaluation_start].to_s == @homework_detail_manual.evaluation_start.to_s
- @homework_detail_manual.evaluation_start = params[:evaluation_start]
- end
-
- unless @homework_detail_manual.evaluation_end.to_s == params[:evaluation_end].to_s
- @homework_detail_manual.evaluation_end = params[:evaluation_end]
- end
-
- @homework_detail_manual.evaluation_num = params[:evaluation_num]
- @homework_detail_manual.save
- @user_activity_id = params[:user_activity_id].to_i
- @is_in_course = params[:is_in_course].to_i
- @course_activity = params[:course_activity].to_i
- end
- end
-
- #评分设置
- def score_rule_set
- if params[:user_activity_id]
- @user_activity_id = params[:user_activity_id]
- else
- @user_activity_id = -1
- end
- @is_in_course = params[:is_in_course]
- @course_activity = params[:course_activity].to_i
- end
-
- private
- #获取课程
- def find_course
- @course = Course.find params[:course]
- rescue
- render_404
- end
- #获取作业
- def find_homework
- @homework = HomeworkCommon.find params[:id]
- @homework_detail_manual = @homework.homework_detail_manual
- @homework_detail_programing = @homework.homework_detail_programing
- @homework_detail_group = @homework.homework_detail_group
- @course = @homework.course
- rescue
- render_404
- end
- #是不是课程的老师
- def teacher_of_course
- render_403 unless User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
- end
-
- #当前用户是不是课程的成员
- def member_of_course
- render_403 unless @course.is_public==1 || User.current.member_of_course?(@course) || User.current.admin?
- end
-
- def get_assigned_homeworks(student_works, n, index)
- student_works += student_works
- student_works[index + 1 .. index + n]
- end
-end
+class HomeworkCommonController < ApplicationController
+ require 'net/http'
+ require 'json'
+ require "base64"
+ layout "base_courses"
+
+ include StudentWorkHelper
+ before_filter :find_course, :only => [:index,:new,:create]
+ before_filter :find_homework, :only => [:edit,:update,:alert_anonymous_comment,:start_anonymous_comment,:stop_anonymous_comment,:destroy,:start_evaluation_set,:set_evaluation_attr,:score_rule_set,:alert_forbidden_anonymous_comment,:alert_open_student_works,:open_student_works]
+ before_filter :teacher_of_course, :only => [:new, :create, :edit, :update, :destroy, :start_anonymous_comment, :stop_anonymous_comment, :alert_anonymous_comment,:start_evaluation_set,:set_evaluation_attr,:score_rule_set,:alert_forbidden_anonymous_comment,:alert_open_student_works,:open_student_works]
+ before_filter :member_of_course, :only => [:index]
+
+ def index
+ @new_homework = HomeworkCommon.new
+ @new_homework.homework_detail_manual = HomeworkDetailManual.new
+ @new_homework.course = @course
+ @page = params[:page] ? params[:page].to_i + 1 : 0
+ @is_teacher = User.current.logged? && (User.current.admin? || User.current.allowed_to?(:as_teacher,@course))
+ if @is_teacher
+ @homeworks = @course.homework_commons.order("updated_at desc").limit(10).offset(@page * 10)
+ else
+ @homeworks = @course.homework_commons.where("publish_time <= '#{Date.today}'").order("updated_at desc").limit(10).offset(@page * 10)
+ end
+ @is_student = User.current.logged? && (User.current.admin? || (User.current.member_of_course?(@course) && !@is_teacher))
+ @is_new = params[:is_new]
+
+ #设置at已读
+ @homeworks.each do |homework|
+ homework.journals_for_messages.each do |j|
+ User.current.at_messages.unviewed('JournalsForMessage', j.id).each {|x| x.viewed!}
+ end
+ end
+
+ respond_to do |format|
+ format.js
+ format.html
+ end
+ end
+
+ #新建作业,在个人作业列表创建作业
+ def new
+ render_404
+ end
+
+ #新建作业,在个人作业列表创建作业
+ def create
+ redirect_to user_homeworks_user_path(User.current.id)
+ end
+
+ def edit
+ @user = User.current
+ @is_in_course = params[:is_in_course].to_i
+ @course_activity = params[:course_activity].to_i
+ respond_to do |format|
+ format.html{render :layout => 'new_base_user'}
+ end
+ end
+
+ def update
+ if params[:homework_common]
+ @homework.name = params[:homework_common][:name]
+ @homework.description = params[:homework_common][:description]
+ if params[:homework_common][:publish_time] == ""
+ @homework.publish_time = Date.today
+ else
+ @homework.publish_time = params[:homework_common][:publish_time]
+ end
+ @homework.end_time = params[:homework_common][:end_time] || Time.now
+ @homework.course_id = params[:course_id]
+ @homework.anonymous_comment = params[:homework_common][:anonymous_comment] ? params[:homework_common][:anonymous_comment] : 0
+
+ homework_detail_manual = @homework.homework_detail_manual || HomeworkDetailManual.new
+ if @homework.publish_time <= Date.today && homework_detail_manual.comment_status == 0
+ homework_detail_manual.comment_status = 1
+ end
+ homework_detail_manual.evaluation_start = params[:evaluation_start].blank? ? @homework.end_time + 7 : params[:evaluation_start]
+ homework_detail_manual.evaluation_end = params[:evaluation_end].blank? ? homework_detail_manual.evaluation_start + 7 : params[:evaluation_end]
+
+ @homework.save_attachments(params[:attachments])
+ render_attachment_warning_if_needed(@homework)
+
+ #编程作业相关属性
+ if @homework.homework_type == 2
+ @homework.homework_detail_programing ||= HomeworkDetailPrograming.new
+ @homework_detail_programing = @homework.homework_detail_programing
+ @homework_detail_programing.language = params[:language_type].to_i
+
+ @homework.homework_tests.delete_all
+ inputs = params[:program][:input]
+ if Array === inputs
+ inputs.each_with_index do |val, i|
+ @homework.homework_tests << HomeworkTest.new(
+ input: val,
+ output: params[:program][:output][i]
+ )
+ end
+ end
+ end
+
+ #分组作业
+ if @homework.homework_type == 3
+ @homework.homework_detail_group ||= HomeworkDetailGroup.new
+ @homework_detail_group = @homework.homework_detail_group
+ @homework_detail_group.min_num = params[:min_num].to_i
+ @homework_detail_group.max_num = params[:max_num].to_i
+ @homework_detail_group.base_on_project = params[:base_on_project].to_i
+ end
+
+ if @homework.save
+ @homework_detail_manual.save if @homework_detail_manual
+ @homework_detail_programing.save if @homework_detail_programing
+ @homework_detail_group.save if @homework_detail_group
+
+ if params[:is_in_course] == "1"
+ redirect_to homework_common_index_path(:course => @course.id)
+ elsif params[:is_in_course] == "0"
+ redirect_to user_homeworks_user_path(User.current.id)
+ elsif params[:is_in_course] == "-1" && params[:course_activity] == "0"
+ redirect_to user_path(User.current.id)
+ elsif params[:is_in_course] == "-1" && params[:course_activity] == "1"
+ redirect_to course_path(@course.id)
+ end
+ end
+ end
+ end
+
+ def destroy
+ if @homework.destroy
+ respond_to do |format|
+ format.html {
+ if params[:is_in_course] == "1"
+ redirect_to homework_common_index_path(:course => @course.id)
+ elsif params[:is_in_course] == "0"
+ redirect_to user_homeworks_user_path(User.current.id)
+ elsif params[:is_in_course] == "-1" && params[:course_activity] == "0"
+ redirect_to user_path(User.current.id)
+ elsif params[:is_in_course] == "-1" && params[:course_activity] == "1"
+ redirect_to course_path(@course.id)
+ end
+ }
+ end
+ end
+ end
+
+ #开启匿评
+ #statue 1:启动成功,2:启动失败,作业总数大于等于2份时才能启动匿评,3:已开启匿评,请务重复开启,4:没有开启匿评的权限
+ def start_anonymous_comment
+ @statue = 4 and return unless User.current.admin? || User.current.allowed_to?(:as_teacher,@course)
+ @statue = 5 and return if Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")
+ if @homework_detail_manual.comment_status == 1
+ student_works = @homework.student_works
+ if student_works && student_works.size >= 2
+ if @homework.homework_type == 3
+ student_work_projects = @homework.student_work_projects.where("student_work_id is not null")
+ student_work_projects.each_with_index do |pro_work, pro_index|
+ n = @homework_detail_manual.evaluation_num
+ n = n < student_works.size ? n : student_works.size - 1
+ work_index = -1
+ student_works.each_with_index do |stu_work, stu_index|
+ if stu_work.id.to_i == pro_work.student_work_id.to_i
+ work_index = stu_index
+ end
+ end
+ assigned_homeworks = get_assigned_homeworks(student_works, n, work_index)
+ assigned_homeworks.each do |h|
+ student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: pro_work.user_id, student_work_id: h.id)
+ student_works_evaluation_distributions.save
+ end
+ end
+ else
+ student_works.each_with_index do |work, index|
+ user = work.user
+ n = @homework_detail_manual.evaluation_num
+ n = n < student_works.size ? n : student_works.size - 1
+ assigned_homeworks = get_assigned_homeworks(student_works, n, index)
+ assigned_homeworks.each do |h|
+ student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: user.id, student_work_id: h.id)
+ student_works_evaluation_distributions.save
+ end
+ end
+ end
+ @homework_detail_manual.update_column('comment_status', 2)
+ @homework_detail_manual.update_column('evaluation_start', Date.today)
+ @statue = 1
+ # 匿评开启消息邮件通知
+ send_message_anonymous_comment(@homework, m_status = 2)
+ Mailer.send_mail_anonymous_comment_open(@homework).deliver
+ else
+ @statue = 2
+
+ end
+ else
+ @statue = 3
+ end
+ @user_activity_id = params[:user_activity_id].to_i
+ @is_in_course = params[:is_in_course].to_i
+ @course_activity = params[:course_activity].to_i
+ end
+
+ #关闭匿评
+ def stop_anonymous_comment
+ @homework_detail_manual.update_column('comment_status', 3)
+ @homework_detail_manual.update_column('evaluation_end', Date.today)
+ #计算缺评扣分
+ work_ids = "(" + @homework.student_works.map(&:id).join(",") + ")"
+ @homework.student_works.each do |student_work|
+ absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids}").count
+ student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0
+ student_work.save
+ end
+ # 匿评关闭消息邮件通知
+ send_message_anonymous_comment(@homework, m_status = 3)
+ Mailer.send_mail_anonymous_comment_close(@homework).deliver
+ @user_activity_id = params[:user_activity_id].to_i
+ @is_in_course = params[:is_in_course].to_i
+ @course_activity = params[:course_activity].to_i
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ # 开启/关闭匿评消息通知
+ def send_message_anonymous_comment(homework, m_status )
+ # status 标记匿评状态 1为关闭 0为开启
+ course = homework.course
+ course.members.each do |m|
+ @homework.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => false, :status => m_status)
+ end
+ end
+ #提示
+ def alert_anonymous_comment
+ @cur_size = 0
+ @totle_size = 0
+ if @homework_detail_manual.comment_status == 1
+ @totle_size = @course.student.count
+ @cur_size = @homework.student_works.size
+ elsif @homework_detail_manual.comment_status == 2
+ @homework.student_works.map { |work| @totle_size += work.student_works_evaluation_distributions.count}
+ @cur_size = 0
+ @homework.student_works.map { |work| @cur_size += work.student_works_scores.where(:reviewer_role => 3).count}
+ end
+ @percent = format("%.2f",(@cur_size.to_f / ( @totle_size == 0 ? 1 : @totle_size)) * 100)
+ @user_activity_id = params[:user_activity_id].to_i
+ @is_in_course = params[:is_in_course].to_i
+ @course_activity = params[:course_activity].to_i
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def alert_forbidden_anonymous_comment
+ if params[:user_activity_id]
+ @user_activity_id = params[:user_activity_id]
+ else
+ @user_activity_id = -1
+ end
+ @is_in_course = params[:is_in_course] if params[:is_in_course]
+ @course_activity = params[:course_activity] if params[:course_Activity]
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def open_student_works
+ if @homework.is_open == 0
+ @homework.update_attribute(:is_open, 1)
+ else
+ @homework.update_attribute(:is_open, 0)
+ end
+ @user_activity_id = params[:user_activity_id]
+ @is_in_course = params[:is_in_course] if params[:is_in_course]
+ @course_activity = params[:course_activity] if params[:course_Activity]
+ end
+
+ def alert_open_student_works
+ if params[:user_activity_id]
+ @user_activity_id = params[:user_activity_id]
+ else
+ @user_activity_id = -1
+ end
+ @is_in_course = params[:is_in_course] if params[:is_in_course]
+ @course_activity = params[:course_activity] if params[:course_Activity]
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def programing_test
+ test = {language:params[:language],src:Base64.encode64(params[:src]),input:[params[:input]],output:[params[:output]]}
+ @index = params[:index]
+ uri = URI('http://192.168.80.21:8080/api/realtime.json')
+ body = test.to_json
+ res = Net::HTTP.new(uri.host, uri.port).start do |client|
+ request = Net::HTTP::Post.new(uri.path)
+ request.body = body
+ request["Content-Type"] = "application/json"
+ client.request(request)
+ end
+ result = JSON.parse(res.body)
+ @err_msg = result["compile_error_msg"]
+ result["results"].each do |re|
+ @result = re["status"]
+ end
+ end
+
+ #启动匿评参数设置
+ def start_evaluation_set
+ if params[:user_activity_id]
+ @user_activity_id = params[:user_activity_id]
+ else
+ @user_activity_id = -1
+ end
+ @is_in_course = params[:is_in_course]
+ @course_activity = params[:course_activity].to_i
+ end
+
+ #设置匿评参数
+ def set_evaluation_attr
+ if @homework_detail_manual
+ unless params[:evaluation_start].to_s == @homework_detail_manual.evaluation_start.to_s
+ @homework_detail_manual.evaluation_start = params[:evaluation_start]
+ end
+
+ unless @homework_detail_manual.evaluation_end.to_s == params[:evaluation_end].to_s
+ @homework_detail_manual.evaluation_end = params[:evaluation_end]
+ end
+
+ @homework_detail_manual.evaluation_num = params[:evaluation_num]
+ @homework_detail_manual.save
+ @user_activity_id = params[:user_activity_id].to_i
+ @is_in_course = params[:is_in_course].to_i
+ @course_activity = params[:course_activity].to_i
+ end
+ end
+
+ #评分设置
+ def score_rule_set
+ if params[:user_activity_id]
+ @user_activity_id = params[:user_activity_id]
+ else
+ @user_activity_id = -1
+ end
+ @is_in_course = params[:is_in_course]
+ @course_activity = params[:course_activity].to_i
+ end
+
+ private
+ #获取课程
+ def find_course
+ @course = Course.find params[:course]
+ rescue
+ render_404
+ end
+ #获取作业
+ def find_homework
+ @homework = HomeworkCommon.find params[:id]
+ @homework_detail_manual = @homework.homework_detail_manual
+ @homework_detail_programing = @homework.homework_detail_programing
+ @homework_detail_group = @homework.homework_detail_group
+ @course = @homework.course
+ rescue
+ render_404
+ end
+ #是不是课程的老师
+ def teacher_of_course
+ render_403 unless User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
+ end
+
+ #当前用户是不是课程的成员
+ def member_of_course
+ render_403 unless @course.is_public==1 || User.current.member_of_course?(@course) || User.current.admin?
+ end
+
+ def get_assigned_homeworks(student_works, n, index)
+ student_works += student_works
+ student_works[index + 1 .. index + n]
+ end
+end
diff --git a/app/controllers/news_controller.rb b/app/controllers/news_controller.rb
index 0962deb10..f45e1dbd7 100644
--- a/app/controllers/news_controller.rb
+++ b/app/controllers/news_controller.rb
@@ -107,32 +107,18 @@ class NewsController < ApplicationController
def show
# 更新news对应的forge_messages的消息viewed字段
+ ids = @news.comments.map { |comment| comment.id }.join(",") unless @news.comments.nil?
if @project
- query_message_news = @news.forge_messages
+ # 更新新闻
+ query_message_news = ForgeMessage.where("forge_message_id =? and user_id =? and viewed =?", @news.id, User.current.id, 0).first
+ # 更新新闻的时候一并更新回复
+ ForgeMessage.where("forge_message_id in (#{ids}) and forge_message_type = 'Comment' and user_id = #{User.current.id}").update_all(:viewed => true) unless ids.blank?
else
- query_message_news = @news.course_messages
+ query_message_news = CourseMessage.where("course_message_id =? and user_id =? and viewed =?", @news.id, User.current.id, 0).first
+ CourseMessage.where("course_message_id in (#{ids}) and course_message_type = 'Comment' and user_id = #{User.current.id}").update_all(:viewed => true) unless ids.blank?
end
- query_message_news.each do |query|
- if User.current.id == query.user_id
- query.update_attributes(:viewed => true)
- end
- end
- # 更新项目新闻的评阅的消息viewed字段
- current_message_comments = @news.comments
- current_message_comments.each do |current_message_comment|
- if @project
- query_message_comment = current_message_comment.forge_messages
- else
- query_message_comment = current_message_comment.course_messages
- end
- query_message_comment.each do |query|
- if User.current.id == query.user_id
- query.update_attributes(:viewed => true)
- end
- end
- end
- # end
-
+ query_message_news.update_attribute(:viewed, true) unless query_message_news.nil?
+ # over
cs = CoursesService.new
result = cs.show_course_news params,User.current
@news = result[:news]
diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb
index f225e7f50..711663c3d 100644
--- a/app/controllers/organizations_controller.rb
+++ b/app/controllers/organizations_controller.rb
@@ -69,6 +69,8 @@ class OrganizationsController < ApplicationController
def show
if @organization.is_public? || User.current.admin? || User.current.member_of_org?(@organization)
@organization = Organization.find(params[:id])
+ # 统计访问量
+ @organization.update_attribute(:visits, @organization.visits.to_i + 1)
if params[:org_subfield_id]
@org_subfield = OrgSubfield.find(params[:org_subfield_id])
@org_subfield_ids = @org_subfield.org_document_comments.map(&:id) << 0
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index b650afe1b..05c80a9fc 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -298,6 +298,8 @@ class ProjectsController < ApplicationController
if params[:jump] && redirect_to_project_menu_item(@project, params[:jump])
return
end
+ # 统计访问量
+ @project.update_attribute(:visits, @project.visits.to_i + 1)
=begin
cond = @project.project_condition(Setting.display_subprojects_issues?)
has = {
@@ -406,6 +408,7 @@ class ProjectsController < ApplicationController
end
flash.now[:error] = html if !html.to_s.blank?
end
+ # for:设置默认分支
scm = params[:repository_scm] || (Redmine::Scm::Base.all & Setting.enabled_scm).first
@repository = Repository.factory(scm)
@repository.is_default = @project.repository.nil?
diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb
index f7845d6f1..9bb6055ee 100644
--- a/app/controllers/repositories_controller.rb
+++ b/app/controllers/repositories_controller.rb
@@ -140,7 +140,7 @@ class RepositoriesController < ApplicationController
attrs = {:parent_id => project.parent_id}.reject {|k,v| v.nil?}
redirect_to new_project_url(attrs, :course => '0')
else
- redirect_to settings_project_url(project)
+ redirect_to project_path(project)
end
}
format.api { render :action => 'show', :status => :created, :location => url_for(:controller => 'projects', :action => 'show', :id => project.id) }
@@ -431,7 +431,10 @@ update
def entry
entry_and_raw(false)
- render :layout => 'base_projects'
+ @content = @repository.cat(@path, @rev)
+ if is_entry_text_data?(@content, @path)
+ render :layout => 'base_projects'
+ end
end
def entry_and_raw(is_raw)
@@ -443,9 +446,7 @@ update
@content = @repository.cat(@path, @rev)
(show_error_not_found; return) unless @content
- if is_raw ||
- (@content.size && @content.size > Setting.file_max_size_displayed.to_i.kilobyte) ||
- ! is_entry_text_data?(@content, @path)
+ if is_raw || (@content.size && @content.size > Setting.file_max_size_displayed.to_i.kilobyte) || !is_entry_text_data?(@content, @path)
# Force the download
send_opt = { :filename => filename_for_content_disposition(@path.split('/').last) }
send_type = Redmine::MimeType.of(@path)
diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb
index a38d83851..aa77e2d51 100644
--- a/app/controllers/student_work_controller.rb
+++ b/app/controllers/student_work_controller.rb
@@ -36,6 +36,14 @@ class StudentWorkController < ApplicationController
unless student_work.save
resultObj[:status] = 200
else
+ student_work.name = params[:title]
+ student_work.description = params[:src]
+ if Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.parse(Time.now.to_s).strftime("%Y-%m-%d")
+ student_work.late_penalty = @homework.late_penalty
+ else
+ student_work.late_penalty = 0
+ end
+ student_work.save
resultObj[:status] = result["status"].to_i
resultObj[:time] = student_work_test.created_at.to_s(:db)
resultObj[:index] = student_work.student_work_tests.count
@@ -91,25 +99,27 @@ class StudentWorkController < ApplicationController
else
student_in_group = '(' + group_students.map{|user| user.id}.join(',') + ')'
end
- #老师 || 超级管理员 || 禁用匿评&&作业截止&&已提交作品 显示所有列表
- if @homework.is_open == 1
- @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").joins(:user).where("users.id in #{student_in_group}").order("#{@order} #{@b_sort}"),@name
+ #开放作品 || 老师 || 超级管理员 || 禁用匿评&&作业截止&&已提交作品 显示所有列表
+ if @homework.is_open == 1 || @is_teacher || User.current.admin? || (User.current.member_of_course?(@course) && @homework.anonymous_comment == 1 && Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d") && !@homework.student_works.where(:user_id => User.current.id).empty?)
+ if @order == 'lastname'
+ @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").joins(:user).where("users.id in #{student_in_group}").order("CONVERT(lastname USING gbk) COLLATE gbk_chinese_ci #{@b_sort}, login #{@b_sort}"),@name
+ elsif @order == 'student_id'
+ @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").joins(:user).where("users.id in #{student_in_group}").joins("join user_extensions on student_works.user_id = user_extensions.user_id").order("#{@order} #{@b_sort}"),@name
+ else
+ @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").joins(:user).where("users.id in #{student_in_group}").order("#{@order} #{@b_sort}"),@name
+ end
@show_all = true
- elsif @homework.is_open == 0 && User.current.member_of_course?(@course) || User.current.admin?
- if @is_teacher || @homework.homework_detail_manual.nil? ||
- (@homework.anonymous_comment == 1 && Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d") && !@homework.student_works.where(:user_id => User.current.id).empty?)
- @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").joins(:user).where("users.id in #{student_in_group}").order("#{@order} #{@b_sort}"),@name
- @show_all = true
- elsif @homework.homework_detail_manual.comment_status == 1 #学生 && 未开启匿评 只看到自己的
+ elsif User.current.member_of_course?(@course)
+ if @homework.homework_detail_manual.comment_status == 1 #学生 && 未开启匿评 只看到自己的
if @homework.homework_type == 3
pro = @homework.student_work_projects.where(:user_id => User.current.id).first
if pro.nil?
@stundet_works = []
else
- @stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:id => pro.student_work_id)
+ @stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").where(:id => pro.student_work_id)
end
else
- @stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:user_id => User.current.id)
+ @stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").where(:user_id => User.current.id)
end
elsif @homework.homework_detail_manual.comment_status == 2 #学生 && 开启匿评 看到匿评列表
if @homework.homework_type == 3
@@ -129,15 +139,21 @@ class StudentWorkController < ApplicationController
if pro.nil?
my_work = []
else
- my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:id => pro.student_work_id)
+ my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").where(:id => pro.student_work_id)
end
else
- my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:user_id => User.current.id)
+ my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").where(:user_id => User.current.id)
end
if my_work.empty?
@stundet_works = []
else
- @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").joins(:user).where("users.id in #{student_in_group}").order("#{@order} #{@b_sort}"),@name
+ if @order == 'lastname'
+ @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").joins(:user).where("users.id in #{student_in_group}").order("CONVERT(lastname USING gbk) COLLATE gbk_chinese_ci #{@b_sort}, login #{@b_sort}"),@name
+ elsif @order == 'student_id'
+ @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").joins(:user).where("users.id in #{student_in_group}").joins("join user_extensions on student_works.user_id = user_extensions.user_id").order("#{@order} #{@b_sort}"),@name
+ else
+ @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").joins(:user).where("users.id in #{student_in_group}").order("#{@order} #{@b_sort}"),@name
+ end
@show_all = true
end
else
@@ -148,25 +164,28 @@ class StudentWorkController < ApplicationController
return
end
- @student_work_count = (search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").joins(:user).where("users.id in #{student_in_group}").order("#{@order} #{@b_sort}"),@name).count
+ @student_work_count = (search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").joins(:user).where("users.id in #{student_in_group}").order("#{@order} #{@b_sort}"),@name).count
else
- if @homework.is_open == 1
- @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").order("#{@order} #{@b_sort}"),@name
+ if @homework.is_open == 1 || @is_teacher || User.current.admin? || (User.current.member_of_course?(@course) && @homework.anonymous_comment == 1 && Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d") && !@homework.student_works.where(:user_id => User.current.id).empty?)
+ if @order == 'lastname'
+ @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").joins(:user).order("CONVERT(lastname USING gbk) COLLATE gbk_chinese_ci #{@b_sort}, login #{@b_sort}"),@name
+ elsif @order == 'student_id'
+ @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").joins("join user_extensions on student_works.user_id = user_extensions.user_id").order("#{@order} #{@b_sort}"),@name
+ else
+ @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").order("#{@order} #{@b_sort}"),@name
+ end
@show_all = true
- elsif @homework.is_open == 0 && User.current.member_of_course?(@course) || User.current.admin?
- if @is_teacher || @homework.homework_detail_manual.nil? || (@homework.anonymous_comment == 1 && Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d") && !@homework.student_works.where(:user_id => User.current.id).empty?) #老师 || 超级管理员 显示所有列表
- @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").order("#{@order} #{@b_sort}"),@name
- @show_all = true
- elsif @homework.homework_detail_manual.comment_status == 1 #学生 && 未开启匿评 只看到自己的
+ elsif User.current.member_of_course?(@course)
+ if @homework.homework_detail_manual.comment_status == 1 #学生 && 未开启匿评 只看到自己的
if @homework.homework_type == 3
pro = @homework.student_work_projects.where(:user_id => User.current.id).first
if pro.nil?
@stundet_works = []
else
- @stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:id => pro.student_work_id)
+ @stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").where(:id => pro.student_work_id)
end
else
- @stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:user_id => User.current.id)
+ @stundet_works = @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").where(:user_id => User.current.id)
end
elsif @homework.homework_detail_manual.comment_status == 2 #学生 && 开启匿评 看到匿评列表
if @homework.homework_type == 3
@@ -186,15 +205,21 @@ class StudentWorkController < ApplicationController
if pro.nil?
my_work = []
else
- my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:id => pro.student_work_id)
+ my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").where(:id => pro.student_work_id)
end
else
- my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").where(:user_id => User.current.id)
+ my_work = @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").where(:user_id => User.current.id)
end
if my_work.empty?
@stundet_works = []
else
- @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").order("#{@order} #{@b_sort}"),@name
+ if @order == 'lastname'
+ @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").joins(:user).order("CONVERT(lastname USING gbk) COLLATE gbk_chinese_ci #{@b_sort}, login #{@b_sort}"),@name
+ elsif @order == 'student_id'
+ @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").joins("join user_extensions on student_works.user_id = user_extensions.user_id").order("#{@order} #{@b_sort}"),@name
+ else
+ @stundet_works = search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").order("#{@order} #{@b_sort}"),@name
+ end
@show_all = true
end
else
@@ -205,7 +230,7 @@ class StudentWorkController < ApplicationController
return
end
- @student_work_count = (search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,final_score - absence_penalty - late_penalty) as score").order("#{@order} #{@b_sort}"),@name).count
+ @student_work_count = (search_homework_member @homework.student_works.select("student_works.*,IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as score").order("#{@order} #{@b_sort}"),@name).count
end
@score = @b_sort == "desc" ? "asc" : "desc"
@@ -303,6 +328,7 @@ class StudentWorkController < ApplicationController
stu_project.save
end
end
+ @homework.update_attributes(:updated_at => Time.now)
update_course_activity(@homework.class,@homework.id)
update_user_activity(@homework.class,@homework.id)
update_org_activity(@homework.class,@homework.id)
@@ -500,6 +526,10 @@ class StudentWorkController < ApplicationController
when 3 #学生评分 学生评分显示平均分
@work.student_score = @work.student_works_scores.where(:reviewer_role => 3).average(:score).try(:round, 2).to_f
end
+ @homework.update_attributes(:updated_at => Time.now)
+ update_course_activity(@homework.class,@homework.id)
+ update_user_activity(@homework.class,@homework.id)
+ update_org_activity(@homework.class,@homework.id)
if @work.save
respond_to do |format|
format.js
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 921262106..1c9a00fa4 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -58,6 +58,7 @@ class UsersController < ApplicationController
helper :sort
helper :attachments
include SortHelper
+ include ApplicationHelper
helper :custom_fields
include CustomFieldsHelper
include AvatarHelper
@@ -375,13 +376,15 @@ class UsersController < ApplicationController
#用户作业列表
def user_homeworks
+ @order,@b_sort = params[:order] || "created_at",params[:sort] || "desc"
@user = User.current
+ @r_sort = @b_sort == "desc" ? "asc" : "desc"
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")
+ @homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}")
elsif params[:type] == "2" #我的题库
- @homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}'").order("created_at desc")
+ @homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}")
end
@type = params[:type]
@limit = 15
@@ -422,7 +425,7 @@ class UsersController < ApplicationController
end
def choose_user_course
- homework = HomeworkCommon.find params[:homework].to_i
+ homework = HomeworkCommon.find params[:send_id].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)}
@@ -524,20 +527,22 @@ class UsersController < ApplicationController
end
def user_homework_type
+ @order,@b_sort = params[:order] || "created_at",params[:sort] || "desc"
+ @r_sort = @b_sort == "desc" ? "asc" : "desc"
@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")
+ @homeworks = HomeworkCommon.where("course_id in #{visible_course_ids} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}")
elsif params[:type] == "2" #我的题库
- @homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}'").order("created_at desc")
+ @homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}'").order("#{@order} #{@b_sort}")
end
if params[:property] && params[:property] == "1"
- @homeworks = @homeworks.where("homework_type = 1").reorder("created_at desc")
+ @homeworks = @homeworks.where("homework_type = 1").reorder("#{@order} #{@b_sort}")
elsif params[:property] && params[:property] == "2"
- @homeworks = @homeworks.where("homework_type = 2").reorder("created_at desc")
+ @homeworks = @homeworks.where("homework_type = 2").reorder("#{@order} #{@b_sort}")
elsif params[:property] && params[:property] == "3"
- @homeworks = @homeworks.where("homework_type = 3").reorder("created_at desc")
+ @homeworks = @homeworks.where("homework_type = 3").reorder("#{@order} #{@b_sort}")
end
@type = params[:type]
@property = params[:property]
@@ -563,6 +568,8 @@ class UsersController < ApplicationController
#用户主页过滤作业
def user_search_homeworks
+ @order,@b_sort = params[:order] || "created_at",params[:sort] || "desc"
+ @r_sort = @b_sort == "desc" ? "asc" : "desc"
@user = User.current
search = params[:name].to_s.strip.downcase
if(params[:type].blank? || params[:type] == "1") #全部
@@ -572,16 +579,16 @@ class UsersController < ApplicationController
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")
+ @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("#{@order} #{@b_sort}")
elsif params[:type] == "2" #课程资源
- @homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}' and (name like '%#{search}%')").order("created_at desc")
+ @homeworks = HomeworkCommon.where("user_id = #{@user.id} and publish_time <= '#{Date.today}' and (name like '%#{search}%')").order("#{@order} #{@b_sort}")
end
if params[:property] && params[:property] == "1"
- @homeworks = @homeworks.where("homework_type = 1").reorder("created_at desc")
+ @homeworks = @homeworks.where("homework_type = 1").reorder("#{@order} #{@b_sort}")
elsif params[:property] && params[:property] == "2"
- @homeworks = @homeworks.where("homework_type = 2").reorder("created_at desc")
+ @homeworks = @homeworks.where("homework_type = 2").reorder("#{@order} #{@b_sort}")
elsif params[:property] && params[:property] == "3"
- @homeworks = @homeworks.where("homework_type = 3").reorder("created_at desc")
+ @homeworks = @homeworks.where("homework_type = 3").reorder("#{@order} #{@b_sort}")
end
@type = params[:type]
@limit = 15
@@ -591,6 +598,8 @@ class UsersController < ApplicationController
@offset ||= @hw_pages.offset
@homeworks = paginateHelper @homeworks,15
@is_import = params[:is_import]
+ @property = params[:property]
+ @search = search
respond_to do |format|
format.js
end
@@ -690,6 +699,11 @@ class UsersController < ApplicationController
end
student_work.save
+ homework.update_attributes(:updated_at => Time.now)
+ update_course_activity(homework.class,homework.id)
+ update_user_activity(homework.class,homework.id)
+ update_org_activity(homework.class,homework.id)
+
flash[:notice] = l(:notice_successful_create)
redirect_to student_work_index_url(:homework => params[:homework])
else
@@ -1168,6 +1182,10 @@ class UsersController < ApplicationController
end
def show
+ # 统计访问量
+ unless User.current == @user
+ @user.update_attribute(:visits, @user.visits.to_i + 1)
+ end
#更新用户申请成为课程老师或教辅消息的状态
if params[:course_id] != nil
join_course_messages = CourseMessage.where("course_id =? and course_message_type =? and user_id =? and course_message_id =? and viewed =?",
@@ -1537,7 +1555,7 @@ class UsersController < ApplicationController
@user = User.find(params[:id])
#@user.save_attachments(params[:attachments],User.current)
# Container_type为Principal
- Attachment.attach_filesex(@user, params[:attachments], params[:attachment_type])
+ attach = Attachment.attach_filesex_public(@user, params[:attachments], params[:attachment_type], is_public = true)
if(params[:type].blank? || params[:type] == "1") # 我的资源
# 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源
if params[:status] == 2
@@ -2322,9 +2340,7 @@ class UsersController < ApplicationController
# 获取公共资源
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")
+ attachments = Attachment.where("(is_publish = 1 and is_public =1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) ").order("created_on desc")
end
# 获取我的资源
@@ -2341,7 +2357,7 @@ class UsersController < ApplicationController
# 获取公共资源课程
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")
+ attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1 and is_public =1)").order("created_on desc")
end
# 获取我的项目资源
@@ -2351,7 +2367,7 @@ class UsersController < ApplicationController
# 获取公共资源的项目资源
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")
+ attchments = Attachment.where("container_type = 'Project' and container_id is not null and is_public =1").order("created_on desc")
end
# 获取我上传的附件
@@ -2361,7 +2377,7 @@ class UsersController < ApplicationController
# 获取公共资源中我上传的附件
def get_attch_resources_public
- attchments = Attachment.where("container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal')").order("created_on desc")
+ attchments = Attachment.where("container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal') and container_id is not null and is_public =1").order("created_on desc")
end
# 获取我的用户类型资源
@@ -2371,7 +2387,7 @@ class UsersController < ApplicationController
# 获取我的用户类型资源
def get_principal_resources_public
- attchments = Attachment.where("container_type = 'Principal'").order("created_on desc")
+ attchments = Attachment.where("container_type = 'Principal'and container_id is not null and is_public =1").order("created_on desc")
end
# 资源库 分为全部 课程资源 项目资源 附件
@@ -2603,9 +2619,7 @@ class UsersController < ApplicationController
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")
+ @attachments = Attachment.where("is_publish = 1 and is_public = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course') and (filename like :p)" ,:p => search).order("created_on desc")
end
@type = params[:type]
@limit = 25
diff --git a/app/controllers/words_controller.rb b/app/controllers/words_controller.rb
index d1aa67483..e6d1d9117 100644
--- a/app/controllers/words_controller.rb
+++ b/app/controllers/words_controller.rb
@@ -276,7 +276,7 @@ class WordsController < ApplicationController
ids = params[:asset_id].split(',')
update_kindeditor_assets_owner ids,feedback[:id],OwnerTypeHelper::JOURNALSFORMESSAGE
end
-
+ @homework_common.update_attributes(:updated_at => Time.now)
update_course_activity(@homework_common.class,@homework_common.id)
update_user_activity(@homework_common.class,@homework_common.id)
update_org_activity(@homework_common.class,@homework_common.id)
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index bf7a5fdf9..477e18f41 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -117,56 +117,102 @@ module ApplicationHelper
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)
+ :news_reply_num => 0, :resource_num => 0, :journal_num => 0, :journal_reply_num => 0, :homework_journal_num => 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)
+ course_contributor_score.update_attributes(:homework_journal_num => score)
end
- when "JournalForMessage"
+ # 课程留言
+ when "Course"
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 => 1, :journal_reply_num => 0, :total_score => 1)
+ :news_reply_num => 0, :resource_num => 0, :journal_num => 1, :journal_reply_num => 0)
else
score = course_contributor_score.journal_num + 1
- total_score = course_contributor_score.total_score + 1
- course_contributor_score.update_attributes(:journal_num => score, :total_score => total_score)
+ course_contributor_score.update_attributes(:journal_num => score)
end
when "Message"
if course_contributor_score.nil?
- CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :message_num => 2, :message_reply_num => 0,
- :news_reply_num => 0, :resource_num => 0, :journal_num => 0, :journal_reply_num => 0, :total_score => 2)
+ CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :message_num => 1, :message_reply_num => 0,
+ :news_reply_num => 0, :resource_num => 0, :journal_num => 0, :journal_reply_num => 0)
else
- score = course_contributor_score.message_num + 2
- total_score = course_contributor_score.total_score + 2
- course_contributor_score.update_attributes(:message_num => score, :total_score => total_score)
+ score = course_contributor_score.message_num + 1
+ course_contributor_score.update_attributes(:message_num => score)
end
when "MessageReply"
if course_contributor_score.nil?
CourseContributorScore.create(:course_id => course_id, :user_id => user_id, :message_num => 0, :message_reply_num => 1,
- :news_reply_num => 0, :resource_num => 0, :journal_num => 0, :journal_reply_num => 0, :total_score => 1)
+ :news_reply_num => 0, :resource_num => 0, :journal_num => 0, :journal_reply_num => 0)
else
score = course_contributor_score.message_reply_num + 1
- total_score = course_contributor_score.total_score + 1
- course_contributor_score.update_attributes(:message_reply_num => score, :total_score => total_score)
+ course_contributor_score.update_attributes(:message_reply_num => score)
end
when "NewReply"
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 => 1, :resource_num => 0, :journal_num => 0, :journal_reply_num => 0, :total_score => 1)
+ :news_reply_num => 1, :resource_num => 0, :journal_num => 0, :journal_reply_num => 0)
else
score = course_contributor_score.news_reply_num + 1
- total_score = course_contributor_score.total_score + 1
- course_contributor_score.update_attributes(:news_reply_num => score, :total_score => total_score)
+ course_contributor_score.update_attributes(:news_reply_num => 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)
+ :news_reply_num => 0, :news_num => 1, :resource_num => 0, :journal_num => 0, :journal_reply_num => 0)
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)
+ course_contributor_score.update_attributes(:news_num => score)
+ end
+ when "Attachment"
+ 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 => 0, :resource_num => 1, :journal_num => 0, :journal_reply_num => 0)
+ else
+ score = course_contributor_score.resource_num + 1
+ course_contributor_score.update_attributes(:resource_num => score)
+ end
+ end
+ end
+
+ # 删除某条记录相应减少课程统计数
+ def down_course_score_num (course_id,user_id,type)
+ course_contributor_score = CourseContributorScore.where("course_id =? and user_id =?", course_id, user_id).first
+ case type
+ when "HomeworkCommon"
+ unless course_contributor_score.nil?
+ score = course_contributor_score.homework_journal_num - 1
+ course_contributor_score.update_attribute(:homework_journal_num, score < 0 ? 0 : score)
+ end
+ # 课程留言
+ when "Course"
+ unless course_contributor_score.nil?
+ score = course_contributor_score.journal_num - 1
+ course_contributor_score.update_attribute(:journal_num, score < 0 ? 0 : score)
+ end
+ when "Message"
+ unless course_contributor_score.nil?
+ score = course_contributor_score.message_num - 1
+ course_contributor_score.update_attribute(:message_num, score < 0 ? 0 : score)
+ end
+ when "MessageReply"
+ unless course_contributor_score.nil?
+ score = course_contributor_score.message_reply_num - 1
+ course_contributor_score.update_attribute(:message_reply_num, score < 0 ? 0 : score)
+ end
+ when "NewReply"
+ unless course_contributor_score.nil?
+ score = course_contributor_score.news_reply_num - 1
+ course_contributor_score.update_attribute(:news_reply_num, score < 0 ? 0 : score)
+ end
+ when "News"
+ unless course_contributor_score.nil?
+ score = course_contributor_score.news_num - 1
+ course_contributor_score.update_attribute(:news_num, score < 0 ? 0 : score)
+ end
+ when "Attachment"
+ unless course_contributor_score.nil?
+ score = course_contributor_score.resource_num - 1
+ course_contributor_score.update_attribute(:resource_num, score < 0 ? 0 : score)
end
end
end
@@ -2895,3 +2941,13 @@ int main(int argc, char** argv){
end
end
end
+
+def user_url_in_org(user_id)
+ if Rails.env.development?
+ return "http://localhost:3000/users/" + user_id.to_s
+ elsif Rails.env.test?
+ return "https://www.test.forge.trustie.net/users/" + user_id.to_s
+ else
+ return "https://www.trustie.net/users/" + user_id.to_s
+ end
+end
diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb
index cbc514df6..d98de27f6 100644
--- a/app/helpers/courses_helper.rb
+++ b/app/helpers/courses_helper.rb
@@ -71,6 +71,11 @@ module CoursesHelper
project.members.count
end
+ # 统计课程中作品的数量
+ def student_works_num course
+ StudentWork.find_by_sql("SELECT * FROM student_works WHERE homework_common_id IN (SELECT id FROM homework_commons WHERE course_id = '#{course.id}')").count
+ end
+
# 返回教师数量,即roles表中定义的Manager
def teacherCount project
project ? project.members.count - studentCount(project).to_i : 0
@@ -601,6 +606,24 @@ module CoursesHelper
Course.tagged_with(tag_name).order('updated_at desc')
end
+ #分班下拉框
+ def course_group_option course
+ type = []
+ option1 = []
+ option1 << "暂无"
+ option1 << 0
+ type << option1
+ unless course.course_groups.nil?
+ course.course_groups.each do |cg|
+ option = []
+ option << cg.name
+ option << cg.id
+ type << option
+ end
+ end
+ type
+ end
+
#课程实践年份下拉框
def course_time_option year
type = []
@@ -762,7 +785,7 @@ module CoursesHelper
return[] unless course
result = []
course.attachments.each do |attachment|
- if attachment.is_public? ||User.current == attachment.author ||User.current.allowed_to?(:as_teacher,Course.find(attachment.container_id))|| (User.current.member_of_course?(course) && attachment.is_publish == 1) || User.current.admin?
+ if (attachment.is_public? && attachment.is_publish == 1) ||User.current == attachment.author ||User.current.allowed_to?(:as_teacher,course)|| (User.current.member_of_course?(course) && attachment.is_publish == 1) || User.current.admin?
result << attachment
end
end
diff --git a/app/helpers/files_helper.rb b/app/helpers/files_helper.rb
index 238999a71..913c49310 100644
--- a/app/helpers/files_helper.rb
+++ b/app/helpers/files_helper.rb
@@ -121,7 +121,8 @@ module FilesHelper
def visable_attachemnts attachments
result = []
attachments.each do |attachment|
- if attachment.is_public? ||
+ if (attachment.is_public? && attachment.container_type != "Course") ||
+ (attachment.is_public? && attachment.container_type == "Course" && attachment.is_publish == 1)||
(attachment.container_type == "Project" && User.current.member_of?(attachment.project)) ||
(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)||
diff --git a/app/helpers/school_helper.rb b/app/helpers/school_helper.rb
index 0528cb7ac..075d2b039 100644
--- a/app/helpers/school_helper.rb
+++ b/app/helpers/school_helper.rb
@@ -1,2 +1,15 @@
module SchoolHelper
+ def schoolMember_num school
+ count = student_num(school) + teacher_num(school)
+ count.to_s
+ end
+
+ def student_num school
+ UserExtensions.find_by_sql("SELECT * FROM user_extensions WHERE occupation = '#{school.name}' AND identity = '1'").count
+ end
+
+ def teacher_num school
+ UserExtensions.find_by_sql("SELECT * FROM user_extensions AS ue, schools AS s WHERE ue.school_id = s.id AND s.name = '#{school.name}' AND ue.identity = '0'").count
+ end
+
end
diff --git a/app/models/attachment.rb b/app/models/attachment.rb
index 82f648ad9..1cc0d3b7a 100644
--- a/app/models/attachment.rb
+++ b/app/models/attachment.rb
@@ -43,6 +43,7 @@ class Attachment < ActiveRecord::Base
#elasticsearch
include Elasticsearch::Model
+ include ApplicationHelper
#elasticsearch kaminari init
Kaminari::Hooks.init
Elasticsearch::Model::Response::Response.__send__ :include, Elasticsearch::Model::Response::Pagination::Kaminari
@@ -92,7 +93,7 @@ class Attachment < ActiveRecord::Base
after_save :act_as_course_activity
after_create :office_conver, :be_user_score,:act_as_forge_activity,:create_attachment_ealasticsearch_index
after_update :office_conver, :be_user_score,:update_attachment_ealasticsearch_index
- after_destroy :delete_from_disk,:down_user_score,:delete_attachment_ealasticsearch_index, :decrease_attchments_count
+ after_destroy :delete_from_disk,:down_user_score,:delete_attachment_ealasticsearch_index, :decrease_attchments_count, :down_course_score
# add by nwb
# 获取所有可公开的资源文件列表
@@ -498,6 +499,12 @@ class Attachment < ActiveRecord::Base
result
end
+ def self.attach_filesex_public(obj, attachments,attachment_type, is_public)
+ result = obj.save_attachmentsex_public(attachments, User.current,attachment_type, is_public)
+ obj.attach_saved_attachments
+ result
+ end
+
def self.latest_attach(attachments, filename)
attachments.sort_by(&:created_on).reverse.detect {
|att| att.filename.downcase == filename.downcase
@@ -655,6 +662,12 @@ class Attachment < ActiveRecord::Base
self.container.project_score.update_attribute(:attach_num, attach_count < 0 ? 0 : attach_count)
end
end
+
+ def down_course_score
+ if self.container_type == "Course"
+ down_course_score_num(self.container_id, self.author_id, "Attachment")
+ end
+ end
end
# Delete the previous articles index in Elasticsearch
diff --git a/app/models/comment.rb b/app/models/comment.rb
index 4d7af1d73..b87203a50 100644
--- a/app/models/comment.rb
+++ b/app/models/comment.rb
@@ -36,6 +36,7 @@ class Comment < ActiveRecord::Base
validates_presence_of :commented, :author, :comments
safe_attributes 'comments'
after_create :send_mail, :act_as_system_message, :act_as_student_score
+ after_destroy :down_course_score
def act_as_system_message
if self.commented.course
@@ -86,4 +87,11 @@ class Comment < ActiveRecord::Base
end
end
+ # 课程新闻数减少
+ def down_course_score
+ if self.commented.course
+ down_course_score_num(self.commented.course.id, self.author_id, "NewReply")
+ end
+ end
+
end
diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb
index 7990979e4..dae779b65 100644
--- a/app/models/journals_for_message.rb
+++ b/app/models/journals_for_message.rb
@@ -73,7 +73,7 @@ class JournalsForMessage < ActiveRecord::Base
#after_update :update_activity
after_destroy :reset_counters!
after_save :be_user_score
- after_destroy :down_user_score
+ after_destroy :down_user_score, :down_course_score
# default_scope { where('m_parent_id IS NULL') }
@@ -184,6 +184,7 @@ class JournalsForMessage < ActiveRecord::Base
end
end
end
+
# 更新用户分数 -by zjc
def down_user_score
#删除了留言回复
@@ -286,10 +287,19 @@ class JournalsForMessage < ActiveRecord::Base
# 课程成员得分(活跃度)
def act_as_student_score
if self.jour_type == "Course"
- course_member_score(self.jour_id, self.user_id, "JournalForMessage")
+ course_member_score(self.jour_id, self.user_id, "Course")
elsif self.jour_type == "HomeworkCommon"
course_member_score(self.jour.course_id, self.user_id, "HomeworkCommon")
end
end
+ # 删除操作的时候相应扣掉回复数
+ def down_course_score
+ if self.jour_type == "Course"
+ down_course_score_num(self.jour_id, self.user_id, "Course")
+ elsif self.jour_type == "HomeworkCommon"
+ down_course_score_num(self.jour.course_id, self.user_id, "HomeworkCommon")
+ end
+ end
+
end
diff --git a/app/models/member.rb b/app/models/member.rb
index 413fedc07..9eac21fa7 100644
--- a/app/models/member.rb
+++ b/app/models/member.rb
@@ -1,185 +1,185 @@
-# 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.
-
-class Member < ActiveRecord::Base
- belongs_to :user
- belongs_to :principal, :foreign_key => 'user_id'
- has_many :member_roles, :dependent => :destroy
- has_many :roles, :through => :member_roles
-
- belongs_to :project
- belongs_to :course
-
- belongs_to :course_group
- validates_presence_of :principal
- validates_uniqueness_of :user_id, :scope => [:project_id,:course_id]
- validate :validate_role
-
- before_destroy :set_issue_category_nil
- # 删除项目成员一并删除该成员的邀请记录
- after_destroy :delete_ivite_list
-
-
-
- def role
- end
-
- def role=
- end
-
- def name
- self.user.name
- end
-
- alias :base_role_ids= :role_ids=
- def role_ids=(arg)
- ids = (arg || []).collect(&:to_i) - [0]
- # Keep inherited roles
- ids += member_roles.select {|mr| !mr.inherited_from.nil?}.collect(&:role_id)
-
- new_role_ids = ids - role_ids
- # Add new roles
- new_role_ids.each {|id| member_roles << MemberRole.new(:role_id => id) }
- # Remove roles (Rails' #role_ids= will not trigger MemberRole#on_destroy)
- member_roles_to_destroy = member_roles.select {|mr| !ids.include?(mr.role_id)}
- if member_roles_to_destroy.any?
- member_roles_to_destroy.each(&:destroy)
- end
- end
-
- def <=>(member)
- a, b = roles.sort.first, member.roles.sort.first
- if a == b
- if principal
- principal <=> member.principal
- else
- 1
- end
- elsif a
- a <=> b
- else
- 1
- end
- end
-
- def deletable?
- member_roles.detect {|mr| mr.inherited_from}.nil?
- end
-
- def include?(user)
- if principal.is_a?(Group)
- !user.nil? && user.groups.include?(principal)
- else
- self.user == user
- end
- end
-
- def set_issue_category_nil
- if user
- # remove category based auto assignments for this member
- #modify by nwb
- if project
- IssueCategory.update_all "assigned_to_id = NULL", ["project_id = ? AND assigned_to_id = ?", project.id, user.id]
- elsif course
- #IssueCategory.update_all "assigned_to_id = NULL", ["course_id = ? AND assigned_to_id = ?", course.id, user.id]
- end
-
- end
- end
-
- # 删除成员一并删除该成员的邀请信息
- def delete_ivite_list
- member_invite_lists = InviteList.where("user_id =? and project_id =?", self.user_id, self.project_id)
- unless member_invite_lists.nil?
- member_invite_lists.each do |member_invite_list|
- member_invite_list.destroy
- end
- end
- end
-
- # Find or initilize a Member with an id, attributes, and for a Principal
- def self.edit_membership(id, new_attributes, principal=nil)
- @membership = id.present? ? Member.find(id) : Member.new(:principal => principal)
- @membership.attributes = new_attributes
- @membership
- end
-
- # Finds or initilizes a Member for the given project and principal
- def self.find_or_new(project, principal)
- project_id = project.is_a?(Project) ? project.id : project
- principal_id = principal.is_a?(Principal) ? principal.id : principal
-
- member = Member.find_by_project_id_and_user_id(project_id, principal_id)
- member ||= Member.new(:project_id => project_id, :user_id => principal_id)
- member
- end
-
- # 查找每个学生每个作业的评分
- def student_homework_score
- homework_score = StudentWork.find_by_sql("SELECT homework_commons.name,student_works.final_score as score
- FROM student_works,homework_commons
- WHERE student_works.homework_common_id = homework_commons.id
- AND homework_commons.course_id = #{self.course_id}
- AND student_works.user_id = #{self.user_id}")
- score_count = StudentWork.joins(:homework_common).where("student_works.user_id = #{self.user_id} and homework_commons.course_id = #{self.course_id}").average(:final_score).try(:round, 2).to_f
- [homework_score, format("%0.2f", score_count)]
- end
-
- def student_work_score
- StudentWork.select("homework_commons.name, student_works.final_score").joins(:homework_common).where("student_works.user_id = #{self.user_id} and homework_commons.course_id = #{self.course_id}")
- end
-
- #当前课程的作业列表
- def homework_common_list
- HomeworkCommon.where(:course_id => self.course_id)
- end
-
- #当前学生在指定作业内的得分
- def homework_common_score homework_common
- StudentWork.select("IF(final_score is null,null,final_score - absence_penalty - late_penalty) as final_score").where(:homework_common_id => homework_common.id,:user_id => self.user_id)
- end
-
- def student_work_score_avg
- StudentWork.joins(:homework_common).where("student_works.user_id = #{self.user_id} and homework_commons.course_id = #{self.course_id}").average(:final_score).try(:round, 2).to_f
- end
-
- def student_work_score_sum
- sql_select = "SELECT (SUM(IF(student_works.final_score is null,null,student_works.final_score - student_works.absence_penalty - student_works.late_penalty))) as score
- FROM student_works,homework_commons
- WHERE student_works.homework_common_id = homework_commons.id
- AND homework_commons.course_id = #{self.course_id}
- AND student_works.user_id = #{self.user_id}"
- score = StudentWork.find_by_sql(sql_select)
- end
-
- protected
-
- def validate_role
- errors.add_on_empty :role if member_roles.empty? && roles.empty?
- end
-
-
-
- def searchTeacherAndAssistant project
- #searchPeopleByRoles(project, TeacherRoles)
- members = []
- project.members.each do |m|
- members << m if m && m.user && m.user.allowed_to?(:as_teacher,project)
- end
- members
- end
-end
+# 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.
+
+class Member < ActiveRecord::Base
+ belongs_to :user
+ belongs_to :principal, :foreign_key => 'user_id'
+ has_many :member_roles, :dependent => :destroy
+ has_many :roles, :through => :member_roles
+
+ belongs_to :project
+ belongs_to :course
+
+ belongs_to :course_group
+ validates_presence_of :principal
+ validates_uniqueness_of :user_id, :scope => [:project_id,:course_id]
+ validate :validate_role
+
+ before_destroy :set_issue_category_nil
+ # 删除项目成员一并删除该成员的邀请记录
+ after_destroy :delete_ivite_list
+
+
+
+ def role
+ end
+
+ def role=
+ end
+
+ def name
+ self.user.name
+ end
+
+ alias :base_role_ids= :role_ids=
+ def role_ids=(arg)
+ ids = (arg || []).collect(&:to_i) - [0]
+ # Keep inherited roles
+ ids += member_roles.select {|mr| !mr.inherited_from.nil?}.collect(&:role_id)
+
+ new_role_ids = ids - role_ids
+ # Add new roles
+ new_role_ids.each {|id| member_roles << MemberRole.new(:role_id => id) }
+ # Remove roles (Rails' #role_ids= will not trigger MemberRole#on_destroy)
+ member_roles_to_destroy = member_roles.select {|mr| !ids.include?(mr.role_id)}
+ if member_roles_to_destroy.any?
+ member_roles_to_destroy.each(&:destroy)
+ end
+ end
+
+ def <=>(member)
+ a, b = roles.sort.first, member.roles.sort.first
+ if a == b
+ if principal
+ principal <=> member.principal
+ else
+ 1
+ end
+ elsif a
+ a <=> b
+ else
+ 1
+ end
+ end
+
+ def deletable?
+ member_roles.detect {|mr| mr.inherited_from}.nil?
+ end
+
+ def include?(user)
+ if principal.is_a?(Group)
+ !user.nil? && user.groups.include?(principal)
+ else
+ self.user == user
+ end
+ end
+
+ def set_issue_category_nil
+ if user
+ # remove category based auto assignments for this member
+ #modify by nwb
+ if project
+ IssueCategory.update_all "assigned_to_id = NULL", ["project_id = ? AND assigned_to_id = ?", project.id, user.id]
+ elsif course
+ #IssueCategory.update_all "assigned_to_id = NULL", ["course_id = ? AND assigned_to_id = ?", course.id, user.id]
+ end
+
+ end
+ end
+
+ # 删除成员一并删除该成员的邀请信息
+ def delete_ivite_list
+ member_invite_lists = InviteList.where("user_id =? and project_id =?", self.user_id, self.project_id)
+ unless member_invite_lists.nil?
+ member_invite_lists.each do |member_invite_list|
+ member_invite_list.destroy
+ end
+ end
+ end
+
+ # Find or initilize a Member with an id, attributes, and for a Principal
+ def self.edit_membership(id, new_attributes, principal=nil)
+ @membership = id.present? ? Member.find(id) : Member.new(:principal => principal)
+ @membership.attributes = new_attributes
+ @membership
+ end
+
+ # Finds or initilizes a Member for the given project and principal
+ def self.find_or_new(project, principal)
+ project_id = project.is_a?(Project) ? project.id : project
+ principal_id = principal.is_a?(Principal) ? principal.id : principal
+
+ member = Member.find_by_project_id_and_user_id(project_id, principal_id)
+ member ||= Member.new(:project_id => project_id, :user_id => principal_id)
+ member
+ end
+
+ # 查找每个学生每个作业的评分
+ def student_homework_score
+ homework_score = StudentWork.find_by_sql("SELECT homework_commons.name,student_works.final_score as score
+ FROM student_works,homework_commons
+ WHERE student_works.homework_common_id = homework_commons.id
+ AND homework_commons.course_id = #{self.course_id}
+ AND student_works.user_id = #{self.user_id}")
+ score_count = StudentWork.joins(:homework_common).where("student_works.user_id = #{self.user_id} and homework_commons.course_id = #{self.course_id}").average(:final_score).try(:round, 2).to_f
+ [homework_score, format("%0.2f", score_count)]
+ end
+
+ def student_work_score
+ StudentWork.select("homework_commons.name, student_works.final_score").joins(:homework_common).where("student_works.user_id = #{self.user_id} and homework_commons.course_id = #{self.course_id}")
+ end
+
+ #当前课程的作业列表
+ def homework_common_list
+ HomeworkCommon.where(:course_id => self.course_id)
+ end
+
+ #当前学生在指定作业内的得分
+ def homework_common_score homework_common
+ StudentWork.select("IF(final_score is null,null,IF(final_score = 0, 0, final_score - absence_penalty - late_penalty)) as final_score").where(:homework_common_id => homework_common.id,:user_id => self.user_id)
+ end
+
+ def student_work_score_avg
+ StudentWork.joins(:homework_common).where("student_works.user_id = #{self.user_id} and homework_commons.course_id = #{self.course_id}").average(:final_score).try(:round, 2).to_f
+ end
+
+ def student_work_score_sum
+ sql_select = "SELECT (SUM(IF(student_works.final_score IS NULL,NULL,IF(student_works.final_score =0,0,student_works.final_score - student_works.absence_penalty - student_works.late_penalty)))) as score
+ FROM student_works,homework_commons
+ WHERE student_works.homework_common_id = homework_commons.id
+ AND homework_commons.course_id = #{self.course_id}
+ AND student_works.user_id = #{self.user_id}"
+ score = StudentWork.find_by_sql(sql_select)
+ end
+
+ protected
+
+ def validate_role
+ errors.add_on_empty :role if member_roles.empty? && roles.empty?
+ end
+
+
+
+ def searchTeacherAndAssistant project
+ #searchPeopleByRoles(project, TeacherRoles)
+ members = []
+ project.members.each do |m|
+ members << m if m && m.user && m.user.allowed_to?(:as_teacher,project)
+ end
+ members
+ end
+end
diff --git a/app/models/message.rb b/app/models/message.rb
index 44f2d2c80..0ddc6f8e0 100644
--- a/app/models/message.rb
+++ b/app/models/message.rb
@@ -79,7 +79,7 @@ class Message < ActiveRecord::Base
after_create :add_author_as_watcher, :reset_counters!, :add_boards_count
after_update :update_messages_board, :update_activity
- after_destroy :reset_counters!,:down_user_score,:delete_kindeditor_assets, :decrease_boards_count
+ after_destroy :reset_counters!,:down_user_score,:delete_kindeditor_assets, :decrease_boards_count, :down_course_score
after_create :act_as_activity,:act_as_course_activity,:be_user_score,:act_as_forge_activity, :act_as_system_message, :send_mail, :act_as_student_score, :act_as_at_message
#before_save :be_user_score
@@ -354,6 +354,18 @@ class Message < ActiveRecord::Base
end
end
+ # 删除帖子的时候更新课程帖子总数, 删除回复的时候减少总数
+ def down_course_score
+ if self.course
+ if self.parent_id.nil? # 发帖
+ down_course_score_num(self.course.id, self.author_id, "Message")
+ else
+ # 回帖
+ down_course_score_num(self.course.id, self.author_id, "MessageReply")
+ end
+ end
+ end
+
def delete_org_activities
OrgActivity.where("org_act_type='Message' and org_act_id =#{self.id} and container_type='OrgSubfield'").destroy_all
end
diff --git a/app/models/news.rb b/app/models/news.rb
index 028b6d737..6746d90cd 100644
--- a/app/models/news.rb
+++ b/app/models/news.rb
@@ -61,7 +61,7 @@ class News < ActiveRecord::Base
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
+ after_destroy :delete_kindeditor_assets, :decrease_news_count, :delete_org_activities, :down_course_score
scope :visible, lambda {|*args|
includes(:project).where(Project.allowed_to_condition(args.shift || User.current, :view_news, *args))
@@ -195,10 +195,18 @@ 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
+ # 删除新闻统计数减少
+ def down_course_score
+ if self.course
+ down_course_score_num(self.course.id, self.author_id, "News")
+ end
+ end
+
end
\ No newline at end of file
diff --git a/app/models/praise_tread.rb b/app/models/praise_tread.rb
index 3df5c72d9..b1b7e0908 100644
--- a/app/models/praise_tread.rb
+++ b/app/models/praise_tread.rb
@@ -2,8 +2,8 @@ class PraiseTread < ActiveRecord::Base
attr_accessible :user_id,:praise_tread_object_id,:praise_tread_object_type,:praise_or_tread
belongs_to :user
belongs_to :praise_tread_object, polymorphic: true
- after_create :be_user_score
- after_destroy :down_user_score
+ #after_create :be_user_score
+ #after_destroy :down_user_score
include UserScoreHelper
def self.find_object_by_type_and_id(type,id)
@obj = nil
diff --git a/app/views/admin/course_resource_list.html.erb b/app/views/admin/course_resource_list.html.erb
new file mode 100644
index 000000000..2e83a96aa
--- /dev/null
+++ b/app/views/admin/course_resource_list.html.erb
@@ -0,0 +1,66 @@
+
<%=l(:label_course_resource_list)%>
+
+
+
+
+
+
+<% html_title(l(:label_course_resource_list)) -%>
\ No newline at end of file
diff --git a/app/views/admin/excellent_courses.html.erb b/app/views/admin/excellent_courses.html.erb
new file mode 100644
index 000000000..59426455a
--- /dev/null
+++ b/app/views/admin/excellent_courses.html.erb
@@ -0,0 +1,77 @@
+
+ <%=l(:label_excellent_courses_list)%>
+
+
+
+
+<% html_title(l(:label_excellent_courses_list)) -%>
\ 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 05f20ba8d..c1889bce1 100644
--- a/app/views/admin/latest_login_teachers.html.erb
+++ b/app/views/admin/latest_login_teachers.html.erb
@@ -45,6 +45,9 @@
用户身份
+
+ 用户单位
+
@@ -59,7 +62,7 @@
<%=format_time(teacher.last_login_on) %>
- <%=teacher.user_id %>
+ <%= teacher.user_id %>
<%= teacher.login%><% else %><%=teacher.try(:realname) %><% end %>'>
<% if teacher.try(:realname) == ' '%>
@@ -69,11 +72,14 @@
<% end %>
- <%=link_to(teacher.login, user_path(teacher.user_id)) %>
+ <%= link_to(teacher.login, user_path(teacher.user_id)) %>
老师
+
+ <%= teacher.school_id.nil? ? "" : (School.find teacher.school_id).try(:name) %>
+
<% end %>
@@ -82,3 +88,5 @@
+
+<% html_title(l(:label_latest_login_teacher_list)) -%>
\ No newline at end of file
diff --git a/app/views/admin/latest_login_users.html.erb b/app/views/admin/latest_login_users.html.erb
index 17680a8c8..a9e8e2feb 100644
--- a/app/views/admin/latest_login_users.html.erb
+++ b/app/views/admin/latest_login_users.html.erb
@@ -46,6 +46,9 @@
用户身份
+
+ 用户单位
+
@@ -88,6 +91,17 @@
<% end %>
<% end%>
+
+ <% unless user.user_extensions.nil? %>
+ <% if user.user_extensions.identity.to_i == 0 %>
+
+ <% occupation = user.user_extensions.school_id.nil? ? "" : (School.where("id =?", user.user_extensions.school_id)).first.try(:name) %>
+ <%= occupation.blank? ? user.user_extensions.occupation : occupation %>
+ <% else %>
+ <%= user.user_extensions.occupation %>
+ <% end %>
+ <% end %>
+
<% end %>
diff --git a/app/views/admin/organization.html.erb b/app/views/admin/organization.html.erb
index 582b8b44a..02b897f80 100644
--- a/app/views/admin/organization.html.erb
+++ b/app/views/admin/organization.html.erb
@@ -40,4 +40,8 @@
-<% html_title(l(:label_project_plural)) -%>
+
+ <%= pagination_links_full @organization_pages, @organization_count ,:per_page_links => true, :remote => false, :flag => true %>
+
+
+
diff --git a/app/views/admin/project_resource_list.html.erb b/app/views/admin/project_resource_list.html.erb
new file mode 100644
index 000000000..8e8bd8c92
--- /dev/null
+++ b/app/views/admin/project_resource_list.html.erb
@@ -0,0 +1,66 @@
+<%=l(:label_project_resource_list)%>
+
+
+
+
+
+
+<% html_title(l(:label_project_resource_list)) -%>
\ No newline at end of file
diff --git a/app/views/admin/schools.html.erb b/app/views/admin/schools.html.erb
index d19e9b3b9..f52d1f060 100644
--- a/app/views/admin/schools.html.erb
+++ b/app/views/admin/schools.html.erb
@@ -1,43 +1,64 @@
<%=l(:label_school_plural)%>
-<%= form_tag({:controller => 'admin', :action => 'schools' }, :method => :get,:id=>"search_course_form") do %>
- <%= submit_tag "搜索",:style => "float: right;margin-right: 15px;"%>
-
-<% end %>
+
+
+
+