From 5508cedb452416077ffd294604faa85edf692419 Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 28 Jun 2017 15:23:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/homework_common_controller.rb | 2 +- app/controllers/managements_controller.rb | 1 + app/controllers/student_work_controller.rb | 51 ++++++++++++++++-- app/helpers/application_helper.rb | 4 +- app/helpers/student_work_helper.rb | 43 +++++++++------ app/models/myshixun.rb | 29 +++++++++++ app/models/shixun.rb | 8 +++ app/models/student_work.rb | 1 + .../_homework_index_list.html.erb | 6 +-- .../add_to_homework_bank.js.erb | 2 +- .../_evaluation_un_common_work.html.erb | 10 ++-- .../_evaluation_un_group_work.html.erb | 10 ++-- .../_evaluation_un_pro_work.html.erb | 8 +-- .../_evaluation_un_shixun_title.html.erb | 3 +- .../_evaluation_un_shixun_work.html.erb | 17 +++++- .../student_work/_shixun_work_show.html.erb | 52 +++++++++++++++++++ app/views/student_work/index.html.erb | 12 +++-- app/views/student_work/relate_myshixun.js.erb | 7 +++ app/views/student_work/show.js.erb | 39 +------------- app/views/users/_homework_base_info.html.erb | 6 +-- .../users/_my_homepage_shixuns_list.html.erb | 2 +- app/views/users/_myjoin_shixun_list.html.erb | 2 +- config/routes.rb | 1 + ...2071931_add_attachment_to_course_module.rb | 5 -- ...523011829_change_news_for_course_module.rb | 8 --- .../20170526062330_del_course_modules.rb | 8 --- ...0627073830_add_myshixun_to_student_work.rb | 5 ++ public/javascripts/edu/course.js | 12 ++++- public/stylesheets/css/edu-class.css | 1 + 29 files changed, 246 insertions(+), 109 deletions(-) create mode 100644 app/views/student_work/_shixun_work_show.html.erb create mode 100644 app/views/student_work/relate_myshixun.js.erb delete mode 100644 db/migrate/20170522071931_add_attachment_to_course_module.rb delete mode 100644 db/migrate/20170523011829_change_news_for_course_module.rb delete mode 100644 db/migrate/20170526062330_del_course_modules.rb create mode 100644 db/migrate/20170627073830_add_myshixun_to_student_work.rb diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb index 88b39a1b0..6e5fa6700 100644 --- a/app/controllers/homework_common_controller.rb +++ b/app/controllers/homework_common_controller.rb @@ -92,7 +92,7 @@ class HomeworkCommonController < ApplicationController @homework = HomeworkCommon.new @shixuns = Shixun.where(:status => 2).where("name like ?", "%#{search}%") @shixuns_count = @shixuns.count - @limit = 2 + @limit = 8 @is_remote = true @shixun_pages = Paginator.new @shixuns_count, @limit, params['page'] || 1 @offset ||= @shixun_pages.offset diff --git a/app/controllers/managements_controller.rb b/app/controllers/managements_controller.rb index 315ea10e6..6e3a97144 100644 --- a/app/controllers/managements_controller.rb +++ b/app/controllers/managements_controller.rb @@ -244,6 +244,7 @@ class ManagementsController < ApplicationController else shixun.update_column('status', 2) apply_action.update_attributes(:status => 1, :dealer_id => User.current.id) + shixun_modify_status_without_publish shixun, 1 end @authorizations = ApplyAction.where(:container_type => "ApplyShixun", :status => 0) respond_to do |format| diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index a2f8b7597..ba6370a99 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -7,7 +7,7 @@ class StudentWorkController < ApplicationController require "base64" before_filter :find_homework, :only => [:new, :index, :create, :student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :program_test,:program_test_ex, :set_score_rule,:forbidden_anonymous_comment,:delete_work,:new_student_work_project,:student_work_project,:cancel_relate_project, - :search_course_students,:work_canrepeat,:add_group_member,:change_project] + :search_course_students,:work_canrepeat,:add_group_member,:change_project,:relate_myshixun] before_filter :find_work, :only => [:edit, :update, :show, :destroy, :add_score, :praise_student_work, :retry_work, :revise_attachment, :hide_score_detail, :destroy_score] before_filter :member_of_course, :only => [:new, :create, :show, :add_score, :praise_student_work] before_filter :author_of_work, :only => [:edit, :update, :destroy] @@ -563,7 +563,7 @@ class StudentWorkController < ApplicationController 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.group_id = @homework.student_works.all_commit.select("distinct group_id").count + 1 + student_work.group_id = @homework.homework_type == 3 ? @homework.student_works.all_commit.select("distinct group_id").count + 1 : 0 student_work.save_attachments(params[:attachments]) render_attachment_warning_if_needed(student_work) if @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 1 @@ -728,10 +728,13 @@ class StudentWorkController < ApplicationController ids = ids - [User.current.id] end @team_work = User.where(:id => ids) + elsif @homework.homework_type == 4 + @shixun = @homework.homework_commons_shixuns.shixun + @myshixun = Myshixun.find @work.myshixun_id end respond_to do |format| - format.html{render :layout => 'base_edu'} format.js + format.html{render :layout => 'base_edu'} end end @@ -874,6 +877,48 @@ class StudentWorkController < ApplicationController end end + def relate_myshixun + myshixun = Myshixun.where(:shixun_id => @homework.homework_commons_shixuns.shixun_id, :user_id => User.current.id).first + if myshixun + work = @homework.student_works.where(:user_id => User.current.id).first + work = work || StudentWork.new(:homework_common_id => @homework.id, :user_id => User.current.id, :work_status => 0) + if work.work_status == 0 + work.myshixun_id = myshixun.id + work.commit_time = Time.now + if @homework.end_time < Time.now + work.late_penalty = @homework.late_penalty + work.work_status = 2 + + #更新CourseHomeworkStatistics中学生的迟交作品数 + course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, User.current.id) + course_statistics.update_attribute('late_commit_work_num', course_statistics.late_commit_work_num + 1) if course_statistics + else + work.late_penalty = 0 + work.work_status = 1 + end + if work.save + #更新CourseHomeworkStatistics中学生的未交作品数、已交作品数 + course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, User.current.id) + course_statistics.update_attribute('committed_work_num', course_statistics.committed_work_num + 1) if course_statistics + course_statistics.update_attribute('un_commit_work_num', (course_statistics.un_commit_work_num - 1) < 0 ? 0 : (course_statistics.un_commit_work_num - 1)) if course_statistics + + @homework.update_column(: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) + + course_message = CourseMessage.new(:user_id =>User.current.id,:content=>"new",:course_message_id=>work.id,:course_id => @course.id,:course_message_type=>"StudentWork", :status => 9) #作品提交记录 + course_message.save + @status = 1 + end + else + @status = 2 + end + else + @status = 0 + end + end + #添加评分,已评分则为修改评分 def add_score @is_last = params[:is_last] == "true" diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 1b72455ff..cf8e10aad 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -181,8 +181,8 @@ module ApplicationHelper end # 已通过的关卡数 - def had_passed_changllenge_count shixun - myshixun = Myshixun.where(:shixun_id => shixun.id, :user_id => User.current.id).first + def had_passed_changllenge_count shixun, user + myshixun = Myshixun.where(:shixun_id => shixun.id, :user_id => user.id).first if myshixun.nil? 0 else diff --git a/app/helpers/student_work_helper.rb b/app/helpers/student_work_helper.rb index 0416e72b7..b15a76b6f 100644 --- a/app/helpers/student_work_helper.rb +++ b/app/helpers/student_work_helper.rb @@ -98,29 +98,42 @@ module StudentWorkHelper work = cur_user_works_for_homework homework project = cur_user_projects_for_homework homework 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' + if homework.homework_type == 4 + link_to "关联实训", relate_myshixun_student_work_index_path(:homework => homework.id),:class => 'task-btn task-btn-blue fr',:remote => true + else + link_to "提交作品", new_student_work_url_without_domain(homework.id),:class => 'task-btn task-btn-blue fr' + end elsif work.nil? && homework.end_time < Time.now 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' + if homework.homework_type == 4 + link_to "关联实训", relate_myshixun_student_work_index_path(:homework => homework.id),:class => 'task-btn task-btn-blue fr',:remote => true + else + link_to "补交作品", new_student_work_url_without_domain(homework.id),:class => 'task-btn task-btn-blue fr' + end end elsif work - if homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 3 && StudentWorksEvaluationDistribution.where("student_work_id = #{work.id}").count > 0 #匿评作业,且作业状态不是在开启匿评之前 - if homework.homework_type != 3 - link_to "匿评作品", student_work_index_url_in_org(homework.id, 2), :class => 'task-btn task-btn-blue fr', :title => "开启匿评后不可修改作品" - else - work_ids = "(" + homework.student_works.has_committed.map(&:id).join(",") + ")" - if User.current.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count > 0 + if homework.homework_type == 4 + myshixun = Myshixun.find work.myshixun_id + link_to "继续实训", myshixun_game_path(myshixun.current_task, :myshixun_id => myshixun), :class => "task-btn task-btn-blue fr mr10",:target => "_blank" if myshixun + else + if homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 3 && StudentWorksEvaluationDistribution.where("student_work_id = #{work.id}").count > 0 #匿评作业,且作业状态不是在开启匿评之前 + if homework.homework_type != 3 link_to "匿评作品", student_work_index_url_in_org(homework.id, 2), :class => 'task-btn task-btn-blue fr', :title => "开启匿评后不可修改作品" else - link_to "查看作品", student_work_path(work), :class => 'task-btn task-btn-blue fr', :title => "匿评开启后提交的作品不参与匿评" + work_ids = "(" + homework.student_works.has_committed.map(&:id).join(",") + ")" + if User.current.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count > 0 + link_to "匿评作品", student_work_index_url_in_org(homework.id, 2), :class => 'task-btn task-btn-blue fr', :title => "开启匿评后不可修改作品" + else + link_to "查看作品", student_work_path(work), :class => 'task-btn task-btn-blue fr', :title => "匿评开启后提交的作品不参与匿评" + end end + elsif homework.homework_detail_manual && homework.homework_detail_manual.comment_status > 3 + link_to "查看作品", student_work_path(work), :class => 'task-btn task-btn-blue fr', :title => "匿评已结束" + elsif homework.end_time >= Time.now && work.user_id == User.current.id + link_to "修改作品", edit_student_work_url_without_domain(work.id),:class => 'task-btn task-btn-blue fr' + else + link_to "查看作品", student_work_path(work), :class => 'task-btn task-btn-blue fr', :title => "作业截止后不可修改作品" end - elsif homework.homework_detail_manual && homework.homework_detail_manual.comment_status > 3 - link_to "查看作品", student_work_path(work), :class => 'task-btn task-btn-blue fr', :title => "匿评已结束" - elsif homework.end_time >= Time.now && work.user_id == User.current.id - link_to "修改作品", edit_student_work_url_without_domain(work.id),:class => 'task-btn task-btn-blue fr' - else - link_to "查看作品", student_work_path(work), :class => 'task-btn task-btn-blue fr', :title => "作业截止后不可修改作品" end end end diff --git a/app/models/myshixun.rb b/app/models/myshixun.rb index eff520ef6..5d23cb584 100644 --- a/app/models/myshixun.rb +++ b/app/models/myshixun.rb @@ -7,6 +7,7 @@ class Myshixun < ActiveRecord::Base has_many :games, :dependent => :destroy, :order => "games.id ASC" belongs_to :shixun has_one :shixun_modify, :dependent => :destroy + has_many :student_works def total_stage self.games.count @@ -18,6 +19,34 @@ class Myshixun < ActiveRecord::Base return position end + def done_time + time = "" + if self.status == 1 + time = self.games.order("end_time desc").first.try(:end_time) + end + time + end + + def total_spend_time + time = 0 + self.games.each do |game| + if game.status == 2 + time += (game.end_time -game.open_time).to_i > 0 ? (game.end_time -game.open_time).to_i : 0 + end + end + time + end + + def total_score + score = 0 + self.games.each do |game| + if game.status == 2 + score += game.final_score + end + end + score + end + # id 转换成 identifier def to_param identifier diff --git a/app/models/shixun.rb b/app/models/shixun.rb index 404b8d28f..69beab432 100644 --- a/app/models/shixun.rb +++ b/app/models/shixun.rb @@ -54,6 +54,14 @@ class Shixun < ActiveRecord::Base render_404 end + def shixun_score + score = 0 + self.challenges.each do |challenge| + score += challenge.score + end + score + end + def collaborators self.shixun_members.select{|member| member.role == 2} unless self.shixun_members.blank? end diff --git a/app/models/student_work.rb b/app/models/student_work.rb index 45ab6d04e..cc800cbb6 100644 --- a/app/models/student_work.rb +++ b/app/models/student_work.rb @@ -13,6 +13,7 @@ class StudentWork < ActiveRecord::Base # course's message has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy has_many :attachments, :dependent => :destroy + has_one :myshixun scope :has_committed, lambda{where("work_status != 0 and work_status != 3")} scope :all_commit, lambda{where("work_status != 0")} diff --git a/app/views/homework_common/_homework_index_list.html.erb b/app/views/homework_common/_homework_index_list.html.erb index 4f119620a..3f027a5a4 100644 --- a/app/views/homework_common/_homework_index_list.html.erb +++ b/app/views/homework_common/_homework_index_list.html.erb @@ -72,16 +72,16 @@ <% end %> <% if (User.current.teacher_of_course(homework_common.course) || homework_common.user == User.current) && User.current.homework_banks.where(:homework_common_id => homework_common.id).empty? %> -
  • +
  • <%= link_to "加入题库", add_to_homework_bank_homework_common_path(homework_common, :type => 1), :remote => true %>
  • <% end %> <% if homework_common.user == User.current %> <% if homework_common.is_update && !User.current.homework_banks.where(:homework_common_id => homework_common.id).blank? %> -
  • +
  • <%= link_to "同步到题库", add_to_homework_bank_homework_common_path(homework_common, :type => 2), :remote => true %>
  • -
  • +
  • <%= link_to "另存到题库", add_to_homework_bank_homework_common_path(homework_common, :type => 3), :remote => true %>
  • <% end %> diff --git a/app/views/homework_common/add_to_homework_bank.js.erb b/app/views/homework_common/add_to_homework_bank.js.erb index afc160231..159f83ab8 100644 --- a/app/views/homework_common/add_to_homework_bank.js.erb +++ b/app/views/homework_common/add_to_homework_bank.js.erb @@ -7,4 +7,4 @@ var str = ""; str = "已经另存到题库"; <% end %> notice_sure_box(str); -$("#add_to_homework_bank_<%= @homework.id %>").remove(); \ No newline at end of file +$(".add_to_homework_bank_<%= @homework.id %>").remove(); \ No newline at end of file diff --git a/app/views/student_work/_evaluation_un_common_work.html.erb b/app/views/student_work/_evaluation_un_common_work.html.erb index 7c092131f..479ad255d 100644 --- a/app/views/student_work/_evaluation_un_common_work.html.erb +++ b/app/views/student_work/_evaluation_un_common_work.html.erb @@ -15,10 +15,10 @@ <%= student_work.teacher_score.nil? ? "--" : (!score_open ? "**" : format("%.1f",student_work.teacher_score))%> - + <%= student_work.teaching_asistant_score.nil? ? "--" : (!score_open ? "**" : format("%.1f",student_work.teaching_asistant_score))%> <% if !student_work.teaching_asistant_score.nil? && score_open %> -