课程列表中没有?<%= link_to '创建课程', new_syllabus_path(),:target => '_blank', :class => 'color-blue' %>
+diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml
index e9ec192f0..934f79cf7 100644
--- a/.idea/dataSources.xml
+++ b/.idea/dataSources.xml
@@ -28,25 +28,25 @@
').gsub(/\t/, ' ') unless error_position.try(:out_put).blank?
render :json => {test_sets: total_test_sets,
@@ -253,6 +253,27 @@ class GamesController < ApplicationController
render :json => {status: @game.status, output: "服务器网络异常", results: outputs, had_done: 0}
end
+ # 获取等待的任务数
+ # 如果没有等待任务页面上将不显示
+ # msg: -1 不存在等待的任务
+ # 如果该方法异常则直接返回0,跳过等待
+ def waiting_info
+ begin
+ jenkins_shixuns = Redmine::Configuration['jenkins_shixuns']
+ params = {:buildID => "#{@game.id}"}
+ uri = URI("#{jenkins_shixuns}/jenkins-exec/api/getWaitingTime")
+ res = uri_exec uri, params
+ if (res && res['code'] != 0)
+ raise("获取等待任务数异常")
+ end
+ task_count = res['msg'].to_i
+ task_count > 0 ? task_count : 0
+ render :json => {task_count: task_count}
+ rescue
+ render :json => {task_count: 0}
+ end
+ end
+
# 自动推送下一个任务
def next_step
render_403 if @game.status != 2
diff --git a/app/controllers/homework_bank_controller.rb b/app/controllers/homework_bank_controller.rb
new file mode 100644
index 000000000..208def604
--- /dev/null
+++ b/app/controllers/homework_bank_controller.rb
@@ -0,0 +1,233 @@
+class HomeworkBankController < ApplicationController
+ before_filter :require_login, :only => [:index, :show, :new, :create, :edit, :update, :destroy, :destroy_all, :choose_user_course, :send_h_bank_to_course]
+ before_filter :find_homework_bank, :only => [:show, :edit, :update, :destroy]
+
+ def index
+ @order,@b_sort = params[:order] || "updated_at",params[:sort] || "desc"
+ @user = User.current
+ @r_sort = @b_sort == "desc" ? "asc" : "desc"
+ @search = params[:search]
+ if(params[:type].blank? || params[:type] == "1") #我的题库
+ @homeworks = @user.homework_banks.where("name like ?", "%#{@search}%")
+ elsif params[:type] == "2" #公共题库
+ @homeworks = HomeworkBank.where(:is_public => true).where("name like ?", "%#{@search}%")
+ end
+ if params[:property]
+ @property = params[:property].to_i
+ @homeworks = @homeworks.where(:homework_type => params[:property].to_i)
+ end
+ @homeworks = @homeworks.reorder("#{@order} #{@b_sort}")
+ @type = params[:type] ? params[:type] : '1'
+ @limit = 15
+ @is_remote = true
+ @hw_count = @homeworks.count
+ @hw_pages = Paginator.new @hw_count, @limit, params['page'] || 1
+ @offset ||= @hw_pages.offset
+ @homeworks = paginateHelper @homeworks,15
+ respond_to do |format|
+ format.js
+ format.html {render :layout => 'base_edu'}
+ end
+ end
+
+ def show
+ @is_admin = User.current == @homework.user || User.current.admin?
+ respond_to do |format|
+ format.html {render :layout => 'base_edu'}
+ end
+ end
+
+ def new
+ @homework_type = params[:homework_type].to_i
+ @homework = HomeworkBank.new
+ respond_to do |format|
+ format.html{render :layout => 'base_edu'}
+ end
+ end
+
+ # 新建实训作业
+ def shixuns
+ search = params[:search]
+ @homework = HomeworkBank.new
+ @shixuns = Shixun.where(:authentication => 1).where("name like ?", "%#{search}%")
+ @shixuns_count = @shixuns.count
+ @limit = 10
+ @is_remote = true
+ @shixun_pages = Paginator.new @shixuns_count, @limit, params['page'] || 1
+ @offset ||= @shixun_pages.offset
+ @shixuns = paginateHelper @shixuns, @limit
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def create
+ if params[:homework_bank] || params[:shixun_homework]
+ homework = HomeworkBank.new
+ if params[:shixun_homework]
+ shixun = Shixun.find(params[:shixun_homework])
+ homework.name = shixun.name
+ homework.description = shixun.description
+ else
+ homework.name = params[:homework_bank][:name]
+ homework.description = params[:homework_bank][:description]
+ homework.reference_answer = params[:homework_bank][:reference_answer]
+ homework.save_attachments(params[:attachments])
+ render_attachment_warning_if_needed(homework)
+ end
+ homework.is_public = 0
+ homework.quotes = 0
+ homework.homework_type = params[:shixun_homework] ? 4 : (params[:homework_type].to_i || 1)
+ homework.user_id = User.current.id
+ homework.syllabus_id = params[:syllabus_id] if params[:syllabus_id] && params[:syllabus_id] != '0'
+
+ #编程作业相关属性
+ if homework.homework_type == 2
+ homework.language = params[:language_type].to_i
+
+ sample_inputs = params[:sample][:input]
+ if Array === sample_inputs
+ sample_inputs.each_with_index do |val, i|
+ homework.homework_bank_samples << HomeworkBankSample.new(
+ input: val,
+ output: params[:sample][:output][i]
+ )
+ end
+ end
+
+ inputs = params[:program][:input]
+ if Array === inputs
+ inputs.each_with_index do |val, i|
+ homework.homework_bank_tests << HomeworkBankTest.new(
+ input: val,
+ output: params[:program][:output][i]
+ )
+ end
+ end
+ end
+
+ #分组作业
+ if homework.homework_type == 3
+ homework.min_num = params[:min_num].to_i
+ homework.max_num = params[:max_num].to_i
+ end
+
+ if homework.save
+ if homework.homework_type == 4
+ HomeworkBankShixun.create(:homework_bank_id => homework.id, :shixun_id => shixun.id)
+ end
+ redirect_to homework_bank_path(homework)
+ end
+ end
+ end
+
+ def edit
+ @homework_type = @homework.homework_type
+ respond_to do |format|
+ format.html{render :layout => 'base_edu'}
+ end
+ end
+
+ def update
+ if params[:homework_bank]
+ @homework.name = params[:homework_bank][:name]
+ @homework.description = params[:homework_bank][:description]
+ @homework.reference_answer = params[:homework_bank][:reference_answer]
+ @homework.syllabus_id = params[:syllabus_id] ? (params[:syllabus_id] == '0' ? nil : params[:syllabus_id].to_i) : nil
+ @homework.save_attachments(params[:attachments])
+ render_attachment_warning_if_needed(@homework)
+
+ #编程作业相关属性
+ if @homework.homework_type == 2
+ @homework.language = params[:language_type].to_i if params[:language_type]
+
+ @homework.homework_bank_samples.delete_all if params[:sample]
+ sample_inputs = params[:sample][:input] if params[:sample]
+ if Array === sample_inputs
+ sample_inputs.each_with_index do |val, i|
+ @homework.homework_bank_samples << HomeworkBankSample.new(
+ input: val,
+ output: params[:sample][:output][i]
+ )
+ end
+ end
+
+ @homework.homework_bank_tests.delete_all if params[:program]
+ inputs = params[:program][:input] if params[:program]
+ if Array === inputs
+ inputs.each_with_index do |val, i|
+ @homework.homework_bank_tests << HomeworkBankTest.new(
+ input: val,
+ output: params[:program][:output][i]
+ )
+ end
+ end
+ end
+
+ #分组作业
+ if @homework.homework_type == 3
+ @homework.min_num = params[:min_num].to_i if params[:min_num]
+ @homework.max_num = params[:max_num].to_i if params[:max_num]
+ end
+
+ if @homework.save
+ redirect_to homework_bank_path(@homework)
+ end
+ end
+ end
+
+ def destroy
+ @homework.homework_commons.update_all(:homework_bank_id => nil)
+ @homework.destroy
+ redirect_to homework_bank_index_path()
+ end
+
+ def destroy_all
+ if params[:check_homework_bank] && !params[:check_homework_bank].blank?
+ params[:check_homework_bank].each do |hb_id|
+ homework = HomeworkBank.find hb_id
+ if homework && homework.user == User.current
+ HomeworkCommon.where(:homework_bank_id => homework.id).update_all(:homework_bank_id => nil)
+ homework.destroy
+ end
+ end
+ end
+ redirect_to homework_bank_index_path
+ end
+
+ def choose_user_course
+ if !params[:search].nil?
+ search = "%#{params[:search].to_s.strip.downcase}%"
+ @courses = User.current.courses.where("is_delete = 0 and is_end = 0 and (#{Course.table_name}.id = #{params[:search].to_i } or #{Course.table_name}.name like :p)",:p=>search).select{ |course| User.current.has_teacher_role(course)}
+ else
+ @courses = User.current.courses.where("is_delete = 0 and is_end = 0").select{ |course| User.current.has_teacher_role(course)}
+ end
+ @homework_ids = params[:check_homework_bank] if params[:check_homework_bank]
+ @search = params[:search]
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def send_h_bank_to_course
+ course = Course.find params[:course_id]
+ if course
+ params[:homework_id].each do |homework_id|
+ homework = HomeworkBank.find homework_id
+ quote_homework_bank homework, course
+ end
+ end
+ end
+
+ def set_public
+ @homework.update_attributes(:is_public => true)
+ redirect_to homework_bank_index_path()
+ end
+
+ private
+ def find_homework_bank
+ @homework = HomeworkBank.find params[:id]
+ rescue ActiveRecord::RecordNotFound
+ render_404
+ end
+end
diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb
index b0e6995ec..9c0b2bebe 100644
--- a/app/controllers/homework_common_controller.rb
+++ b/app/controllers/homework_common_controller.rb
@@ -41,18 +41,12 @@ class HomeworkCommonController < ApplicationController
case @order
when '1'
@homework_commons = @homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status = #{@order} and end_time > '#{Time.now}'").order("homework_commons.created_at desc")
- when '2'
- @homework_commons = @homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status = #{@order} and late_time > '#{Time.now}'").order("homework_commons.created_at desc")
when '3'
- @homework_commons = @homework_commons.includes(:homework_detail_manual).where("(homework_detail_manuals.comment_status = #{@order} and homework_detail_manuals.evaluation_end > '#{Time.now}')
- or (homework_detail_manuals.comment_status = 1 and end_time < '#{Time.now}' and allow_late = 0 and anonymous_comment = 0 and homework_detail_manuals.evaluation_start >= '#{Time.now}')
- or (homework_detail_manuals.comment_status = 2 and late_time < '#{Time.now}' and anonymous_comment = 0 and homework_detail_manuals.evaluation_start >= '#{Time.now}')").order("homework_commons.created_at desc")
+ @homework_commons = @homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status = #{@order} and homework_detail_manuals.evaluation_end > '#{Time.now}'").order("homework_commons.created_at desc")
when '4'
@homework_commons = @homework_commons.includes(:homework_detail_manual).where("(homework_detail_manuals.comment_status = #{@order} and homework_detail_manuals.appeal_time > '#{Time.now}')").order("homework_commons.created_at desc")
when '5'
- @homework_commons = @homework_commons.includes(:homework_detail_manual).where("(homework_detail_manuals.comment_status = #{@order} and archive_time > '#{Time.now}')
- or (homework_detail_manuals.comment_status = 1 and end_time < '#{Time.now}' and (anonymous_comment = 1 or (anonymous_comment = 0 and homework_detail_manuals.evaluation_start < '#{Time.now}')) and archive_time >= '#{Time.now}')
- or (homework_detail_manuals.comment_status = 2 and late_time < '#{Time.now}' and (anonymous_comment = 1 or (anonymous_comment = 0 and homework_detail_manuals.evaluation_start < '#{Time.now}')) and archive_time >= '#{Time.now}')").order("homework_commons.created_at desc")
+ @homework_commons = @homework_commons.includes(:homework_detail_manual).where("(homework_detail_manuals.comment_status = #{@order} and archive_time > '#{Time.now}')").order("homework_commons.created_at desc")
else
@homework_commons = @homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status = #{@order}").order("homework_commons.created_at desc")
end
@@ -60,7 +54,7 @@ class HomeworkCommonController < ApplicationController
@is_student = User.current.logged? && (User.current.admin? || (User.current.member_of_course?(@course) && !@is_teacher))
@is_new = params[:is_new]
- @homeworks = paginateHelper @homework_commons,10
+ @homeworks = paginateHelper @homework_commons,15
#设置at已读
ids = @homeworks.inject([]) do |ids, homework|
jids = homework.journals_for_messages.map(&:id)
@@ -184,6 +178,8 @@ class HomeworkCommonController < ApplicationController
if homework.homework_type != 4 && homework_detail_manual.comment_status == 1
create_works_list homework
+ elsif homework.homework_type == 4
+ HomeworkCommonsShixuns.create(:homework_common_id => homework.id, :shixun_id => shixun.id)
end
if params[:quotes] && !params[:quotes].blank?
@@ -214,7 +210,7 @@ class HomeworkCommonController < ApplicationController
def publish_setting
@homework.publish_time = params[:homework_publish_time] if params[:homework_publish_time]
@homework.end_time = params[:homework_end_time] if params[:homework_end_time]
- @homework.archive_time = params[:homework_archive_time] if params[:homework_end_time]
+ @homework.archive_time = params[:homework_archive_time] if params[:homework_archive_time]
@homework.save
@is_teacher = User.current.logged? && (User.current.admin? || User.current.allowed_to?(:as_teacher,@course))
respond_to do |format|
@@ -225,11 +221,11 @@ class HomeworkCommonController < ApplicationController
def late_setting
if params[:homework_allow_late] == '1'
@homework.allow_late = true
- @homework.late_time = params[:homework_late_time]
+ #@homework.late_time = params[:homework_late_time]
@homework.late_penalty = params[:homework_late_penalty].to_i
else
@homework.allow_late = false
- @homework.late_time = nil
+ #@homework.late_time = nil
@homework.late_penalty = 0
end
@homework.save
@@ -238,32 +234,62 @@ class HomeworkCommonController < ApplicationController
def anon_setting
anonymous_comment = @homework.anonymous_comment
- if params[:homework_anonymous_comment]
- @homework.anonymous_comment = 0
- @homework_detail_manual.evaluation_start = params[:homework_evaluation_start]
- @homework_detail_manual.evaluation_end = params[:homework_evaluation_end]
- @homework_detail_manual.evaluation_num = params[:homework_evaluation_num]
- @homework_detail_manual.absence_penalty = params[:homework_absence_penalty]
+ absence_penalty = @homework_detail_manual.absence_penalty
+ appeal_penalty = @homework_detail_manual.appeal_penalty
+ if @homework_detail_manual.comment_status < 3
+ if params[:homework_anonymous_comment]
+ @homework.anonymous_comment = 0
+ @homework_detail_manual.evaluation_start = params[:homework_evaluation_start] if params[:homework_evaluation_start]
+ @homework_detail_manual.evaluation_end = params[:homework_evaluation_end] if params[:homework_evaluation_end]
+ @homework_detail_manual.evaluation_num = params[:homework_evaluation_num] if params[:homework_evaluation_num]
+ @homework_detail_manual.absence_penalty = params[:homework_absence_penalty] if params[:homework_absence_penalty]
+ else
+ @homework.anonymous_comment = 1
+ @homework_detail_manual.evaluation_start = nil
+ @homework_detail_manual.evaluation_end = nil
+ @homework_detail_manual.evaluation_num = 0
+ @homework_detail_manual.absence_penalty = 0
+ end
else
- @homework.anonymous_comment = 1
- @homework_detail_manual.evaluation_start = nil
- @homework_detail_manual.evaluation_end = nil
- @homework_detail_manual.evaluation_num = 0
- @homework_detail_manual.absence_penalty = 0
+ @homework_detail_manual.evaluation_end = params[:homework_evaluation_end] if params[:homework_evaluation_end]
+ @homework_detail_manual.evaluation_num = params[:homework_evaluation_num] if params[:homework_evaluation_num]
+ @homework_detail_manual.absence_penalty = params[:homework_absence_penalty] if params[:homework_absence_penalty]
end
if anonymous_comment != @homework.anonymous_comment
@homework_detail_manual.te_proportion = 1
@homework_detail_manual.ta_proportion = 0
- @homework_detail_program.te_proportion = 0 if @homework_detail_program
+ @homework_detail_programing.ta_proportion = 0 if @homework_detail_programing
end
- if params[:homework_anonymous_appeal]
- @homework.anonymous_appeal = 1
- @homework_detail_manual.appeal_time = params[:homework_appeal_time]
- @homework_detail_manual.appeal_penalty = params[:homework_appeal_penalty]
+ if @homework_detail_manual.comment_status < 4
+ if params[:homework_anonymous_appeal]
+ @homework.anonymous_appeal = 1
+ @homework_detail_manual.appeal_time = params[:homework_appeal_time] if params[:homework_appeal_time]
+ @homework_detail_manual.appeal_penalty = params[:homework_appeal_penalty] if params[:homework_appeal_penalty]
+ else
+ @homework.anonymous_appeal = 0
+ @homework_detail_manual.appeal_time = nil
+ @homework_detail_manual.appeal_penalty = 0
+ end
else
- @homework.anonymous_appeal = 0
- @homework_detail_manual.appeal_time = nil
- @homework_detail_manual.appeal_penalty = 0
+ @homework_detail_manual.appeal_time = params[:homework_appeal_time] if params[:homework_appeal_time]
+ @homework_detail_manual.appeal_penalty = params[:homework_appeal_penalty] if params[:homework_appeal_penalty]
+ end
+ if absence_penalty != @homework_detail_manual.absence_penalty && @homework_detail_manual.comment_status >= 4
+ all_dis_eva = StudentWorksEvaluationDistribution.where(:student_work_id => @homework.student_works.map(&:id))
+ has_sw_count = all_dis_eva.select("distinct user_id").count
+ anon_count = all_dis_eva.count / has_sw_count
+ @homework.student_works.where("work_status != 0").each do |student_work|
+ absence_penalty_count = student_work.user.student_works_evaluation_distributions.where(:student_work_id => @homework.student_works.map(&:id)).count - student_work.user.student_works_scores.where(:student_work_id => @homework.student_works.map(&:id), :reviewer_role => 3).count
+ student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0
+ student_work.save
+ end
+ end
+ if appeal_penalty != @homework_detail_manual.appeal_penalty && @homework_detail_manual.comment_status >= 4
+ @homework.student_works.each do |student_work|
+ appeal_penalty_count = student_work.user.student_works_scores.where(:student_work_id => @homework.student_works.map(&:id), :appeal_status => 3).count
+ student_work.appeal_penalty = appeal_penalty_count > 0 ? appeal_penalty_count * @homework_detail_manual.absence_penalty : 0
+ student_work.save
+ end
end
@homework.save
@homework_detail_manual.save
@@ -356,7 +382,7 @@ class HomeworkCommonController < ApplicationController
def update
if params[:homework_common]
- is_update = @homework.name != params[:homework_common][:name] || @homework.description != params[:homework_common][:description]
+ is_update = @homework.name != params[:homework_common][:name] || @homework.description != params[:homework_common][:description] || @homework.reference_answer != params[:homework_common][:reference_answer]
if params[:homework_type].to_i == 2
is_update = is_update || params[:language_type] != @homework.homework_detail_programing.language
if !is_update && params[:sample] && params[:program]
@@ -478,24 +504,25 @@ class HomeworkCommonController < ApplicationController
end
homework_bank = add_to_homework_bank_f @homework
homework_bank.save
+ if @homework.homework_type == 4
+ HomeworkBankShixun.create(:homework_bank_id => homework_bank.id, :shixun_id => @homework.homework_commons_shixuns.shixun_id)
+ end
@homework.update_attributes(:homework_bank_id => homework_bank.id)
elsif params[:type].to_i == 2
homework_bank = HomeworkBank.where(:id => @homework.homework_bank_id).first
if homework_bank
- homework_bank.update_attributes(:name => @homework.name, :description => @homework.description, :homework_type => @homework.homework_type)
+ homework_bank.update_attributes(:name => @homework.name, :description => @homework.description, :homework_type => @homework.homework_type, :reference_answer => @homework.reference_answer)
if @homework.homework_type == 2 && @homework.homework_detail_programing
homework_bank.update_attributes(:language => @homework.homework_detail_programing.language)
homework_bank.homework_bank_tests.destroy_all
@homework.homework_tests.each_with_index do |homework_test|
homework_bank.homework_bank_tests << HomeworkBankTest.new(
- test_type: 1,
input: homework_test.input,
output: homework_test.output
)
end
@homework.homework_samples.each_with_index do |homework_test|
- homework_bank.homework_bank_tests << HomeworkBankTest.new(
- test_type: 0,
+ homework_bank.homework_bank_samples << HomeworkBankSample.new(
input: homework_test.input,
output: homework_test.output
)
diff --git a/app/controllers/managements_controller.rb b/app/controllers/managements_controller.rb
new file mode 100644
index 000000000..4bac95052
--- /dev/null
+++ b/app/controllers/managements_controller.rb
@@ -0,0 +1,112 @@
+class ManagementsController < ApplicationController
+ before_filter :require_admin
+ layout 'base_management'
+ include ManagementsHelper
+ include SortHelper
+ include UsersHelper
+
+ def users
+ @menu_type = 6
+ 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 => 50})
+ else
+ @limit = 50 #per_page_option
+ end
+
+ @status = params[:status] || 1
+ scope = User.logged.status(@status)
+ scope = User.like(params[:name]) if params[:name].present?
+ scope = scope.in_group(params[:group_id]) if params[:group_id].present?
+
+ @user_count = scope.count
+ @user_pages = Paginator.new @user_count, @limit, params['page']
+ @offset ||= @user_pages.offset
+ @users = scope.order(sort_clause).limit(@limit).offset(@offset).all
+ respond_to do |format|
+ format.html {
+ @groups = Group.all.sort
+ }
+ format.api
+ end
+ end
+
+ def users_trial
+ @menu_type = 6
+ @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => 0).includes(:user)
+ end
+
+ def trial_authorization
+ @menu_type = 9
+ search = params[:search]
+ @status = trial_authorization_status(params[:status])
+ # @status = (params[:status].blank? || params[:status] == "0") ? 0 : [1,2]
+ if search.blank?
+ @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => @status).includes(:user)
+ else
+ user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{search}%'")
+ @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => @status, :user_id => user_id).includes(:user)
+ end
+ end
+
+ # params[:type] 1:拒绝 0:同意
+ # authentication 会有一个初始值,不同的值代表不同的权限
+ # REDO: 后面权限改了后,一并要改
+ def trial_authorization_operation
+ apply_action = ApplyAction.find(params[:apply_id])
+ type = params[:type]
+ search = params[:search]
+ if type == "0"
+ authentication_user = AuthenticationsUsers.where(:user_id => apply_action.user_id).first
+ if authentication_user.blank?
+ AuthenticationsUsers.create(:user_id => apply_action.user_id, :authentication_id => 1)
+ end
+ end
+ apply_action.update_attributes(:status => (params[:type] == "1" ? 2 : 1), :reason => params[:reject_reason], :dealer_id => User.current.id)
+ user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{search}%'")
+ @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => 0, :user_id => user_id).includes(:user)
+ respond_to do |format|
+ format.js
+ end
+ end
+
+ def index
+
+ end
+
+ # copy from admin
+ def identity_authentication
+ @menu_type = 9
+ type = params[:type] || 0 # 存在type 就用type 没有就为 0
+ user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{params[:name]}%'")
+ @unapproved_user = ApplyUserAuthentication.where(:status => type, :user_id => user_id).order("updated_at desc")
+ respond_to do |format|
+ format.html
+ format.js
+ end
+ end
+
+ # 拒绝身份认证
+ # copy from admin
+ def reject_authentication
+ apply_user = ApplyUserAuthentication.find(params[:apply_id])
+ reason = apply_user.update_attributes(:status => 2, :remarks => params[:reject_reason])
+ render :json => {success: reason}
+ end
+
+ # 统一身份认证
+ # copy from admin
+ def agree_authentication
+ apply_user = ApplyUserAuthentication.find(params[:apply_id])
+ user = User.find(apply_user.user_id)
+ apply_user.update_attribute(:status, 1)
+ user.update_attribute(:authentication, true)
+ @unapproved_user = ApplyUserAuthentication.where(:status => 0).order("updated_at desc")
+ respond_to do |format|
+ format.js
+ end
+ end
+end
diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb
index fe71494ad..b07fca70f 100644
--- a/app/controllers/my_controller.rb
+++ b/app/controllers/my_controller.rb
@@ -147,21 +147,35 @@ class MyController < ApplicationController
end
@user = User.current
- # 基本资料不完善 @force为false, 完善 @force为true
- @force = false
- if params[:tip]
- @force = true
+ # 认证
+ ue = @user.user_extensions
+ @trail_authentication = ApplyAction.where(:user_id => User.current.id).first
+ @authentication = @user.authentication
+ if ue.identity.nil?
+ @require_auth = true
else
- user = UserExtensions.where(:user_id => User.current.id).first
- if user.gender.nil? || user.school_id.nil? || User.current.lastname.nil?
- @force = true
- elsif user.identity == 3 && user.school_id.nil?
- @force = true
+ if @trail_authentication.blank?
+ @require_trail_auth = true
end
end
-
- # 用户认证
- @auth = @user.authentication ? false : true
+ # @require_auth = true
+ #
+ # # 基本资料不完善 @force为false, 完善 @force为true
+ # @force = false
+ # # @authentication = @user.authentication
+ # @trail_authentication = AuthenticationsUsers.where(:user_id => User.current.id).first
+ # if params[:tip]
+ # @force = true
+ # else
+ # user = UserExtensions.where(:user_id => User.current.id).first
+ # if user.identity.nil? || user.school_id.nil? || User.current.lastname.nil?
+ # @force = false
+ # else
+ # @force = @trail_authentication.blank? ? false : true
+ # end
+ # end
+ # # 用户认证
+ # @auth = @user.authentication ? false : true
@s_message = AppliedMessage.where(:status => 3, :user_id => User.current.id, :viewed => 0, :applied_type => 'ApplyAddSchools').first
@d_message = AppliedMessage.where(:status => 3, :user_id => User.current.id, :viewed => 0, :applied_type => 'ApplyAddDepartment').first
@@ -217,6 +231,7 @@ class MyController < ApplicationController
@se.brief_introduction = params[:brief_introduction]
if @user.save && @se.save
+
reward_grade(@user, @user.id, 'Account', 500)
# 修改邮箱的时候同步修改到gitlab
# if changed_mail || changed_login
diff --git a/app/controllers/myshixuns_controller.rb b/app/controllers/myshixuns_controller.rb
index d76494716..19fbd8fe0 100644
--- a/app/controllers/myshixuns_controller.rb
+++ b/app/controllers/myshixuns_controller.rb
@@ -3,6 +3,7 @@ class MyshixunsController < ApplicationController
layout 'base_myshixun'
skip_before_filter :verify_authenticity_token, :only => [:training_task_status]
before_filter :require_login, :except => [:training_task_status]
+ before_filter :check_authentication, :except => [:training_task_status]
before_filter :find_myshixun, :only => [:show, :myshixun_reset]
include ApplicationHelper
@@ -77,7 +78,10 @@ class MyshixunsController < ApplicationController
if !resubmit.blank?
game.update_attributes(:retry_status => 2, :resubmit_identifier => resubmit)
else
- game.update_attributes(:status => 2, :final_score => challenge.score, :end_time => Time.now)
+ game.update_attributes(:status => 2, :end_time => Time.now)
+ unless game.answer_open? # 如果没有查看答案,则获得该关卡得分
+ game.update_attribute(:final_score, challenge.score)
+ end
end
else
if !resubmit.blank?
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index ff3f1c7d1..ea64d0397 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -929,10 +929,10 @@ class ProjectsController < ApplicationController
end
end
- def uri_exec uri, params
- res = Net::HTTP.post_form(uri, params).body
- res = JSON.parse(res)
- end
+ # def uri_exec uri, params
+ # # res = Net::HTTP.post_form(uri, params).body
+ # # res = JSON.parse(res)
+ # end
# 开启实训项目,学生会fork一个项目并自动发送任务
def training_project_extend
diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb
index 505e73699..8fc561502 100644
--- a/app/controllers/shixuns_controller.rb
+++ b/app/controllers/shixuns_controller.rb
@@ -3,6 +3,7 @@
class ShixunsController < ApplicationController
layout 'base_shixun'
before_filter :require_login
+ before_filter :check_authentication
before_filter :find_shixun, :except => [ :index, :new, :create, :index, :search ]
before_filter :shixun_view_allow, :only => [:show]
before_filter :require_manager, :only => [ :settings, :add_script, :publish, :collaborators_delete, :shixun_members_added, :add_collaborators]
diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb
index 070107633..1a1af7166 100644
--- a/app/controllers/student_work_controller.rb
+++ b/app/controllers/student_work_controller.rb
@@ -363,12 +363,13 @@ class StudentWorkController < ApplicationController
@homework_commons = @course.homework_commons.where("publish_time <= ?",Time.now).order("created_at desc")
@all_homework_commons = @course.homework_commons.order("created_at desc")
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
- @is_evaluation = @homework.homework_detail_manual && @homework.homework_detail_manual.comment_status == 3 && !@is_teacher #是不是匿评
+ @is_evaluation = @homework.homework_detail_manual && (@homework.homework_detail_manual.comment_status == 3 || @homework.homework_detail_manual.comment_status == 4) && !@is_teacher #是不是匿评
@show_all = false
# 0表示没有分组的学生,-1表示所有分组的学生
if @group
- group_students = Member.where(:course_group_id => @group)
+ group_students = @course.members.where(:course_group_id => @group).joins("join users on members.user_id = users.id").select{|m| m.roles.to_s.include?("Student")}
+
if group_students.empty?
student_in_group = '(-1)'
else
@@ -503,6 +504,7 @@ class StudentWorkController < ApplicationController
@is_focus = params[:is_focus] ? params[:is_focus].to_i : 0
# 消息传过来的ID
@message_student_work_id = params[:student_work_id]
+ @no_group_count = @course.members.where(:course_group_id => 0).select{|m| m.roles.to_s.include?("Student")}.count
@left_nav_type = 3
@tab = params[:tab].to_i
respond_to do |format|
@@ -559,7 +561,7 @@ class StudentWorkController < ApplicationController
student_work.homework_common_id = @homework.id
student_work.user_id = User.current.id
student_work.commit_time = Time.now
- student_work.late_reason = params[:late_reason] if params[:late_reason]
+ #student_work.late_reason = params[:late_reason] if params[:late_reason]
student_work.group_id = @homework.student_works.all_commit.select("distinct group_id").count + 1
student_work.save_attachments(params[:attachments])
render_attachment_warning_if_needed(student_work)
@@ -711,9 +713,10 @@ class StudentWorkController < ApplicationController
appeal_message.update_all(:viewed => true)
end
+ @is_focus = params[:is_focus] if params[:is_focus]
@score = student_work_score @work,User.current
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
- if @homework.homework_detail_manual.comment_status == 2 && !@is_teacher && @work.user != User.current
+ if (@homework.homework_detail_manual.comment_status == 3 || @homework.homework_detail_manual.comment_status == 4) && !@is_teacher && @work.user != User.current
@student_work_scores = @work.student_works_scores.where("user_id = #{User.current.id} and reviewer_role = 3").order("updated_at desc")
else
@student_work_scores = student_work_score_record(@work)
@@ -875,7 +878,10 @@ class StudentWorkController < ApplicationController
@is_last = params[:is_last] == "true"
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
#老师、教辅可以随时评分,学生只能在匿评作业的匿评阶段进行评分
- render_403 and return unless @is_teacher || @homework.homework_detail_manual.comment_status == 2
+ unless @is_teacher || @homework.homework_detail_manual.comment_status == 3
+ render_403
+ return
+ end
@score = student_work_score @work,User.current
#@score.comment = params[:new_form][:user_message] if params[:new_form] && params[:new_form][:user_message] && params[:new_form][:user_message] != ""
#@score.score = params[:score] if params[:score]
@@ -967,8 +973,12 @@ class StudentWorkController < ApplicationController
update_org_activity(@homework.class,@homework.id)
if @work.save
@work = @homework.student_works.select("student_works.*,student_works.work_score as score").where(:id => @work.id).first
- @count = @homework.student_works.has_committed.count
- @student_work_scores = student_work_score_record @work
+ if @homework.homework_detail_manual.comment_status == 3 && !@is_teacher && @work.user != User.current
+ @student_work_scores = @work.student_works_scores.where("user_id = #{User.current.id} and reviewer_role = 3").order("updated_at desc")
+ else
+ @student_work_scores = student_work_score_record(@work)
+ end
+ @count = @student_work_scores.count
respond_to do |format|
format.js
end
@@ -1360,10 +1370,7 @@ class StudentWorkController < ApplicationController
CourseMessage.create(:user_id => student_work.homework_common.user_id, :course_id => student_work.homework_common.course_id, :viewed => false,:course_message_id=>attachment.container_id,:course_message_type=>'StudentWork',:status=>2)
end
@work.update_attributes(:re_commit => 1)
- respond_to do |format|
- format.js
- end
- @homework = @work.homework_common
+ redirect_to student_work_path(@work)
end
def new_student_work_project
diff --git a/app/controllers/syllabuses_controller.rb b/app/controllers/syllabuses_controller.rb
index 7451a893c..23ad61f92 100644
--- a/app/controllers/syllabuses_controller.rb
+++ b/app/controllers/syllabuses_controller.rb
@@ -7,6 +7,7 @@ class SyllabusesController < ApplicationController
include SyllabusesHelper
include UsersHelper
before_filter :is_logged, :only => [:index, :show, :edit, :new, :update, :destroy, :delete_syllabus, :syllabus_resources, :syllabus_homeworks]
+ before_filter :check_authentication
before_filter :find_syllabus, :only => [:show, :edit, :update, :destroy, :syllabus_courselist, :edit_syllabus_eng_name, :edit_syllabus_title, :update_base_info, :delete_syllabus,
:delete_des, :members, :update_des, :edit_ref, :update_ref, :add_sy_member_alert, :search_not_sy_member, :syllabus_resources, :syllabus_homeworks,
:send_homeworks_to_course, :choose_user_course, :send_resources_to_course, :send_r_and_h_to_course]
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 54dd8c081..dc9b11aee 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -35,6 +35,8 @@ class UsersController < ApplicationController
#
before_filter :can_show_course, :only => [:user_courses,:user_homeworks]
+ before_filter :check_authentication
+
before_filter :find_user, :only => [:user_fanslist, :user_watchlist, :show, :edit, :update, :destroy, :edit_membership, :user_courses, :unsolved_issues_list, :unfinished_homework_list, :user_manage_homeworks,
:unfinished_poll_list, :user_homeworks,:student_homeworks, :destroy_membership, :user_activities, :user_projects, :user_newfeedback, :user_comments, :update_message_viewed,
:anonymous_evaluation_list,:unfinished_test_list, :watch_contests, :info, :watch_projects, :show_score, :topic_score_index, :project_score_index, :user_receive_homeworks,
@@ -43,7 +45,7 @@ class UsersController < ApplicationController
:user_courses4show,:user_projects4show,:user_contests4show,:user_course_activities,:user_project_activities,:user_feedback4show,:user_visitorlist,:user_messages,:edit_brief_introduction,
:user_import_homeworks,:user_search_homeworks,:user_import_resource, :user_system_messages,:choose_user_course,:user_courselist,:user_projectlist,:sort_syllabus_list,
:sort_project_list,:my_homeworks,:manage_or_receive_homeworks,:search_m_r_homeworks, :cancel_or_collect,:expand_courses,:homepage, :user_issues, :course_community, :project_community, :contest_community,
- :user_shixuns]
+ :shixuns]
before_filter :auth_user_extension, only: :show
before_filter :show_system_message, :only => [:show]
#before_filter :rest_user_score, only: :show
@@ -654,10 +656,30 @@ class UsersController < ApplicationController
end
# 我发布的实训
- def shixuns_zone
- @shixuns = Shixun.where(:user_id => User.current)
+ def shixuns
+ type = params[:type]
+ # 我发布的
+ @shixuns = Shixun.where(:user_id => @user.id)
+ @shixuns_count = @shixuns.count
+ @limit = 10
+ @shixun_pages = Paginator.new @shixuns_count, @limit, params['page'] || 1
+ @offset ||= @shixun_pages.offset
+ @shixuns = paginateHelper @shixuns, @limit
+
+ # 我参入的
+ ids = Shixun.find_by_sql("select id from shixun_members where role=2 and user_id=#{@user.id}")
+ ids2 = Shixun.find_by_sql("select id from shixuns where id in (select shixun_id from myshixuns where user_id = #{@user.id})")
+ ids = ids.map{|shixun| shixun.id} unless ids.blank?
+ ids2 = ids2.map{|shixun| shixun.id} unless ids2.blank?
+ id = ids + ids2
+ id = id.uniq
+ @join_shixuns = Shixun.where(:id => id)
+ # @join_shixuns_count = @join_shixuns.count
+ # @join_shixuns_pages = Paginator.new @join_shixuns_count, @limit, params['page'] || 1
+ # @join_shixuns_offset ||= @join_shixuns_pages.offset
+ # @join_shixuns = paginateHelper @join_shixuns, @limit
respond_to do |format|
- format.html{render :layout=>'base_users_new'}
+ format.html{render :layout=> 'base_edu'}
end
end
@@ -721,11 +743,8 @@ class UsersController < ApplicationController
c = Course.find(@msg.course_id)
cs.send_wechat_join_class_notice apply_user,c,7,1
end
-
- end
- respond_to do |format|
- format.js
end
+ redirect_to settings_course_path(@msg.course_id, :tab => 'member')
end
# 处理资源引用请求
@@ -1710,7 +1729,7 @@ class UsersController < ApplicationController
# end
# end
@state = false
- render :layout=>'new_base_user'
+ render :layout => 'edu_new_base_user'
end
#给某人留言
@@ -2107,15 +2126,24 @@ class UsersController < ApplicationController
fan_query = @user.watcher_users;
@user_fanlist_count = fan_query.count();
@user_fanlist = fan_query.order("#{Watcher.table_name}.id desc").limit(12);
- @courses = @user.courses.visible.not_deleted
+ @courses = @user.courses.visible.not_deleted_not_end
@courses_count = @courses.count
- @courses = @courses.select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS updatetime").order("updatetime desc").limit(8)
+ @courses = @courses.select("courses.*,(SELECT MAX(updated_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS updatetime").order("updatetime desc")
+ @limit = 8
+ @is_remote = true
+ @courses_pages = Paginator.new @courses_count, @limit, params['page'] || 1
+ @offset ||= @courses_pages.offset
+ @courses = paginateHelper @courses, @limit
+
if @user == User.current
@shixuns = @user.shixuns
else
@shixuns = @user.shixuns.where(:authentication => 1)
end
@shixuns_count = @shixuns.count
+ @shixuns_pages = Paginator.new @shixuns_count, @limit, params['page'] || 1
+ @offset ||= @shixuns_pages.offset
+ @shixuns = paginateHelper @shixuns, @limit
# if User.current == @user
# # 点击小铃铛,更新点击时间
# update_onclick_time if params[:click_user_message] == 'true'
diff --git a/app/helpers/api_helper.rb b/app/helpers/api_helper.rb
index b5c8ce236..119c3c920 100644
--- a/app/helpers/api_helper.rb
+++ b/app/helpers/api_helper.rb
@@ -234,7 +234,14 @@ module ApiHelper
updateAtValue = timeIntoFormat.to_s + "年"
end
updateAtValue
+ end
+ # 计算到结束还有多长时间 **天**小时**分
+ def how_much_time time
+ result = ""
+ result = ((time - Time.now.to_i).to_i / (24*60*60)).to_s + " 天 "
+ result += (((time - Time.now.to_i).to_i % (24*60*60)) / (60*60)).to_s + " 小时 "
+ result += ((((time - Time.now.to_i).to_i % (24*60*60)) % (60*60)) / 60).to_s + " 分 "
end
#日期转换为时间
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 117962aca..e499a01ea 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -33,6 +33,21 @@ module ApplicationHelper
extend Forwardable
def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter
+ # 判断用户是否认证
+ def check_authentication
+ # return true
+ # if params[:action] == "on_search" || params[:action] == "apply_trail" # 之所以这样处理是为了避开account页面ajax加载
+ # return true
+ # end
+ authentication = ApplyAction.where(:user_id => User.current.id, :status => 1).first
+ user_identity = User.current.try(:user_extensions).try(:identity)
+ if user_identity.blank? || authentication.blank?
+ redirect_to my_account_path
+ return
+ end
+ end
+
+
# 积分表中建立记录行为,有过奖励则不重复奖励
def reward_grade(user, container_id, container_type, score)
grade = Grade.where(:user_id => user.id, :container_id => container_id, :container_type => container_type).first
@@ -253,7 +268,7 @@ module ApplicationHelper
res = JSON.parse(res)
rescue => e
logger.error("failed to create challenge by 'generatePipelineScriptForChallenge'! #{e}")
- raise("实训云平台繁忙(繁忙等级:84")
+ raise("实训云平台繁忙(繁忙等级:84)")
end
end
@@ -306,6 +321,10 @@ module ApplicationHelper
style = 'edu-filter-btn-green'
when '已结束'
style = 'edu-filter-btn'
+ when '已开启补交'
+ style = 'edu-filter-btn-late'
+ when '未开启补交'
+ style = 'edu-filter-btn-no-late'
end
end
@@ -337,51 +356,34 @@ module ApplicationHelper
case ho_detail_manual.comment_status
when 0
status = "挂起"
- if homework_common.publish_time && homework_common.publish_time > Time.now
- time = time_from_future(homework_common.publish_time).to_s + "后发布"
- end
when 1
- status = "提交中"
if homework_common.end_time && homework_common.end_time >= Time.now
- time = time_from_future(homework_common.end_time).to_s + "后结束"
- elsif homework_common.anonymous_comment == 0 && ho_detail_manual.evaluation_start && ho_detail_manual.evaluation_start >= Time.now
- status = "匿评中"
- time = time_from_future(ho_detail_manual.evaluation_start).to_s + "后开始"
- elsif homework_common.archive_time && homework_common.archive_time >= Time.now
- status = "评阅中"
- time = time_from_future(homework_common.archive_time).to_s + "后结束"
- end
- when 2
- status = "补交中"
- if homework_common.late_time && homework_common.late_time >= Time.now
- time = time_from_future(homework_common.late_time).to_s + "后结束"
- elsif homework_common.anonymous_comment == 0 && ho_detail_manual.evaluation_start && ho_detail_manual.evaluation_start >= Time.now
- status = "匿评中"
- time = time_from_future(ho_detail_manual.evaluation_start).to_s + "后开始"
- elsif homework_common.archive_time && homework_common.archive_time >= Time.now
- status = "评阅中"
- time = time_from_future(homework_common.archive_time).to_s + "后结束"
+ status = "提交中"
+ time = how_much_time(homework_common.end_time)
end
when 3
- status = "匿评中"
if ho_detail_manual.evaluation_end && ho_detail_manual.evaluation_end > Time.now
- time = time_from_future(ho_detail_manual.evaluation_end).to_s + "后结束"
+ status = "匿评中"
+ time = how_much_time(ho_detail_manual.evaluation_end)
end
when 4
- status = "申诉中"
if ho_detail_manual.appeal_time && ho_detail_manual.appeal_time > Time.now
- time = time_from_future(ho_detail_manual.appeal_time).to_s + "后结束"
+ status = "申诉中"
+ time = how_much_time(ho_detail_manual.appeal_time)
end
when 5
- status = "评阅中"
if homework_common.archive_time && homework_common.archive_time > Time.now
- time = time_from_future(homework_common.archive_time).to_s + "后结束"
+ status = "评阅中"
+ time = how_much_time(homework_common.archive_time)
end
when 6
status = "已结束"
time = format_time homework_common.archive_time
end
end
+ if status == "" && homework_common.allow_late && homework_common.archive_time > Time.now
+ time = how_much_time homework_common.archive_time
+ end
result[:status] = status
result[:time] = time
result
@@ -1773,6 +1775,8 @@ module ApplicationHelper
title << "酷得网 - 互联网教学实训平台"
elsif @course
title << (@course.name.nil? ? "智能课堂" : @course.name)
+ elsif params[:controller] == "homework_bank"
+ title << ("智能课堂")
elsif params[:controller] == "courses" && params[:action] == "index"
title << ("智能课堂")
elsif @contest
@@ -2806,6 +2810,20 @@ module ApplicationHelper
end
end
+ def identity_authentication_status user_id
+ apply = ApplyUserAuthentication.where(:user_id => user_id).first
+ case apply.try(:status)
+ when nil
+ "未认证"
+ when 0
+ "等待认证审批"
+ when 1
+ "认证已通过"
+ when 2
+ "认证被拒绝"
+ end
+ end
+
def date_format_local(time)
date = time.strftime("%Y年%m月%d日")
end
@@ -3554,10 +3572,10 @@ module ApplicationHelper
if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1
link_to "提交作品(#{count})","javascript:void(0)", :class => 'c_grey homepagePostSubmit',:style=>"cursor:not-allowed",:title => '请先关联项目再提交作品'
else
- link_to "提交作品(#{count})", new_student_work_url_without_domain(homework.id),:class => 'c_blue'
+ link_to "提交作品(#{count})", new_student_work_url_without_domain(homework.id),:class => 'c_blue homepagePostSubmit'
end
elsif work.nil? && homework.end_time < Time.now
- if homework.allow_late
+ if homework.allow_late && homework.homework_detail_manual.comment_status < 6
if homework.homework_type ==3 && project.nil? && homework.homework_detail_group.base_on_project == 1
link_to "补交作品(#{count})","javascript:void(0)", :class => 'c_grey homepagePostSubmit',:style=>"cursor:not-allowed",:title => '请先关联项目再补交作品'
else
@@ -4553,19 +4571,18 @@ end
def add_to_homework_bank_f homework
homework_bank = HomeworkBank.new(:name => homework.name, :description => homework.description, :user_id => homework.user_id, :homework_type => homework.homework_type,
- :quotes => 1, :is_public => homework.course.is_public, :applicable_syllabus => homework.course.syllabus.title, :homework_common_id => homework.id)
+ :quotes => 1, :is_public => homework.course.is_public, :applicable_syllabus => homework.course.syllabus.title, :homework_common_id => homework.id,
+ :reference_answer => homework.reference_answer, :syllabus_id => homework.course.syllabus_id)
if homework.homework_type == 2 && homework.homework_detail_programing
homework_bank.language = homework.homework_detail_programing.language
homework.homework_tests.each_with_index do |homework_test|
homework_bank.homework_bank_tests << HomeworkBankTest.new(
- test_type: 1,
input: homework_test.input,
output: homework_test.output
)
end
homework.homework_samples.each_with_index do |homework_test|
- homework_bank.homework_bank_tests << HomeworkBankTest.new(
- test_type: 0,
+ homework_bank.homework_bank_samples << HomeworkBankSample.new(
input: homework_test.input,
output: homework_test.output
)
@@ -4848,3 +4865,75 @@ def set_final_score homework,student_work
end
end
+
+def quote_resource_bank resource, course
+ atta = Attachment.new(:filename => resource.filename, :disk_filename => resource.disk_filename, :filesize => resource.filesize, :digest => resource.digest, :downloads => 0, :is_publish => 0,
+ :author_id => User.current.id, :description => resource.description, :disk_directory => resource.disk_directory, :is_public => 0, :copy_from => resource.copy_from.nil? ? resource.id : resource.copy_from,
+ :quotes => 0, :resource_bank_id => resource.id, :created_on => Time.now, :content_type =>resource.content_type)
+ if course.attachments << atta
+ # 更新引用次数
+ quotes = resource.quotes.to_i + 1
+ resource.update_attribute(:quotes, quotes)
+ end
+end
+
+def quote_homework_bank homework, course
+ new_homework = HomeworkCommon.new(:name => homework.name, :user_id => User.current.id, :description => homework.description, :homework_type => homework.homework_type, :late_penalty => 0,
+ :course_id => course.id, :teacher_priority => 1, :anonymous_comment => 1, :quotes => 0, :is_open => 0, :homework_bank_id => homework.id, :score_open => 1,
+ :anonymous_appeal => 0, :is_public => 0, :reference_answer => homework.reference_answer, :answer_public => 1, :allow_late => 1)
+
+ new_homework.homework_detail_manual = HomeworkDetailManual.new
+ new_homework_detail_manual = new_homework.homework_detail_manual
+ new_homework_detail_manual.te_proportion = 1.0
+ new_homework_detail_manual.ta_proportion = 0
+ new_homework_detail_manual.comment_status = 0
+
+ new_homework_detail_manual.evaluation_num = 0
+ new_homework_detail_manual.absence_penalty = 0
+
+ if new_homework.homework_type == 2
+ new_homework.homework_detail_programing = HomeworkDetailPrograming.new
+ new_homework.homework_detail_programing.ta_proportion = 0
+ new_homework.homework_detail_programing.language = homework.language
+ homework.homework_bank_tests.each_with_index do |homework_test|
+ new_homework.homework_tests << HomeworkTest.new(
+ input: homework_test.input,
+ output: homework_test.output
+ )
+ end
+ homework.homework_bank_samples.each_with_index do |homework_test|
+ new_homework.homework_samples << HomeworkSample.new(
+ input: homework_test.input,
+ output: homework_test.output
+ )
+ end
+ end
+
+ if new_homework.homework_type == 3
+ new_homework.homework_detail_group = HomeworkDetailGroup.new
+ new_homework.homework_detail_group.min_num = homework.min_num
+ new_homework.homework_detail_group.max_num = homework.max_num
+ new_homework.homework_detail_group.base_on_project = homework.base_on_project
+ end
+
+ homework.attachments.each do |attachment|
+ att = attachment.copy
+ att.container_id = nil
+ att.container_type = nil
+ att.author_id = homework.user_id
+ att.copy_from = attachment.id
+ att.save
+ new_homework.attachments << att
+ end
+
+ if new_homework.save
+ if new_homework.homework_type == 4
+ HomeworkCommonsShixuns.create(:homework_common_id => new_homework.id, :shixun_id => homework.homework_bank_shixun.shixun_id)
+ end
+ new_homework_detail_manual.save if new_homework_detail_manual
+ new_homework.homework_detail_programing.save if new_homework.homework_detail_programing
+ new_homework.homework_detail_group.save if new_homework.homework_detail_group
+ homework.update_column(:quotes, homework.quotes+1)
+ end
+end
+
diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb
index 1e9adaf37..9d9415e0e 100644
--- a/app/helpers/courses_helper.rb
+++ b/app/helpers/courses_helper.rb
@@ -90,7 +90,7 @@ module CoursesHelper
#生成课程学生列表连接
def course_student_link student_num
if User.current.allowed_to?(:as_teacher, @course)
- link_to "#{student_num}", settings_course_path(@course, :tab => 'member', :role => 'as'), :class => 'mr5 link-color-blue', :id => 'teacher_number'
+ link_to "#{student_num}", settings_course_path(@course, :tab => 'member', :role => 'as'), :class => 'mr5 link-color-blue', :id => 'student_number'
elsif (User.current.logged? && @course.open_student == 1) || (User.current.member_of_course?(@course))
link_to "#{student_num}", course_member_path(@course, :role => 'as'), :class => 'mr5 link-color-blue', :id => "student_number"
else
@@ -101,9 +101,9 @@ module CoursesHelper
# 生成分班列表连接
def course_group_link group_num
if User.current.allowed_to?(:as_teacher, @course)
- link_to "#{group_num}", settings_course_path(@course, :tab => 'member', :role => @course.course_groups.first.id), :class => 'mr5 link-color-blue', :id => 'teacher_number'
+ link_to "#{group_num}", settings_course_path(@course, :tab => 'member', :role => @course.course_groups.first.id), :class => 'mr5 link-color-blue', :id => 'group_number'
elsif (User.current.logged? && @course.open_student == 1) || (User.current.member_of_course?(@course))
- link_to "#{group_num}", course_member_path(@course, :role => @course.course_groups.first.id), :class => 'sy_cblue', :id => "student_number"
+ link_to "#{group_num}", course_member_path(@course, :role => @course.course_groups.first.id), :class => 'mr5 link-color-blue', :id => "group_number"
else
content_tag 'span',group_num, :class => 'sy_cblue'
end
diff --git a/app/helpers/homework_bank_helper.rb b/app/helpers/homework_bank_helper.rb
new file mode 100644
index 000000000..fbb669ff3
--- /dev/null
+++ b/app/helpers/homework_bank_helper.rb
@@ -0,0 +1,2 @@
+module HomeworkBankHelper
+end
diff --git a/app/helpers/management_helper.rb b/app/helpers/management_helper.rb
new file mode 100644
index 000000000..d07e930fe
--- /dev/null
+++ b/app/helpers/management_helper.rb
@@ -0,0 +1,2 @@
+module ManagementHelper
+end
diff --git a/app/helpers/managements_helper.rb b/app/helpers/managements_helper.rb
new file mode 100644
index 000000000..6c97b5512
--- /dev/null
+++ b/app/helpers/managements_helper.rb
@@ -0,0 +1,15 @@
+module ManagementsHelper
+
+ def trial_authorization_status status
+ case status
+ when "0", nil
+ 0
+ when "1"
+ 1
+ when "2"
+ 2
+ else
+ [1,2]
+ end
+ end
+end
diff --git a/app/helpers/owner_type_helper.rb b/app/helpers/owner_type_helper.rb
index 56512afcf..9124a4f98 100644
--- a/app/helpers/owner_type_helper.rb
+++ b/app/helpers/owner_type_helper.rb
@@ -14,4 +14,5 @@ module OwnerTypeHelper
CONTEST = 13
HOMEWORKREFERENCEANSWER = 14
STUDENTWORK = 15
+ HOMEWORKBANK = 16
end
\ No newline at end of file
diff --git a/app/helpers/student_work_helper.rb b/app/helpers/student_work_helper.rb
index 61b4ff8cd..0416e72b7 100644
--- a/app/helpers/student_work_helper.rb
+++ b/app/helpers/student_work_helper.rb
@@ -100,7 +100,7 @@ module StudentWorkHelper
if work.nil? && homework.end_time >= Time.now
link_to "提交作品", new_student_work_url_without_domain(homework.id),:class => 'task-btn task-btn-blue fr'
elsif work.nil? && homework.end_time < Time.now
- if homework.allow_late
+ if homework.allow_late && homework.homework_detail_manual.comment_status < 6
link_to "补交作品", new_student_work_url_without_domain(homework.id),:class => 'task-btn task-btn-blue fr'
end
elsif work
diff --git a/app/helpers/syllabuses_helper.rb b/app/helpers/syllabuses_helper.rb
index 70f865ef5..3cf56b047 100644
--- a/app/helpers/syllabuses_helper.rb
+++ b/app/helpers/syllabuses_helper.rb
@@ -131,60 +131,4 @@ module SyllabusesHelper
content
end
- def quote_resource_bank resource, course
- atta = Attachment.new(:filename => resource.filename, :disk_filename => resource.disk_filename, :filesize => resource.filesize, :digest => resource.digest, :downloads => 0, :is_publish => 0,
- :author_id => User.current.id, :description => resource.description, :disk_directory => resource.disk_directory, :is_public => 0, :copy_from => resource.copy_from.nil? ? resource.id : resource.copy_from,
- :quotes => 0, :resource_bank_id => resource.id, :created_on => Time.now, :content_type =>resource.content_type)
- if course.attachments << atta
- # 更新引用次数
- quotes = resource.quotes.to_i + 1
- resource.update_attribute(:quotes, quotes)
- end
- end
-
- def quote_homework_bank homework, course
- new_homework = HomeworkCommon.new(:name => homework.name, :user_id => User.current.id, :description => homework.description, :homework_type => homework.homework_type, :late_penalty => 0,
- :course_id => course.id, :teacher_priority => 1, :anonymous_comment => 1, :quotes => 0, :is_open => 0,
- :homework_bank_id => homework.id, :score_open => 1, :anonymous_appeal => 0)
-
- new_homework.homework_detail_manual = HomeworkDetailManual.new
- new_homework_detail_manual = new_homework.homework_detail_manual
- new_homework_detail_manual.ta_proportion = new_homework.homework_type == 2 ? 0.4 : 1.0
- new_homework_detail_manual.comment_status = 0
- new_homework_detail_manual.evaluation_num = 3
- new_homework_detail_manual.absence_penalty = 0
-
- if new_homework.homework_type == 2
- new_homework.homework_detail_programing = HomeworkDetailPrograming.new
- new_homework.homework_detail_programing.ta_proportion = 0.6
- new_homework.homework_detail_programing.language = homework.language
- homework.homework_bank_tests.each_with_index do |homework_test|
- if homework_test.test_type
- new_homework.homework_tests << HomeworkTest.new(
- input: homework_test.input,
- output: homework_test.output
- )
- else
- new_homework.homework_samples << HomeworkSample.new(
- input: homework_test.input,
- output: homework_test.output
- )
- end
- end
- end
-
- if new_homework.homework_type == 3
- new_homework.homework_detail_group = HomeworkDetailGroup.new
- new_homework.homework_detail_group.min_num = homework.min_num
- new_homework.homework_detail_group.max_num = homework.max_num
- new_homework.homework_detail_group.base_on_project = homework.base_on_project
- end
-
- if new_homework.save
- new_homework_detail_manual.save if new_homework_detail_manual
- new_homework.homework_detail_programing.save if new_homework.homework_detail_programing
- new_homework.homework_detail_group.save if new_homework.homework_detail_group
- homework.update_column(:quotes, homework.quotes+1)
- end
- end
end
diff --git a/app/models/apply_action.rb b/app/models/apply_action.rb
new file mode 100644
index 000000000..a940ada38
--- /dev/null
+++ b/app/models/apply_action.rb
@@ -0,0 +1,6 @@
+# status:0 审核中 1 同意 2 拒绝
+class ApplyAction < ActiveRecord::Base
+ attr_accessible :container_id, :container_type, :dealer_id, :reason, :user_id, :status
+
+ belongs_to :user
+end
diff --git a/app/models/course.rb b/app/models/course.rb
index f2172f419..96e7f2606 100644
--- a/app/models/course.rb
+++ b/app/models/course.rb
@@ -109,7 +109,7 @@ class Course < ActiveRecord::Base
acts_as_customizable
scope :not_deleted, lambda{where(is_delete: 0)}
- scope :not_deleted_not_end, lambda{where(is_delete: 0, is_end: 1)}
+ scope :not_deleted_not_end, lambda{where(is_delete: 0, is_end: 0)}
scope :not_deleted_but_is_end, lambda{where(is_end: 1, is_delete: 0)}
scope :all_course
scope :active, lambda { where(:status => STATUS_ACTIVE) }
diff --git a/app/models/homework_bank.rb b/app/models/homework_bank.rb
index 0f89c74d9..6cd699bbd 100644
--- a/app/models/homework_bank.rb
+++ b/app/models/homework_bank.rb
@@ -2,7 +2,11 @@
class HomeworkBank < ActiveRecord::Base
# attr_accessible :title, :body
belongs_to :user
- has_many :homework_bank_tests
+ belongs_to :syllabus
+ has_many :homework_bank_tests, :dependent => :destroy
+ has_many :homework_bank_samples, :dependent => :destroy
+ has_many :homework_commons
+ has_one :homework_bank_shixun
acts_as_attachable
def language_name
diff --git a/app/models/homework_bank_sample.rb b/app/models/homework_bank_sample.rb
new file mode 100644
index 000000000..7b64f93a9
--- /dev/null
+++ b/app/models/homework_bank_sample.rb
@@ -0,0 +1,4 @@
+class HomeworkBankSample < ActiveRecord::Base
+ belongs_to :homework_bank
+ attr_accessible :input, :output, :homework_bank_id
+end
diff --git a/app/models/homework_bank_shixun.rb b/app/models/homework_bank_shixun.rb
new file mode 100644
index 000000000..3bec23fcd
--- /dev/null
+++ b/app/models/homework_bank_shixun.rb
@@ -0,0 +1,5 @@
+class HomeworkBankShixun < ActiveRecord::Base
+ belongs_to :homework_bank
+ belongs_to :shixun
+ attr_accessible :homework_bank_id, :shixun_id
+end
diff --git a/app/models/shixun.rb b/app/models/shixun.rb
index ab18f7410..cbc995895 100644
--- a/app/models/shixun.rb
+++ b/app/models/shixun.rb
@@ -1,6 +1,7 @@
# status 控制实训的状态,0:未开启;1: 已开启(TPM); 2:已认证
-# 繁忙等级参数:80发布实训失败,返回code为-1;81:实训开启的时候fork失败;83:job创建失败;84:jenkins系统异常,post数据不成功
+# 繁忙等级参数:80发布实训失败,返回code为-1;81:实训开启的时候fork失败;83:j ;84:jenkins系统异常,post数据不成功
# 85:challenge创建的时候Jenkins处理异常;86:实训评测失败,jenkins返回错误结果; 87:版本库删除异常;88:点击评测失败,没返回数据;89:重置链接jenkins返回失败
+# 116:challenge创建关卡的时候返回结果错误
class Shixun < ActiveRecord::Base
attr_accessible :description, :is_public, :name, :changeset_num, :status, :user_id, :gpid, :language, :identifier, :authentication, :myshixun_count, :propaedeutics
diff --git a/app/models/syllabus.rb b/app/models/syllabus.rb
index 80d24ba5a..42af92576 100644
--- a/app/models/syllabus.rb
+++ b/app/models/syllabus.rb
@@ -20,6 +20,7 @@ class Syllabus < ActiveRecord::Base
belongs_to :user
has_many :courses
+ has_many :homework_banks
has_many :reference_materials, :dependent => :destroy
has_many :syllabus_update_records, :dependent => :destroy
has_many :journals_for_messages, :as => :jour, :dependent => :destroy
diff --git a/app/models/user.rb b/app/models/user.rb
index 8b0361a2a..676e57835 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -200,6 +200,9 @@ class User < Principal
#####
has_many :shares ,:dependent => :destroy
+ ###
+ has_many :apply_actions, :dependent => :destroy
+
has_one :user_wechat
has_one :sso
diff --git a/app/views/account/_has_authentication.html.erb b/app/views/account/_has_authentication.html.erb
index 4244df0c5..f42f6ca6b 100644
--- a/app/views/account/_has_authentication.html.erb
+++ b/app/views/account/_has_authentication.html.erb
@@ -5,7 +5,7 @@
已认证
<% end %>
-<% if !@user.authentication && @apply_user_auth && @apply_user_auth.status == 0 %>
+<% if false %>
<%= render :partial => "welcome/one_btn_mask_pop",
:locals => {
:tip1 => "更多功能,需要经过管理员的授权审核",
diff --git a/app/views/account/apply_trail.js.erb b/app/views/account/apply_trail.js.erb
new file mode 100644
index 000000000..0b921b7c3
--- /dev/null
+++ b/app/views/account/apply_trail.js.erb
@@ -0,0 +1 @@
+$("body").append('<%= j( render :partial => 'welcome/one_btn_mask_pop', :locals => {:btn => "确定", :tip1 => "申请成功,我们将在一个工作日内完成审核", :url => "javascript:void(0);"}) %>');
\ No newline at end of file
diff --git a/app/views/account/avatar.html.erb b/app/views/account/avatar.html.erb
index b159f1122..c4cc39be3 100644
--- a/app/views/account/avatar.html.erb
+++ b/app/views/account/avatar.html.erb
@@ -141,11 +141,10 @@
if (o.status !=0 ){
console.log(o.message);
} else {
- long_notice_box("上传成功");
- window.location.reload();
+ notice_box_redirect('<%= avatar_account_path() %>' ,"上传成功");
}
} else {
- long_notice_box("上传出错");
+ notice_box("上传出错");
}
},
diff --git a/app/views/account/lost_password.html.erb b/app/views/account/lost_password.html.erb
index d94f41c44..308d150f9 100644
--- a/app/views/account/lost_password.html.erb
+++ b/app/views/account/lost_password.html.erb
@@ -3,8 +3,8 @@
<%= link_to '首页', home_path %> - | - <%= link_to "帮助中心", "#{Setting.protocol}://#{Setting.host_name}/forums/1/memos/1168" %> + + <%#= link_to "帮助中心", "#{Setting.protocol}://#{Setting.host_name}/forums/1/memos/1168" %>