From d64aba13913823e2d1ae4cb629ab07e37846e683 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 23 May 2017 18:52:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E7=9A=84=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/homework_common_controller.rb | 132 +----------------- .../_new_common_homework.html.erb | 6 +- .../_new_group_homework.html.erb | 19 +-- .../_new_program_homework.html.erb | 76 +++++++--- app/views/homework_common/edit.html.erb | 78 +++-------- app/views/homework_common/new.html.erb | 14 +- app/views/student_work/index.html.erb | 17 ++- app/views/student_work/show.html.erb | 4 +- public/javascripts/edu/base_edu.js | 15 +- 9 files changed, 122 insertions(+), 239 deletions(-) diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb index 466616949..bf402d4a2 100644 --- a/app/controllers/homework_common_controller.rb +++ b/app/controllers/homework_common_controller.rb @@ -326,23 +326,15 @@ class HomeworkCommonController < ApplicationController def edit @user = User.current - @hw_status = params[:hw_status].to_i - @is_manage = params[:is_manage] - if @hw_status != 1 - @left_nav_type = 3 - respond_to do |format| - format.html{render :layout => 'base_courses'} - end - else - respond_to do |format| - format.html{render :layout => 'base_course_community'} - end + @homework_type = @homework.homework_type + respond_to do |format| + format.html{render :layout => 'base_edu'} end end def update if params[:homework_common] - is_update = @homework.name != params[:homework_common][:name] || @homework.description != params[:homework_common][:description] || params[:homework_type].to_i != @homework.homework_type + is_update = @homework.name != params[:homework_common][:name] || @homework.description != params[:homework_common][:description] 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] @@ -356,92 +348,8 @@ class HomeworkCommonController < ApplicationController @homework.name = params[:homework_common][:name] @homework.description = params[:homework_common][:description] - homework_detail_manual = @homework.homework_detail_manual || HomeworkDetailManual.new - if params[:homework_common][:end_time] != "" - if params[:homework_common][:publish_time] == "" - @homework.publish_time = Time.now - else - @homework.publish_time = params[:homework_common][:publish_time] - end - param_end_time = Time.parse(params[:homework_common][:end_time]).to_s - homework_end_time = @homework.end_time ? @homework.end_time.to_s : '' - if homework_end_time != param_end_time - if homework_end_time > param_end_time - @homework.student_works.where("work_status = 1").each do |st| - if param_end_time < st.commit_time - st.late_penalty = @homework.late_penalty - st.work_status = 2 - st.save - #更新CourseHomeworkStatistics中学生的迟交作品数 - course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, st.user_id) - course_statistics.update_attribute('late_commit_work_num', course_statistics.late_commit_work_num + 1) if course_statistics - end - end - else - @homework.student_works.where("work_status = 2").each do |st| - if param_end_time >= Time.parse(st.commit_time.to_s).strftime("%Y-%m-%d") - st.late_penalty = 0 - st.work_status = 1 - st.save - #更新CourseHomeworkStatistics中学生的迟交作品数 - course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, st.user_id) - course_statistics.update_attribute('late_commit_work_num', (course_statistics.late_commit_work_num - 1) < 0 ? 0 : (course_statistics.late_commit_work_num - 1)) if course_statistics - end - end - end - end - @homework.end_time = params[:homework_common][:end_time] || Time.now - - status = false - if @homework.publish_time > Time.now && homework_detail_manual.comment_status == 1 - homework_detail_manual.comment_status = 0 - @homework.student_works.destroy_all - #更新CourseHomeworkStatistics中每个学生的未交作品数 - @homework.course.student.each do |student| - course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, student.student_id) - 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 - end - elsif @homework.publish_time <= Time.now && homework_detail_manual.comment_status == 0 - homework_detail_manual.comment_status = 1 - create_works_list @homework if params[:homework_type].to_i != 3 - status = true - #更新CourseHomeworkStatistics中每个学生的未交作品数 - @homework.course.student.each do |student| - course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, student.student_id) - course_statistics.update_attribute('un_commit_work_num', course_statistics.un_commit_work_num + 1) if course_statistics - end - end - - eval_start = homework_detail_manual.evaluation_start - if eval_start.nil? || (Time.parse(eval_start.to_s) <= @homework.end_time && homework_detail_manual.comment_status <= 1) - homework_detail_manual.evaluation_start = (@homework.end_time + 7*24*60*60).strftime("%Y-%m-%d") - homework_detail_manual.evaluation_end = homework_detail_manual.evaluation_start + 7 - end - end - - if params[:homework_type] && params[:homework_type].to_i != @homework.homework_type - if @homework.homework_type == 2 - @homework.homework_detail_programing.destroy if @homework.homework_detail_programing - @homework.homework_tests.destroy_all - elsif @homework.homework_type == 3 - @homework.homework_detail_group.destroy if @homework.homework_detail_group - create_works_list @homework if homework_detail_manual.comment_status > 0 && @homework.student_works.empty? - end - if params[:homework_type].to_i == 3 - @homework.student_works.destroy_all - end - @homework.homework_type = params[:homework_type].to_i - end - anonymous = params[:homework_common][:anonymous_comment] ? params[:homework_common][:anonymous_comment].to_i : 1 - if anonymous != @homework.anonymous_comment - if anonymous == 1 - homework_detail_manual.ta_proportion = @homework.homework_type == 2 ? 0.4 : 1.0 - else - homework_detail_manual.ta_proportion = @homework.homework_type == 2 ? 0.3 : 0.6 - end - end - @homework.save_attachments(params[:attachments]) + @homework.reference_answer = params[:homework_common][:reference_answer] render_attachment_warning_if_needed(@homework) #编程作业相关属性 @@ -449,13 +357,6 @@ class HomeworkCommonController < ApplicationController @homework.homework_detail_programing ||= HomeworkDetailPrograming.new @homework_detail_programing = @homework.homework_detail_programing @homework_detail_programing.language = params[:language_type].to_i if params[:language_type] - if anonymous != @homework.anonymous_comment - if anonymous == 1 - @homework_detail_programing.ta_proportion = 0.6 - else - @homework_detail_programing.ta_proportion = 0.5 - end - end @homework.homework_samples.delete_all if params[:sample] sample_inputs = params[:sample][:input] if params[:sample] @@ -489,15 +390,7 @@ class HomeworkCommonController < ApplicationController @homework_detail_group.base_on_project = params[:base_on_project] ? 1 : 0 end - if anonymous != @homework.anonymous_comment - @homework.student_works.where("work_status != 0").each do |student_work| - student_work.save - end - end - - @homework.anonymous_comment = params[:homework_common][:anonymous_comment] ? params[:homework_common][:anonymous_comment].to_i : 1 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 @@ -505,20 +398,7 @@ class HomeworkCommonController < ApplicationController # create_works_list @homework # end - @hw_status = params[:hw_status].to_i - if params[:is_manage] == "1" - redirect_to user_manage_homeworks_user_path(User.current.id) - elsif params[:is_manage] == "2" - redirect_to user_receive_homeworks_user_path(User.current.id) - elsif @hw_status == 1 - redirect_to user_course_community_path(User.current.id) - elsif @hw_status == 2 - redirect_to course_path(@course.id) - elsif @hw_status == 5 - redirect_to student_work_index_url(:homework => @homework.id) - else - redirect_to homework_common_index_path(:course => @course.id) - end + redirect_to student_work_index_url(:homework => @homework.id) end end end diff --git a/app/views/homework_common/_new_common_homework.html.erb b/app/views/homework_common/_new_common_homework.html.erb index 3d1021532..2acdedd73 100644 --- a/app/views/homework_common/_new_common_homework.html.erb +++ b/app/views/homework_common/_new_common_homework.html.erb @@ -1,5 +1,5 @@
-

