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 ? '编辑' : '新建' %>普通作业
新建分组作业
+<%= edit_mode ? '编辑' : '新建' %>分组作业
新建编程作业
+<%= edit_mode ? '编辑' : '新建' %>编程作业
已有<%=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| %> - - -<%=sample.input.nil? ? " " : sample.input %>+
<%=sample.input.blank? ? " " : sample.input %>
<%=sample.output.nil? ? " " : sample.output %>+
<%=sample.output.blank? ? " " : sample.output %>
<%=test.input.nil? ? " " : test.input %>
<%=test.input.blank? ? " " : test.input %>
<%=test.output.nil? ? " " : test.output %>
<%=test.output.blank? ? " " : test.output %>