From dd4e67ebdb2ab95446d3269904eef026f82993a8 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 2 Sep 2015 18:09:52 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=8F=90=E4=BA=A4=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/student_work_controller.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 7726ab3da..3628f1d9b 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -134,6 +134,7 @@ class StudentWorkController < ApplicationController end def new + redirect_to new_user_commit_homework_users_path(homework_id: @homework.id) if @homework.homework_type==2 @student_work = @homework.student_works.where("user_id = ?",User.current.id).first if @student_work.nil? @student_work = StudentWork.new From a69cee4b265beee4ed678ad4c1ecfac4fe470752 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 2 Sep 2015 21:38:13 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E8=80=81=E5=B8=88=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/student_work_controller.rb | 50 ++++++++++++++----- app/controllers/users_controller.rb | 1 + app/views/users/_user_homework_list.html.erb | 5 ++ .../users/new_user_commit_homework.html.erb | 12 +++-- public/javascripts/homework.js | 3 +- 5 files changed, 53 insertions(+), 18 deletions(-) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 3628f1d9b..6b091def9 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -12,10 +12,37 @@ class StudentWorkController < ApplicationController ### def program_test + is_test = params[:is_test] == 'true' resultObj = {status: 0, results: [], error_msg: '', time: Time.now} - student_work = find_or_save_student_work - unless student_work - resultObj[:status] = 100 + unless is_test + student_work = find_or_save_student_work + + unless student_work + resultObj[:status] = 100 + else + if @homework.homework_type == 2 && @homework.homework_detail_programing + result = test_realtime(student_work, params[:src]) + logger.debug result + resultObj[:status] = result["status"] + resultObj[:results] = result["results"] + resultObj[:error_msg] = result["error_msg"] + results = result["results"] + if result["status"].to_i == -2 #编译错误 + results = [result["error_msg"]] + end + student_work_test = student_work.student_work_tests.build(status: result["status"], results: results, + src: params[:src]) + unless student_work.save + resultObj[:status] = 200 + else + resultObj[:status] = result["status"].to_i + resultObj[:time] = student_work_test.created_at.to_s(:db) + resultObj[:index] = student_work.student_work_tests.count + end + + end + end + else if @homework.homework_type == 2 && @homework.homework_detail_programing result = test_realtime(student_work, params[:src]) @@ -27,18 +54,15 @@ class StudentWorkController < ApplicationController if result["status"].to_i == -2 #编译错误 results = [result["error_msg"]] end - student_work_test = student_work.student_work_tests.build(status: result["status"], results: results, - src: params[:src]) - unless student_work.save - resultObj[:status] = 200 - else - resultObj[:status] = result["status"].to_i - resultObj[:time] = student_work_test.created_at.to_s(:db) - resultObj[:index] = student_work.student_work_tests.count - end - + + resultObj[:status] = result["status"].to_i + resultObj[:time] = Time.now.strftime('%Y%m%d %T') + resultObj[:index] = 0 end + end + + render :json => resultObj end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 281924f55..ce2de336b 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -345,6 +345,7 @@ class UsersController < ApplicationController def new_user_commit_homework @user = User.current @homework = HomeworkCommon.find(params[:homework_id]) + @is_test = params[:is_test] == 'true' @student_work = @homework.student_works.where(user_id: User.current.id).first if @student_work.nil? @student_work = StudentWork.new diff --git a/app/views/users/_user_homework_list.html.erb b/app/views/users/_user_homework_list.html.erb index 076383607..273b815c3 100644 --- a/app/views/users/_user_homework_list.html.erb +++ b/app/views/users/_user_homework_list.html.erb @@ -19,6 +19,11 @@
<%= user_for_homework_common homework_common,is_teacher %>
+ <% if homework_common.homework_type == 2 && is_teacher%> +
+ <%= link_to "模拟答题", new_user_commit_homework_users_path(homework_id: homework_common.id, is_test: true) %> +
+ <% end %>
<%= l(:label_end_time)%>:<%= homework_common.end_time%>
diff --git a/app/views/users/new_user_commit_homework.html.erb b/app/views/users/new_user_commit_homework.html.erb index a150c39ba..d06e99440 100644 --- a/app/views/users/new_user_commit_homework.html.erb +++ b/app/views/users/new_user_commit_homework.html.erb @@ -48,9 +48,11 @@
<%= @homework.name %>
截止时间:<%= @homework.end_time %>
<%= @homework.user.show_name %> -

<%= @homework.description %>
-输入 2 1 1 4 4 2 3 6 5
-输出 15
+

<%= @homework.description.html_safe %>
+ <% @homework.homework_tests.each do |test| %> +输入 <%=test.input%>
+输出 <%=test.output%>
+ <% end %>

注:迟交扣2分,缺评一个作品扣2