新建普通作业

+

<%= edit_mode ? '编辑' : '新建' %>普通作业

@@ -10,12 +10,11 @@
- <%= labelled_form_for @homework, :url =>{:controller=>'homework_common',:action => 'create', :course => @course.id}, :method => "post" do |f| %>
  • - +
  • @@ -60,7 +59,6 @@ <%= link_to '取消', homework_common_index_path(:course => @course), :class => 'task-btn fr mr10' %>
- <% end %>
\ No newline at end of file diff --git a/app/views/homework_common/_new_group_homework.html.erb b/app/views/homework_common/_new_group_homework.html.erb index 1c3519ef2..409f7d4f6 100644 --- a/app/views/homework_common/_new_group_homework.html.erb +++ b/app/views/homework_common/_new_group_homework.html.erb @@ -1,5 +1,7 @@ +<% not_allow_select = edit_mode && @homework.student_works.has_committed.count != 0 %> +
-

新建分组作业

+

<%= edit_mode ? '编辑' : '新建' %>分组作业

@@ -10,12 +12,11 @@
- <%= labelled_form_for @homework, :url =>{:controller=>'homework_common',:action => 'create', :course => @course.id}, :method => "post" do |f| %>
  • - +
  • @@ -37,13 +38,16 @@ <%= render :partial => 'users/user_homework_attachment', :locals => {:container => @homework} %>
  • - +
    • 每组最小人数 - + 每组最大人数 - + + + 已有学生提交作品,只能扩大分组范围,原分组人数为<%= @homework.homework_detail_group ? @homework.homework_detail_group.min_num : '' %>-<%= @homework.homework_detail_group ? @homework.homework_detail_group.max_num : '' %>人 +
    • 注:任一成员都可以提交作品,提交作品时需要关联同组成员,组内成员作品共享。
    @@ -71,11 +75,10 @@
  • - 保存 + 保存 <%= link_to '取消', homework_common_index_path(:course => @course), :class => 'task-btn fr mr10' %>
- <% end %>
\ No newline at end of file diff --git a/app/views/homework_common/_new_program_homework.html.erb b/app/views/homework_common/_new_program_homework.html.erb index e0e198b9b..5ec5eb33f 100644 --- a/app/views/homework_common/_new_program_homework.html.erb +++ b/app/views/homework_common/_new_program_homework.html.erb @@ -1,5 +1,5 @@
-

新建编程作业

+

<%= edit_mode ? '编辑' : '新建' %>编程作业

@@ -11,12 +11,11 @@
- <%= labelled_form_for @homework, :url =>{:controller=>'homework_common',:action => 'create', :course => @course.id}, :method => "post" do |f| %>
  • - +
  • @@ -40,21 +39,39 @@
    • -
    • -

      - 样例1 - - 温馨提示:请至少输入一组样例供学生参考。 -

      - - -
    • + <% if edit_mode && @homework.homework_samples.count > 0 %> + <% @homework.homework_samples.each_with_index do |sample, index| %> +
    • +

      + 样例<%= index + 1 %> + + <% if index != 0 %> + + <% else %> + 温馨提示:请至少输入一组样例供学生参考。 + <% end %> +

      + + +
    • + <% end %> + <% else %> +
    • +

      + 样例1 + + 温馨提示:请至少输入一组样例供学生参考。 +

      + + +
    • + <% end %>
    • -
    • +
    • - -

    • + <% if edit_mode %> + <% @homework.homework_tests.each_with_index do |test, index| %> +
    • +

      + 测试<%= index + 1 %> + + <% if index != 0 %> + + <% end %> +

      + + +
    • + <% end %> + <% else %> +
    • +

      + 测试1 + +

      + + +
    • + <% end %>
  • @@ -99,7 +132,6 @@ <%= link_to '取消', homework_common_index_path(:course => @course), :class => 'task-btn fr mr10' %>
- <% end %>
diff --git a/app/views/homework_common/edit.html.erb b/app/views/homework_common/edit.html.erb index 3240cfdea..508dcc52f 100644 --- a/app/views/homework_common/edit.html.erb +++ b/app/views/homework_common/edit.html.erb @@ -1,63 +1,19 @@ - -
-
编辑作业
-
-
- - -
- <% committed_work_count = @homework.student_works.has_committed.count %> - <% stu_pro_count = @homework.student_work_projects.count %> - <% if committed_work_count != 0 %> - <% if @homework.homework_type == 1 %> -

已有<%=committed_work_count %>个学生提交作品,不允许再修改作业类型。

- <% elsif @homework.homework_type == 2 %> -

已有<%=committed_work_count %>个学生提交作品,不允许再修改作业类型和测试集。

- <% elsif @homework.homework_type == 3 %> -

已有<%=committed_work_count %>个学生提交作品,不允许再修改作业类型和分组设置(可扩大分组范围)。

+<% content_for :header_tags do %> + <%= import_ke(enable_at: false, prettify: false, init_activity: false) %> +<% end %> +
+

+ + <%= link_to '班级首页', course_path(@course) %> > + <%= link_to '作业列表', homework_common_index_path(:course => @course) %> > + 编辑

+ <%= form_for @homework, :html => {:id => 'homework_common_submit_form'} do |f| %> + <% if @homework_type == 1 %> + <%= render :partial => 'new_common_homework', :locals => {:f => f, :edit_mode => true} %> + <% elsif @homework_type == 2 %> + <%= render :partial => 'new_program_homework', :locals => {:f => f, :edit_mode => true} %> + <% elsif @homework_type == 3 %> + <%= render :partial => 'new_group_homework', :locals => {:f => f, :edit_mode => true} %> <% end %> - <% elsif stu_pro_count != 0 && @homework.homework_type == 3 %> -

已有<%=stu_pro_count %>个学生关联项目,不允许再修改作业类型。

<% end %> - - <%= form_for @homework do |f| %> - - -
- <%= render :partial => 'users/user_homework_form', :locals => { :homework => @homework,:f => f,:edit_mode => true } %> -
- <% end%> -
+
\ No newline at end of file diff --git a/app/views/homework_common/new.html.erb b/app/views/homework_common/new.html.erb index 57b96d533..fc4a024fd 100644 --- a/app/views/homework_common/new.html.erb +++ b/app/views/homework_common/new.html.erb @@ -7,11 +7,13 @@ <%= link_to '班级首页', course_path(@course) %> > <%= link_to '作业列表', homework_common_index_path(:course => @course) %> > 新建