@@ -64,7 +66,7 @@ :homework => @homework.id }, :method => :post) do |f|%> - +
请使用 <%= @homework.language_name %> 语言编写
@@ -76,7 +78,9 @@
测试代码 + <% unless @is_test %> 提交代码 + <% end %>
<% end %> diff --git a/public/javascripts/homework.js b/public/javascripts/homework.js index 67bfd59c3..e36c9ed86 100644 --- a/public/javascripts/homework.js +++ b/public/javascripts/homework.js @@ -26,6 +26,7 @@ $(function(){ var student_work_id = $('#test-program-btn').attr('data-student-work-id'); var src = $('#program-src').val(); var title = $('#program-title').val(); + var is_test = $('input[name=is_test]').val(); if(!valid_form()){ return; @@ -33,7 +34,7 @@ $(function(){ $.post( '/student_work/program_test', - {homework: homework_id, student_work_id: student_work_id, src: src, title: title}, + {homework: homework_id, student_work_id: student_work_id, src: src, title: title, is_test: is_test}, function(data,status){ tested = true; console.log(data); From d07873cdf0a588dd34d19d16e5005d6e343b72ea Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 2 Sep 2015 21:44:08 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/student_work_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 95afa7264..8d5ab7a9b 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -13,7 +13,7 @@ class StudentWorkController < ApplicationController ### def program_test is_test = params[:is_test] == 'true' - resultObj = {status: 0, results: [], error_msg: '', time: Time.now} + resultObj = {status: 0, results: [], error_msg: '', time: Time.now.strftime('%Y-%m-%d %T')} unless is_test student_work = find_or_save_student_work @@ -56,7 +56,7 @@ class StudentWorkController < ApplicationController end resultObj[:status] = result["status"].to_i - resultObj[:time] = Time.now.strftime('%Y%m%d %T') + resultObj[:time] = Time.now.strftime('%Y-%m-%d %T') resultObj[:index] = 0 end From f6edbb238e5b58464ccd9800ea79028e29736a91 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 2 Sep 2015 21:47:07 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E9=9A=90=E5=8E=BB=E7=BC=96=E7=A8=8B?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E7=9A=84=E5=BE=97=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/new_user_commit_homework.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/users/new_user_commit_homework.html.erb b/app/views/users/new_user_commit_homework.html.erb index d06e99440..0ec78fb39 100644 --- a/app/views/users/new_user_commit_homework.html.erb +++ b/app/views/users/new_user_commit_homework.html.erb @@ -55,7 +55,7 @@ <% end %>

-

注:迟交扣2分,缺评一个作品扣2

+
<%= form_for(@student_work, From a78b28f1b747e01cd8b31ab9fabff0be3d096bcf Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 2 Sep 2015 21:47:42 +0800 Subject: [PATCH 5/8] =?UTF-8?q?0=E6=9D=A1=E6=B6=88=E6=81=AF=E5=88=99?= =?UTF-8?q?=E4=B8=8D=E6=98=BE=E7=A4=BA=E2=80=9C=E5=85=A8=E9=83=A8=E8=AE=BE?= =?UTF-8?q?=E4=B8=BA=E5=B7=B2=E8=AF=BB=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/user_messages.html.erb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/views/users/user_messages.html.erb b/app/views/users/user_messages.html.erb index b2f852264..65977c1a4 100644 --- a/app/views/users/user_messages.html.erb +++ b/app/views/users/user_messages.html.erb @@ -31,7 +31,10 @@
<% if params[:type].nil? %>
- 有 <%= User.current.count_new_message %> 条未读<%= link_to "全部设为已读", user_message_path(User.current, :viewed => 'all') %> + 有 <%= User.current.count_new_message %> 条未读 + <% unless User.current.count_new_message == 0 %> + <%= link_to "全部设为已读", user_message_path(User.current, :viewed => 'all') %> + <% end %>
<% end %> <% if @message_alls.count >0 %> From a0c611378bc94e7b8bbc9e37b7ddac6801527578 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Wed, 2 Sep 2015 22:09:23 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/student_work_controller.rb | 5 ++++- app/views/users/new_user_commit_homework.html.erb | 5 ++++- public/javascripts/homework.js | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 8d5ab7a9b..9f8d25c7e 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -166,7 +166,10 @@ class StudentWorkController < ApplicationController end def new - redirect_to new_user_commit_homework_users_path(homework_id: @homework.id) if @homework.homework_type==2 + if @homework.homework_type==2 + redirect_to new_user_commit_homework_users_path(homework_id: @homework.id) + return + end @user = User.current @student_work = @homework.student_works.where("user_id = ?",User.current.id).first if @student_work.nil? diff --git a/app/views/users/new_user_commit_homework.html.erb b/app/views/users/new_user_commit_homework.html.erb index 0ec78fb39..e4b1db757 100644 --- a/app/views/users/new_user_commit_homework.html.erb +++ b/app/views/users/new_user_commit_homework.html.erb @@ -41,7 +41,7 @@
-
提交作品
+
<%= @is_test ? '模拟答题' : '提交作品' %>
@@ -86,7 +86,10 @@ <% end %>
+ +
+ <% @student_work.student_work_tests.each_with_index do |test, index| %>

第<%= @student_work.student_work_tests.count - index%>次测试

<%= test.created_at.to_s(:db) %> diff --git a/public/javascripts/homework.js b/public/javascripts/homework.js index e36c9ed86..6813f90af 100644 --- a/public/javascripts/homework.js +++ b/public/javascripts/homework.js @@ -38,6 +38,9 @@ $(function(){ function(data,status){ tested = true; console.log(data); + if(data.index <=0){ + data.index = $('.ProResultTop').length+1; + } if (typeof cb == 'function') {cb(); return;} @@ -45,7 +48,7 @@ $(function(){ var html=bt('t:result-list',data); $('.ProResult').prepend(html); - if (data.status==0) { + if (data.status==0 && is_test != 'true') { var r=confirm("答题正确,是否立刻提交?"); if (r) { $(".HomeWorkCon form").submit(); From 6063f39eacf4dc1c1faeda63a4085f9b7b5fb574 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Thu, 3 Sep 2015 16:58:38 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E7=9A=84=E4=B8=80=E4=BA=9B=E9=93=BE=E6=8E=A5=E5=92=8C=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 2 +- app/helpers/application_helper.rb | 2 +- app/views/users/_user_homework_list.html.erb | 2 +- app/views/users/new_user_commit_homework.html.erb | 4 ---- 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 12b0f5140..e0c6fc780 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -360,7 +360,7 @@ class UsersController < ApplicationController def user_commit_homework flash[:notice] = l(:notice_successful_create) - redirect_to user_homeworks_user_path(User.current) + redirect_to student_work_index_url(:homework => params[:homework]) end def user_new_homework diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index ad9322cbc..2f210f466 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -2347,7 +2347,7 @@ module ApplicationHelper if homework.homework_type == 1 && homework.homework_detail_manual && homework.homework_detail_manual.comment_status != 1 #匿评作业,且作业状态不是在开启匿评之前 link_to "修改作品", "", :class => 'c_blue', :title => "开启匿评后不可修改作品" elsif homework.homework_type == 2 #编程作业不能修改作品 - link_to "作品已交", "",:class => 'c_blue',:title => "编程作业不可修改作品" + link_to "作品已交", student_work_index_path(:homework => homework.id),:class => 'c_blue',:title => "编程作业不可修改作品" else link_to "修改作品", edit_student_work_path(work.id),:class => 'c_blue' end diff --git a/app/views/users/_user_homework_list.html.erb b/app/views/users/_user_homework_list.html.erb index 273b815c3..f0bab160f 100644 --- a/app/views/users/_user_homework_list.html.erb +++ b/app/views/users/_user_homework_list.html.erb @@ -21,7 +21,7 @@
<% if homework_common.homework_type == 2 && is_teacher%>
- <%= link_to "模拟答题", new_user_commit_homework_users_path(homework_id: homework_common.id, is_test: true) %> + <%= link_to "模拟答题", new_user_commit_homework_users_path(homework_id: homework_common.id, is_test: true), class: 'c_blue' %>
<% end %>
diff --git a/app/views/users/new_user_commit_homework.html.erb b/app/views/users/new_user_commit_homework.html.erb index e4b1db757..8d5a1a48c 100644 --- a/app/views/users/new_user_commit_homework.html.erb +++ b/app/views/users/new_user_commit_homework.html.erb @@ -49,10 +49,6 @@
<%= @homework.user.show_name %>

<%= @homework.description.html_safe %>
- <% @homework.homework_tests.each do |test| %> -输入 <%=test.input%>
-输出 <%=test.output%>
- <% end %>

From dd06aa3a92d0f38dc8414c828ac8a5f7c657b5ff Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 3 Sep 2015 17:15:38 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/query.rb | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/app/models/query.rb b/app/models/query.rb index 19bd1bed5..e49147dea 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -492,25 +492,27 @@ class Query < ActiveRecord::Base def project_statement project_clauses = [] - if project && !project.descendants.active.empty? - ids = [project.id] - if has_filter?("subproject_id") - case operator_for("subproject_id") - when '=' - # include the selected subprojects - ids += values_for("subproject_id").each(&:to_i) - when '!*' - # main project only - else - # all subprojects + unless project.descendants.blank? + if project && !project.descendants.active.empty? + ids = [project.id] + if has_filter?("subproject_id") + case operator_for("subproject_id") + when '=' + # include the selected subprojects + ids += values_for("subproject_id").each(&:to_i) + when '!*' + # main project only + else + # all subprojects + ids += project.descendants.collect(&:id) + end + elsif Setting.display_subprojects_issues? ids += project.descendants.collect(&:id) end - elsif Setting.display_subprojects_issues? - ids += project.descendants.collect(&:id) + project_clauses << "#{Project.table_name}.id IN (%s)" % ids.join(',') + elsif project + project_clauses << "#{Project.table_name}.id = %d" % project.id end - project_clauses << "#{Project.table_name}.id IN (%s)" % ids.join(',') - elsif project - project_clauses << "#{Project.table_name}.id = %d" % project.id end project_clauses.any? ? project_clauses.join(' AND ') : nil end