- <% if @homework_type == 1 %> - <%= render :partial => 'new_common_homework' %> - <% elsif @homework_type == 2 %> - <%= render :partial => 'new_program_homework' %> - <% elsif @homework_type == 3 %> - <%= render :partial => 'new_group_homework' %> + <%= labelled_form_for @homework, :url =>{:controller=>'homework_common',:action => 'create', :course => @course.id}, :html => {:id => 'homework_common_submit_form'}, :method => "post" do |f| %> + <% if @homework_type == 1 %> + <%= render :partial => 'new_common_homework', :locals => {:f => f, :edit_mode => false} %> + <% elsif @homework_type == 2 %> + <%= render :partial => 'new_program_homework', :locals => {:f => f, :edit_mode => false} %> + <% elsif @homework_type == 3 %> + <%= render :partial => 'new_group_homework', :locals => {:f => f, :edit_mode => false} %> + <% end %> <% end %>
\ No newline at end of file diff --git a/app/views/student_work/index.html.erb b/app/views/student_work/index.html.erb index aaa01888b..bc4a2159e 100644 --- a/app/views/student_work/index.html.erb +++ b/app/views/student_work/index.html.erb @@ -54,12 +54,19 @@
    + <% if @homework.homework_type != 4 %>
  • <%= link_to l(:button_edit), edit_homework_common_path(@homework) %>
  • + <% end %>
  • <%= link_to "设置", setting_homework_common_path(@homework) %>
  • + <% if @homework.homework_type != 4 %> +
  • + <%= link_to '进入实训', edit_homework_common_path(@homework) %> +
  • + <% end %> <% if (User.current.teacher_of_course(@homework.course) || @homework.user == User.current) && User.current.homework_banks.where(:homework_common_id => @homework.id).empty? %>
  • <%= link_to "加入题库", add_to_homework_bank_homework_common_path(@homework, :type => 1)%> @@ -127,13 +134,13 @@
  • -
    <%=sample.input.nil? ? " " : sample.input %>
    +
    <%=sample.input.blank? ? " " : sample.input %>
  • -
    <%=sample.output.nil? ? " " : sample.output %>
    +
    <%=sample.output.blank? ? " " : sample.output %>
@@ -162,10 +169,10 @@ <%=i+1 %> -
<%=test.input.nil? ? " " : test.input %>
+
<%=test.input.blank? ? " " : test.input %>
-
<%=test.output.nil? ? " " : test.output %>
+
<%=test.output.blank? ? " " : test.output %>
<% end %> @@ -448,8 +455,6 @@
- -
<% if @homework.reference_answer %> <%= @homework.reference_answer.html_safe %> diff --git a/app/views/student_work/show.html.erb b/app/views/student_work/show.html.erb index 43b13ab42..7fb61d0cf 100644 --- a/app/views/student_work/show.html.erb +++ b/app/views/student_work/show.html.erb @@ -133,9 +133,9 @@ -
<%= x["output"].nil? ? "" : x["output"].force_encoding("UTF-8") %>
+
<%= x["output"].blank? ? "" : x["output"].force_encoding("UTF-8") %>
-
<%= x["result"].nil? ? "" : x["result"].force_encoding("UTF-8") %>
+
<%= x["result"].blank? ? "" : x["result"].force_encoding("UTF-8") %>
diff --git a/public/javascripts/edu/base_edu.js b/public/javascripts/edu/base_edu.js index 739a7c2f6..83a65870c 100644 --- a/public/javascripts/edu/base_edu.js +++ b/public/javascripts/edu/base_edu.js @@ -725,7 +725,7 @@ function student_choose_group(course_id, member_id){ }); } -function submit_new_common_homework(type){ +function submit_new_common_homework(type, edit_mode){ var notice_count = 0; $("#new_homework_notice_count").parent().hide(); $("#new_homework_notice>ul").empty(); @@ -767,12 +767,19 @@ function submit_new_common_homework(type){ notice_count++; $("#new_homework_notice>ul").append("
  • 分组最小人数不得大于最大人数
  • "); } + if(edit_mode){ + var data_min = parseInt($("#min_max_num_notice").attr("data-min-num")); + var data_max = parseInt($("#min_max_num_notice").attr("data-max-num")); + if(parseInt(min) > data_min || parseInt(max) < data_max){ + $("#min_max_num_notice").show(); + return false; + } + } } if(notice_count == 0){ homework_description_editor.sync(); homework_ref_answer_editor.sync(); - $("#new_homework_common").submit(); - console.log("111111111111111111"); + $("#homework_common_submit_form").submit(); } else{ $("#new_homework_notice_count").html(notice_count); $("#new_homework_notice_count").parent().show(); @@ -786,7 +793,7 @@ function SearchByName_1(url) $.get( url, { - name : $("#course_student_name").val(), + name : $("#course_student_name").val() }, function (data) { }