Merge branch 'develop' into dev_cxt

This commit is contained in:
cxt 2017-09-26 15:18:22 +08:00
commit ae2dedec92
34 changed files with 286 additions and 122 deletions

View File

@ -104,6 +104,17 @@ class CoursesController < ApplicationController
@import_attachments = Attachment.where(:container_id => @course.id, :container_type => "ImportStudent")
end
def shixun_statistics
@homeworks = @course.homework_commons.where("homework_type = 4").order("created_at asc")
filename="#{format_date(Time.now)}_#{@course.teacher.show_real_name.to_s}_#{@course.name}_实训数据报告";
respond_to do |format|
format.xls {
send_data(shixun_xls(@homeworks,@course), :type => 'application/octet-stream', :filename => filename_for_content_disposition("#{filename}.xls"))
}
end
end
# REDO性能需要优化这块是管理员后台任务不影响用户使用
def sync_students
school_id = User.find(@course.tea_id).try(:user_extensions).try(:school_id)
@ -1989,6 +2000,87 @@ class CoursesController < ApplicationController
@results = paginateHelper @results, @limit
end
def shixun_xls homeworks, course
xls_report = StringIO.new
book = Spreadsheet::Workbook.new
blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10
black = Spreadsheet::Format.new :color => :black, :weight => :bold, :size => 10
current_row = 0
homeworks.each_with_index do |homework, i|
sheet = book.create_worksheet :name => "#{i+1}次作业"
sheet.row(0).default_format = blue
sheet[0,0] = "课堂编号"
sheet[0,1] = "主讲老师"
sheet[0,2] = "课堂名称"
sheet[0,3] = "作业编号"
sheet[0,4] = "作业/实训名称"
sheet[0,5] = "关卡"
sheet[0,6] = "学生id"
sheet[0,7] = "学生姓名"
sheet[0,8] = "经验值"
sheet[0,9] = "金币"
sheet[0,10] = "评测历史"
sheet[0,11] = "评测时间"
sheet[0,12] = "评测结果"
sheet[1,0] = course.id
sheet[1,1] = course.teacher.show_real_name
sheet[1,2] = course.name
sheet[1,3] = "# #{i + 1}"
sheet[1,4] = homework.name
current_row = 1
shixun = homework.homework_commons_shixuns.shixun if homework.homework_commons_shixuns
if shixun
shixun.challenges.each_with_index do |challenge, j|
sheet[current_row,5] = "#{j+1}"
games = Game.where(:challenge_id => challenge.id, :user_id => homework.student_works.where("work_status != 0").map(&:user_id))
count_exp_score = 0
count_gold_score = 0
count_test = 0
count_time = 0
if games.count > 0
games.each do |game|
user = game.user
sheet[current_row,6] = user.login
sheet[current_row,7] = user.show_real_name
sheet[current_row,8] = game.final_score ? "+#{game.final_score.to_s} 经验值" : "--"
count_exp_score = count_exp_score + (game.final_score ? game.final_score.to_i : 0)
sheet[current_row,9] = game.final_score ? (game.answer_open? ? "#{-challenge.score.to_i} 金币" : "+#{game.final_score.to_i} 金币") : "--"
count_gold_score = count_gold_score + (game.final_score ? (game.answer_open? ? -challenge.score.to_i : game.final_score.to_i) : 0)
count = game.outputs.count
if count > 0
outputs = game.outputs.where(:test_set_position => 1).order("created_at asc")
outputs.each_with_index do |output, k|
count_test = count_test + 1
sheet[current_row,10] = "#{k+1}次评测"
sheet[current_row,11] = k == 0 ? game_spend_time((output.created_at - game.created_at).to_i) : game_spend_time((output.created_at - outputs[k-1].created_at).to_i)
count_time += count_time + (k == 0 ? (output.created_at - game.created_at).to_i : (output.created_at - outputs[k-1].created_at).to_i)
sheet[current_row,12] = game.outputs.where(:query_index => output.query_index).select{|ou| ou.result == false}.count > 0 ? "失败" : "成功"
current_row = current_row + 1
end
else
current_row = current_row + 1
end
end
else
current_row = current_row + 1
end
sheet[current_row,6] = "合计"
sheet[current_row,7] = games.count.to_s + ""
sheet[current_row,8] = count_exp_score >= 0 ? "+#{count_exp_score} 经验值" : "-#{count_exp_score} 经验值"
sheet[current_row,9] = count_gold_score >= 0 ? "+#{count_gold_score} 金币" : "-#{count_gold_score} 金币"
sheet[current_row,10] = "#{count_test}次评测"
sheet[current_row,11] = game_spend_time(count_time.to_i)
sheet.row(current_row).default_format = black
current_row = current_row + 1
end
end
end
book.write xls_report
xls_report.string
end
def member_to_xls homeworks, course, members,groups
xls_report = StringIO.new
book = Spreadsheet::Workbook.new

View File

@ -316,9 +316,9 @@ class GamesController < ApplicationController
answer_right = []
@game_challenge.challenge_chooses.each_with_index do |choose, index|
correct = (params[:answer][index] == choose.standard_answer) ? true : false
if choose.current_choose_outputs.blank?
ChooseOutputs.create(:challenge_choose_id => choose.id, :user_id => User.current.id, :answer => params[:answer][index], :correct => correct)
end
#choose.current_choose_outputs.delete if choose.current_choose_outputs.present?
#ChooseOutputs.create(:challenge_choose_id => choose.id, :user_id => User.current.id, :answer => params[:answer][index], :correct => correct)
Output.create(:game_id => @game.id, :test_set_position => choose.position, :actual_output => params[:answer][index], :result => correct, :query_index => @game.query_index)
if @shixun.status > 1 && !@game.answer_open
if correct
score += choose.score
@ -332,14 +332,15 @@ class GamesController < ApplicationController
end
answer_right << correct
end
@game.update_attributes(:status => 2, :end_time => Time.now)
@had_done = @game.had_done
reward_grade(@game.user, @game.id, 'Game', score)
reward_experience(@game.user, @game.id, 'Game', score)
@game.update_attribute(:final_score, score)
if @right
@game.update_attributes(:status => 2, :end_time => Time.now)
reward_grade(@game.user, @game.id, 'Game', score)
reward_experience(@game.user, @game.id, 'Game', score)
@game.update_attribute(:final_score, score)
end
respond_to do |format|
format.js{redirect_to myshixun_game_path(@game, :myshixun_id => @myshixun, :choose => 1)}
format.js{redirect_to myshixun_game_path(@game, :myshixun_id => @myshixun, :choose => @right)}
end
end
@ -407,7 +408,7 @@ class GamesController < ApplicationController
if(params[:choose] == "true")
challenge.challenge_chooses.each_with_index do |choose, index|
@answer += ""+ ((index + 1).to_s) +"题:<br />"
@answer += choose.answer
@answer += (choose.answer.blank? ? choose.standard_answer : choose.answer)
@answer += "<br /><br /><br />"
end
else

View File

@ -127,7 +127,6 @@ class MyshixunsController < ApplicationController
compile_success = jsonTestDetails['compileSuccess']
# message = Base64.decode64(params[:msg]) unless params[:msg].blank?
logger.info(outPut)
logger.info("##################"+ compile_success)
game = Game.find(game_id)
challenge = game.challenge
unless jenkins_testsets.blank?
@ -135,7 +134,6 @@ class MyshixunsController < ApplicationController
actual_output = tran_base64_decode64(j_test_set['output'])
game_outputs = Output.create(:code => status, :game_id => game_id, :out_put => outPut, :test_set_position => j_test_set['caseId'],
:actual_output => actual_output, :result => j_test_set['passed'].to_i, :query_index => game.query_index, :compile_success => compile_success.to_i)
logger.info("compile_success:"+ compile_success)
# output = Output.where(:game_id => game.id, :test_set_position => j_test_set['caseId'].to_i).first
# logger.info("#############{outPut}")
# if output.nil?

View File

@ -16,7 +16,7 @@ class ShixunsController < ApplicationController
def statistics_students
@statistics = @shixun.myshixuns.order("created_at desc")
@statistics = @shixun.myshixuns.where("").order("created_at desc")
@statistics_count = @statistics.count
@limit = 10
@is_remote = true
@ -254,9 +254,9 @@ class ShixunsController < ApplicationController
# 确定 sort 1升序 2 降序
@order = params[:order] || "myshixun_count"
bsort = params[:sort] || "desc"
@sort = bsort == "desc" ? "asc" : "desc"
@sort = bsort == "asc" ? "desc" : "asc"
if @order == "updated_at"
order_str = "#{Shixun.table_name}.updated_at #{bsort}"
order_str = "#{Shixun.table_name}.updated_at #{@sort}"
else
order_str = "myshixun_count #{bsort}, #{Shixun.table_name}.updated_at #{bsort}"
end

View File

@ -831,7 +831,7 @@ module ApplicationHelper
end
# 项目issue列表导出Excel功能
def issue_list_xls issues
def issue_list_xls issues
xls_report = StringIO.new
book = Spreadsheet::Workbook.new
sheet1 = book.create_worksheet :name => "issues"

View File

@ -7,6 +7,7 @@ class ChallengeChoose < ActiveRecord::Base
has_many :challenge_tags, :dependent => :destroy
has_many :challenge_questions, :dependent => :destroy
has_one :choose_outputs, :dependent => :destroy
has_many :outputs, :dependent => :destroy
validates_presence_of :subject

View File

@ -66,4 +66,18 @@ class Game < ActiveRecord::Base
challenge = self.challenge
challenge.try(:position).to_i == challenge.shixun.challenges.count ? true : false
end
def choose_correct_num
num = 0
self.challenge.challenge_chooses.each do |choose|
outputs = Output.where(:game_id => self.id, :test_set_position => choose.position).first
if outputs.nil?
num = nil
else
num += (outputs.result ? 1 : 0)
end
end
return num
end
end

View File

@ -4,5 +4,5 @@ class Output < ActiveRecord::Base
# compile_success 1 表示程序未报错,有正常输出, 0.表示程序抛异常了,报错!
default_scope :order => 'query_index desc'
belongs_to :game
belongs_to :challenge_choose
end

View File

@ -49,8 +49,8 @@
<i class="fa fa-lock font-grey ml5" ></i>
<% end %>
</p>
<div class="clearfix"><span class="fl fb">输入:</span><p class="fl"><%= match_specific_symbol test.input unless test.input.blank? %></p></div>
<div class="clearfix"><span class="fl fb">输出:</span><p class="fl"><%= match_specific_symbol test.output unless test.output.blank? %></div>
<div class="clearfix"><span class="fl fb">输入:</span><p class="fl break_word with95"><%= match_specific_symbol test.input unless test.input.blank? %></p></div>
<div class="clearfix"><span class="fl fb">输出:</span><p class="fl break_word with95"><%= match_specific_symbol test.output unless test.output.blank? %></div>
</li>
<% end %>
<% else %>

View File

@ -152,4 +152,16 @@
timepicker:false,
validateOnBlur:false
});
function addtip(){
console.log("<%= @course.course_groups%>");
<% unless @course.course_groups.empty? %>
<% @course.course_groups.each do |group| %>
if($(".setting_group_<%= group.id %> span").width() == 115){
$(".setting_group_<%= group.id %>").attr("data-tip-left","<%= group.name %>");
}
<% end %>
<% end %>
}
</script>

View File

@ -16,7 +16,7 @@
<% @course.course_groups.each do |group| %>
<li data-option="hasclass" data-group-id="<%= group.id %>" data-course-id="<%= @course.id %>" class="setting_group_<%= group.id %>">
<p class="p1">
<span data-tip-left="<%= group.name %>"><%= group.name %></span>
<span><%= group.name %></span>
<em><%= group.members.count %></em>
<!--<i class="fa fa-bars" aria-hidden="true"></i>-->
</p>
@ -27,3 +27,13 @@
</div>
<%= render :partial => "courses/settings/all_student_list_block" %>
</div>
<script>
<% unless @course.course_groups.empty? %>
<% @course.course_groups.each do |group| %>
if($(".setting_group_<%= group.id %> span").width() == 115){
$(".setting_group_<%= group.id %> p").attr("data-tip-left","<%= group.name %>");
}
<% end %>
<% end %>
</script>

View File

@ -12,11 +12,20 @@
<% unless @course.course_groups.empty? %>
<% @course.course_groups.each do |group| %>
<li data-option="hasclass" data-group-id="<%= group.id %>" data-course-id="<%= @course.id %>" class="setting_group_<%= group.id %>">
<p class="p1" data-tip-left="<%= group.name.length > 6 ? group.name : ''%>">
<p class="p1">
<span><%= group.name %></span>
<em><%= group.members.count %></em>
<!--<i class="fa fa-bars" aria-hidden="true"></i>-->
</p>
</li>
<% end %>
<% end %>
<% end %>
<script>
<% unless @course.course_groups.empty? %>
<% @course.course_groups.each do |group| %>
if($(".setting_group_<%= group.id %> span").width() == 115){
$(".setting_group_<%= group.id %> p").attr("data-tip-left","<%= group.name %>");
}
<% end %>
<% end %>
</script>

View File

@ -14,8 +14,8 @@
<% end %>
<% unless @course.course_groups.empty? %>
<% @course.course_groups.each do |group| %>
<li class="<%= @group.id == group.id ? 'sheet' : '' %>" data-option="hasclass" data-group-id="<%= group.id %>" data-course-id="<%= @course.id %>" class="setting_group_<%= group.id %>">
<p class="p1" data-tip-left="<%= group.name %>">
<li class="<%= @group.id == group.id ? 'sheet' : '' %>" data-option="hasclass" data-group-id="<%= group.id %>" data-course-id="<%= @course.id %>" class="setting_group_<%= group.id %>" id = "setting_group_<%= group.id %>" >
<p class="p1">
<span><%= group.name %></span>
<em><%= group.members.count %></em>
<!--<i class="fa fa-bars" aria-hidden="true"></i>-->
@ -26,4 +26,14 @@
</ul>
</div>
<%= render :partial => "courses/settings/has_group_student_list_block" %>
</div>
</div>
<script>
<% unless @course.course_groups.empty? %>
<% @course.course_groups.each do |group| %>
if($("#setting_group_<%= group.id %> span").width() == 115){
$("#setting_group_<%= group.id %> p").attr("data-tip-left","<%= group.name %>");
}
<% end %>
<% end %>
</script>

View File

@ -46,20 +46,22 @@
</td>
</tr>
<% end %>
<% @apply_users.each_with_index do |apply, index| %>
<% user = User.find(apply.course_message_id) %>
<tr id="setting_member_<%= user.id %>">
<td><%= @teacher_count + index + 1 %></td>
<td>
<%= link_to user.show_real_name, user_path(user), :target => '_blank', :class => 'edu-txt-w140 task-hide mt5' %>
</td>
<td><span class="edu-txt-w140 task-hide mt5"><%= user.try(:login) %></span></td>
<td><%= apply.content && apply.content.include?('9') ? "教师" : "助教" %></td>
<td>
<%= link_to '同意', dealwith_apply_request_user_path(User.current,:agree=>'Y',:msg_id=>apply.id), :class=>'color-red mr5'%>
<%= link_to '拒绝', dealwith_apply_request_user_path(User.current,:agree=>'N',:msg_id=>apply.id), :class=>'color-red'%>
</td>
</tr>
<% if is_teacher %>
<% @apply_users.each_with_index do |apply, index| %>
<% user = User.find(apply.course_message_id) %>
<tr id="setting_member_<%= user.id %>">
<td><%= @teacher_count + index + 1 %></td>
<td>
<%= link_to user.show_real_name, user_path(user), :target => '_blank', :class => 'edu-txt-w140 task-hide mt5' %>
</td>
<td><span class="edu-txt-w140 task-hide mt5"><%= user.try(:login) %></span></td>
<td><%= apply.content && apply.content.include?('9') ? "教师" : "助教" %></td>
<td>
<%= link_to '同意', dealwith_apply_request_user_path(User.current,:agree=>'Y',:msg_id=>apply.id), :class=>'color-red mr5'%>
<%= link_to '拒绝', dealwith_apply_request_user_path(User.current,:agree=>'N',:msg_id=>apply.id), :class=>'color-red'%>
</td>
</tr>
<% end %>
<% end %>
</tbody>
</table>

View File

@ -14,7 +14,7 @@
<% unless @course.course_groups.empty? %>
<% @course.course_groups.each do |group| %>
<li data-option="hasclass" data-group-id="<%= group.id %>" data-course-id="<%= @course.id %>" class="setting_group_<%= group.id %>">
<p class="p1" data-tip-left="<%= group.name %>">
<p class="p1">
<span><%= group.name %></span>
<em><%= group.members.count %></em>
<!--<i class="fa fa-bars" aria-hidden="true"></i>-->
@ -26,3 +26,14 @@
</div>
<%= render :partial => "courses/settings/no_group_student_list_block" %>
</div>
<script>
<% unless @course.course_groups.empty? %>
<% @course.course_groups.each do |group| %>
if($(".setting_group_<%= group.id %> span").width() == 115){
$(".setting_group_<%= group.id %> p").attr("data-tip-left","<%= group.name %>");
}
<% end %>
<% end %>
</script>

View File

@ -1,3 +1,10 @@
<style>
.wlist_select a {
background-color:#FC7033;
color: #fff!important;
border: 1px solid #FC7033;
}
</style>
<% if curse_attachments.count != 0 %>
<% curse_attachments.each do |file| %>
<% if file.is_public? || User.current.member_of_course?(course) || User.current.admin? %>
@ -8,10 +15,15 @@
<div class="re_con_box"><span class='fr mr10 pr_join_span '><%= file.filename %>是私有资源</span></div>
<% end %>
<% end %>
<div style="text-align:center;margin-top:20px;margin-bottom:20px;" >
<div class="pages_right_min" style="width:auto; display:inline-block;">
<ul id="homework_pository_ref_pages">
<%= pagination_links_full @feedback_pages, @feedback_count, :per_page_links => false, :remote => true, :flag => true %>
</ul>
<div class="cl"></div>
</div>
</div>
<ul class="wlist">
<%= pagination_links_full @feedback_pages, @feedback_count, :per_page_links => false, :remote => true, :flag => true%>
</ul>
<% else %>
<div class="mt10 user_bg_shadow" style="background-color: #fff;padding-bottom: 10px; margin-left: 7px;">
<%= render :partial => "welcome/no_data" %>

View File

@ -13,6 +13,7 @@
<div id="codotab_con_1" class="white_bg" style="overflow-y: auto;height: 100%">
<div class="panel-header clearfix" id="top_repository" style="border-bottom:0;padding:15px;">
<% @game_challenge.challenge_chooses.each_with_index do |choose, index| %>
<% output = @game.outputs.where(:test_set_position => choose.position).first %>
<p class="font-bd font-18 color-grey3"><%= (index + 1).to_s + "." + (choose.category == 1 ? "单选题" : "多选题") %></p>
<div class="font-15 color-grey3 mb10 new_li read_only" unselectable="on" id="choose_subject_<%= index + 1 %>" style="padding: 10px 0px 10px 10px">
<textarea style="display:none;"><%= choose.subject %></textarea>
@ -22,16 +23,16 @@
<p class="ml10 mb10 ">
<span>
<% if choose.category == 1 %>
<input type="radio" <%= (choose.current_choose_outputs.try(:answer) == (i + 65).chr) ? "checked" : "" %> name="answer[<%= index + 1 %>]" category="<%= choose.category %>" value="<%= (question.position + 65).chr %>" id="result_<%= index %>_<%= i %>" class="ml-3 mr5 magic-radio ml5">
<input type="radio" <%= (output.try(:actual_output)== (i + 65).chr) ? "checked" : "" %> name="answer[<%= index + 1 %>]" category="<%= choose.category %>" value="<%= (question.position + 65).chr %>" id="result_<%= index %>_<%= i %>" class="ml-3 mr5 magic-radio ml5">
<% else %>
<!--多选-->
<input type="checkbox" <%= (choose.current_choose_outputs.try(:answer).present? && (choose.current_choose_outputs.try(:answer).include? ((i + 65).chr))) ? "checked" : "" %> name="answer[]" category="<%= choose.category %>" value="<%= (question.position + 65).chr %>" id="result_<%= index %>_<%= i %>" class="ml-3 mr5 magic-checkbox ml5">
<input type="checkbox" <%= (output.try(:actual_output).present? && (output.try(:actual_output).include? ((i + 65).chr))) ? "checked" : "" %> name="answer[]" category="<%= choose.category %>" value="<%= (question.position + 65).chr %>" id="result_<%= index %>_<%= i %>" class="ml-3 mr5 magic-checkbox ml5">
<% end %>
<label class="break-word <%=(!choose.current_choose_outputs.try(:answer).nil? && (choose.current_choose_outputs.try(:answer).include? ((i + 65).chr))) ? "color-orange05" : "" %>" for="result_<%= index %>_<%= i %>" style="top: 0px"><span><%= (question.position + 65).chr %></span>.<%= question.option_name %></label>
<label class="break-word <%=(output.try(:actual_output).present? && (output.try(:actual_output).include? ((i + 65).chr))) ? "color-orange05" : "" %>" for="result_<%= index %>_<%= i %>" style="top: 0px"><span><%= (question.position + 65).chr %></span>.<%= question.option_name %></label>
</span>
</p>
<% end %>
<input type="hidden" name="user_answer">
<input type="hidden" name="user_answer" value="<%= output.try(:actual_output) %>">
</div>
<% end %>
<!--<div class="pl5 pr5 pt10 pb10 bor-grey-e">

View File

@ -14,7 +14,7 @@
<div id="code_test">
<% if @st == 0 %>
<a href="javascript:void(0)" class="shixun-task-btn task-btn-blue mr15 mt8" onclick="training_task_submmit();">评测</a>
<% elsif @game.status != 2 %>
<% else %>
<a href="javascript:void(0)" class="shixun-task-btn task-btn-blue mr15 mt8" onclick="choice_submmit();">评测</a>
<% end %>
</div>

View File

@ -11,10 +11,10 @@
<div class="fit -scroll">
<div class="-layout-v -fit">
<div class="-flex -scroll task-padding16">
<% unless game_challenge.choose_correct_num == nil %>
<% if game_challenge.choose_correct_num != game_challenge.challenge_chooses.count %>
<% unless @game.choose_correct_num == nil %>
<% if @game.choose_correct_num != game_challenge.challenge_chooses.count %>
<p class="-text-danger mb10">
<i class="fa fa-exclamation-circle font-16" ></i><span class="ml5 mr5 -text-danger"><%= game_challenge.choose_correct_num %>/<%= game_challenge.challenge_chooses.count %></span>共有<%= game_challenge.challenge_chooses.count %>组测试集,其中有<%= game_challenge.challenge_chooses.count - game_challenge.choose_correct_num %>组测试结果不匹配。详情如下:
<i class="fa fa-exclamation-circle font-16" ></i><span class="ml5 mr5 -text-danger"><%= @game.choose_correct_num %>/<%= game_challenge.challenge_chooses.count %></span>共有<%= game_challenge.challenge_chooses.count %>组测试集,其中有<%= game_challenge.challenge_chooses.count - @game.choose_correct_num %>组测试结果不匹配。详情如下:
</p>
<% else %>
<p class="color-light-green mb10">
@ -23,14 +23,15 @@
<% end %>
<% end %>
<% game_challenge.challenge_chooses.each_with_index do |choose, index| %>
<% output = @game.outputs.where(:test_set_position => choose.position).first %>
<div class="-task-ces-box mb15 clearfix">
<div class="-task-ces-top" onclick="toggle_test_case('0', '<%= index %>')" style="cursor:pointer">
<i class="fa fa-caret-right mr5 font-16" ></i>
<span class="font-14">题目<%= index + 1 %></span>
<%# outputs = ChooseOutputs.where(:challenge_choose_id => choose.id).first %>
<% unless choose.current_choose_outputs.blank? %>
<% if output.present? %>
<%# if choose.choose_outputs.try(:answer) != choose.standard_answer %>
<% if choose.current_choose_outputs.try(:answer) == choose.standard_answer %>
<% if output.try(:actual_output) == choose.standard_answer %>
<i class="fa fa-check-circle color-light-green fr mt8 ml5 f14" ></i>
<% else %>
<i class="fa fa-exclamation-circle -text-danger fr mt8 ml5" ></i>
@ -41,11 +42,15 @@
</div>
<div class="-task-ces-info undis" id="test_case_<%= index %>">
<ul class=" font-14">
<% if choose.choose_outputs.blank? %>
<% if output.try(:actual_output).blank? %>
<li><span class="ml30">尚未提交,暂不支持查看</span></li>
<% else %>
<li><span class="-task-ces-info-left color-blue">正确选项:</span><span><%= choose.standard_answer %></span></li>
<li><span class="-task-ces-info-left color-blue">你的选项:</span><span class="color-orange"><%= choose.current_choose_outputs.try(:answer).nil? ? "无" : choose.current_choose_outputs.try(:answer) %></span></li>
<% if output.try(:actual_output) == choose.standard_answer || @game.status == 2 %>
<li><span class="-task-ces-info-left color-blue">正确选项:</span><span><%= choose.standard_answer %></span></li>
<li><span class="-task-ces-info-left color-blue">你的选项:</span><span class="color-orange"><%= output.try(:actual_output) %></span></li>
<% else %>
<li><span class="-text-danger ml30">错误,不支持查看</span></li>
<% end %>
<% end %>
</ul>
</div>

View File

@ -43,7 +43,6 @@
<% else %>
<span class="btn-cir-big fr mt8 mr15" >经验值:<%= @game_challenge.choose_score.to_i %></span>
<% end %>
</ul>
<div class="cl"></div>
<div class="-flex -relative greytab-inner">

View File

@ -1,53 +1,25 @@
<%= stylesheet_link_tag 'css/edu-common', 'css/edu-popup' %>
<% if game.challenge.st != 0 %>
<div class="task-popup-warp" style="background-color: rgba(0,0,0,0.7);top: 0px;left: 0px;">
<div class="task-popup-warp" style="background-color: rgba(0,0,0,0.7);">
<div class="task-popup-box <%= had_done == 0 ? "task-box1" : "task-box2" %>">
<a href="javascript:void(0)" class="task-popup-close" onclick="refresh_game_list();"></a>
<% if had_done == 0 %>
<div class="task-su-con">
<div class="task-su-con">
<% if had_done == 0 %>
<p class="task-su-p">恭喜您通过本关</p>
<p class="mt8"><i class="fa fa-check-circle color-light-green mr5"></i>本题正确:<span class="color-orange03">&nbsp;<%= game.challenge.choose_correct_num.to_i %>&nbsp;</span>道</p>
<p><i class="fa fa-exclamation-circle color-orange mr5"></i>本题错误:<span class="color-orange03">&nbsp;<%= game.challenge.challenge_chooses.count - game.challenge.choose_correct_num.to_i %>&nbsp;</span>道</p>
</div>
<% else %>
<div class="task-su-con" style="position: absolute;width: 100%;z-index:3;padding-top: 63px;">
<img src="/images/task/task-success02.png"/>
<a href="<%= myshixun_game_path(myshixun, :index => 1) %>" class="task-su-btn-white mt30" onclick="hideModal();" data-remote="true">查看光辉历史</a>
</div>
<div style="text-align:center;background-color: #fff;border-radius: 0px 0px 8px 8px;width: 200px;position:absolute;z-index:2;height:100px;bottom:-30px;left:50%;margin-left:-100px;">
<p class="mt25"><i class="fa fa-check-circle color-light-green mr5"></i>本题正确:<span class="color-orange03">&nbsp;<%= game.challenge.choose_correct_num.to_i %>&nbsp;</span>道</p>
<p><i class="fa fa-exclamation-circle color-orange mr5"></i>本题错误:<span class="color-orange03">&nbsp;<%= game.challenge.challenge_chooses.count - game.challenge.choose_correct_num.to_i %>&nbsp;</span>道</p>
</div>
<% end %>
</div>
<% if had_done == 0 %>
<%= link_to "下 一 关", {:controller => 'games', :action => "next_step", :id => game, :myshixun_id => myshixun}, :class => "task-su-btn", :onclick => "hideModal();", :remote => true %>
<% end %>
</div>
<% else %>
<div class="task-popup-warp" style="background-color: rgba(0,0,0,0.7);">
<div class="task-popup-box <%= had_done == 0 ? "task-box1" : "task-box2" %>">
<a href="javascript:void(0)" class="task-popup-close" onclick="refresh_game_list();"></a>
<div class="task-su-con">
<% if had_done == 0 %>
<p class="task-su-p">恭喜您通过本关</p>
<%= link_to "下 一 关", {:controller => 'games', :action => "next_step", :id => game, :myshixun_id => myshixun}, :class => "task-su-btn", :onclick => "hideModal();", :remote => true %>
<% else %>
<a href="<%= myshixun_game_path(myshixun, :index => 1) %>" class="task-su-btn-white mt50" onclick="hideModal();" data-remote="true">查看光辉历史</a>
<% end %>
</div>
</div>
<%= link_to "下 一 关", {:controller => 'games', :action => "next_step", :id => game, :myshixun_id => myshixun}, :class => "task-su-btn", :onclick => "hideModal();", :remote => true %>
<% else %>
<a href="<%= myshixun_game_path(myshixun, :index => 1) %>" class="task-su-btn-white mt50" onclick="hideModal();" data-remote="true">查看光辉历史</a>
<% end %>
</div>
<% end %>
</div>
</div>
<script>
function refresh_game_list(){
$.ajax({
url: "<%= refresh_game_list_myshixun_game_path(game, :myshixun_id => myshixun) %>",
dataType: "script"
});
function refresh_game_list(){
$.ajax({
url: "<%= refresh_game_list_myshixun_game_path(game, :myshixun_id => myshixun) %>",
dataType: "script"
});
//$("#all_task_show").css("display","none");
}
//$("#all_task_show").css("display","none");
}
</script>

View File

@ -11,7 +11,7 @@
$("#all_task_show").hide();
fadein = 0;
// 选择题
<% if params[:choose] == "1" %>
<% if params[:choose] == "true" %>
<% if @had_done == 0 %>
$("#code_estimate").html("<a href='<%= next_step_myshixun_game_path(@game, :myshixun_id => @myshixun) %>' class='task-btn task-btn-blue mr15 mt8' id='next_step' data-remote='true'>下一关</a>");
var htmlvalue = "<%= j (render :partial => 'games/pass_game_show', :locals => { :game=> @game, :myshixun => @myshixun, :had_done => 0}) %>";

View File

@ -8,6 +8,9 @@
<%= link_to("题库选用", user_import_homeworks_user_path(User.current.id, :select_course => @course.id, :homework_type =>@homework_type), :class => "white-btn orange-btn fr mr10",:remote => true,:title=>"导入自己发布过的作业,或者共享题库中的作业") %>
<% else %>
<%= link_to '选用实训', shixuns_homework_common_index_path(:course => @course.id), :remote => true, :class => "white-btn orange-btn fr mr20", :title => "新建作业" %>
<% if User.current.admin? %>
<%= link_to("实训统计", shixun_statistics_course_path(@course, :format => "xls"), :class => "white-btn orange-btn fr mr10",:title=>"实训作业统计") %>
<% end %>
<% end %>
<% end %>
<!--<a href="<%#= export_course_member_excel_course_path(@course) %>" class="edu-btn fr mr10">导出成绩</a>-->

View File

@ -18,4 +18,14 @@
</li>
<% end %>
</ul>
<% end %>
<% end %>
<script>
<% unless @course.course_groups.empty? %>
<% @course.course_groups.each do |group| %>
if($("#course_group_<%=group.id %> a").width() == 105){
$("#course_group_<%=group.id %> a").attr("data-tip-left","<%= group.name %>");
}
<% end %>
<% end %>
</script>

View File

@ -39,7 +39,9 @@
</li>
<% end %>
<li><a href="<%= collaborators_shixun_path(@shixun) %>" class="<%= params[:action] == "collaborators" ? "active" : "" %>">合作者</a></li>
<li><a href="<%= statistics_students_shixun_path(@shixun) %>"class="<%= params[:action] == "statistics_students" ? "active" : "" %>">学员统计</a></li>
<% if @shixun.shixun_status == "已发布" %>
<li><a href="<%= statistics_students_shixun_path(@shixun) %>"class="<%= params[:action] == "statistics_students" ? "active" : "" %>">学员统计</a></li>
<% end %>
<% if User.current.manager_of_shixun?(@shixun) %>
<li><a href="<%= settings_shixun_path(@shixun) %>" class="<%= params[:action] == "settings" ? "active" : "" %>">配置</a></li>
<% end %>

View File

@ -20,11 +20,11 @@
<%= link_to @course.name, course_path(@course), :title => "班级" %> &gt; <%= link_to "讨论区列表", course_boards_path(@course) %>
</p>
<div class="edu-con-top">
<div class="edu-con-top box_bg_shandow bor-grey-e">
<p class="ml15 color-grey">编辑帖子</p>
</div>
<div class="panel-content-box clearfix mt15">
<div class="panel-content-box clearfix mt15 box_bg_shandow bor-grey-e">
<%= form_for @message, :url => update_board_message_path(@message.board_id, @message), :html => {:id => 'message-form'} do |f| %>
<%= render :partial => "form_course", :locals => {:f => f} %>
<% end %>

View File

@ -7,14 +7,14 @@
<div class="task_popup_con">
<div class="newupload_conbox clearfix">
<%= form_tag url_for(shixun_members_added_shixun_path(@shixun)), :remote => true, :method => :post, :id => 'add_collaborators_form' do |f| %>
<div class="left fl" style="width:530px;">
<div class="mb10 edu-position" style="width:530px;">
<div class="left fl" style="width:560px;">
<div class="mb10 edu-position" style="width:560px;">
<input type="hidden" value="<%= @shixun.identifier %>" id="shixun_collaborators_id">
<input class="task-form-100 task-height-40 panel-box-sizing" id="search_not_collaborators" placeholder="输入用户的真实姓名进行搜索" type="text">
<a href="javascript:void(0);" class="edu-btn-search font-16 color-grey mt5"><i class="fa fa-search"></i></a>
</div>
<div class="clearfix mb15">
<ul class="upload_select_box fl" style="overflow-y:auto;width:510px;" id="search_not_teachers_list">
<ul class="upload_select_box fl" style="overflow-y:auto;width:540px;" id="search_not_teachers_list">
<%#= render :partial => 'courses/settings/search_not_teachers_list' %>
</ul>
</div>

View File

@ -16,15 +16,14 @@
<% @statistics.each do |statistics| %>
<tr>
<td class="" style="display: flex;align-items: center;justify-content: center;">
<!--<img class="picture" src="/images/../images/bigdata/bigdata-logo.png" alt="头像" style="width:36px;height:36px;border-radius:18px;">-->
<%= link_to image_tag(url_to_avatar(statistics.owner), :width => "36", :height => "36", :alt => "头像"), user_path(statistics.owner), :target => '_blank', :class => "", :style => "border-radius:18px;"%>
<%= link_to image_tag(url_to_avatar(statistics.owner), :width => "36", :height => "36", :alt => "头像", :style => "border-radius:18px;padding-top:15px;"), user_path(statistics.owner), :target => '_blank', :class => ""%>
</td>
<td >
<td style = "padding-left:50px;width:150px">
<%= link_to statistics.owner.try(:show_name), user_path(statistics.owner), :class => "panel-table-name hide fl color-grey" %>
</td>
<td><%= format_time(statistics.created_at) %> 开启</td>
<td>
<div style="padding:10px 0;background:#fff;" class="fl mt5">
<td style = "padding-left:100px;width:550px">
<div style="padding:10px 0;" class="fl mt5">
<div class="panel-slider-bg ">
<span class="panel-slider-inner03 " style = "width:<%= statistics.current_stage*100.to_f / statistics.games.count %>%"></span>
</div>

View File

@ -3,7 +3,7 @@
<div class="edu-class-container">
<p class="mb10"><i class="fa fa-map-marker mr5 color-grey"></i><a href="<%= course_path(@course) %>"><%= @course.name %></a> > <a href="<%= homework_common_index_path(:course => @course.id, :homework_type => @homework.homework_type) %>"><%= @homework.homework_type_ch %>作业</a> >
<%#= link_to get_hw_index(@homework, @is_teacher, @homework.homework_type) + 1, student_work_index_path(:homework => @homework.id) %>
<a href="<%= student_work_index_path(:homework => @homework.id) %>">#<%= get_hw_index(@homework, @is_teacher, @homework.homework_type) + 1 %></a>
<a href="<%= student_work_index_path(:homework => @homework.id) %>">#<%= get_hw_index(@homework, @is_teacher, @homework.homework_type) + 1 %></a> >
<% if @is_teacher || @work.user == User.current || (@homework.homework_detail_manual.comment_status != 3 && @homework.homework_detail_manual.comment_status != 4) %>
<%= link_to @work.user.try(:show_real_name), user_path(@work.user) %>
<% else %>

View File

@ -13,7 +13,7 @@
<a href="<%= user_fanslist_user_path(@user) %>" class="font-16 tab_type" id="user_fans_count"><%= str %>的粉丝 <%= @user_fanlist_count %></a>
</li>
</ul>
<div id="edu-tab-con-1" class="box_bg_shandow">
<div id="edu-tab-con-1" class="box_bg_shandow" style = "padding-top:18px;">
<div class="clearfix " id="user_fans_list">
<%= render :partial => "user_watcher_or_fans_list", :locals => {:users => @user_fanlist, :user_count => @user_fanlist_count, :user_pages => @fans_pages} %>
</div>

View File

@ -13,7 +13,7 @@
<a href="<%= user_fanslist_user_path(@user) %>" class="font-16 tab_type" id="user_fans_count"><%= str %>的粉丝 <%= @user_fanlist_count %></a>
</li>
</ul>
<div id="edu-tab-con-1" class="box_bg_shandow mh650">
<div id="edu-tab-con-1" class="box_bg_shandow mh650" style = "padding-top:18px;">
<div class="clearfix" id="user_watch_list">
<%= render :partial => "user_watcher_or_fans_list", :locals => {:users => @user_watchlist, :user_count => @user_watchlist_count, :user_pages => @watchlist_pages} %>
</div>

View File

@ -1767,6 +1767,7 @@ RedmineApp::Application.routes.draw do
post 'choose_course_group'
match 'update_position', :via => [:get, :post]
post 'delete_course_students'
get 'shixun_statistics'
end
collection do
match 'join_private_courses', :via => [:get, :post]

View File

@ -328,7 +328,7 @@ html>body #ajax-indicator { position: fixed; }
background-image: url(/images/loading.gif);
padding-left: 26px;
vertical-align: bottom;
z-index:999;
z-index:100000;
}

View File

@ -13,13 +13,13 @@
.task-popup-warp{ width: 100%; height:100%; background:black; position:fixed;}
.task-popup-box{ position: relative; margin:150px auto 0px; }
.task-box1{ width:428px; height:420px;background:url(/images/task/task-success.png) 0px 0px no-repeat;}
.task-box2{ width:496px; height:373px;position: relative;}/*background:url(/images/task/task-success02.png) 0px 50px no-repeat;*/
.task-box2{ width:496px; height:373px;background:url(/images/task/task-success02.png) 0px 50px no-repeat;}
a.task-popup-close{ display: block; background:url(/images/task/task-close.png) 0px 0px no-repeat; width: 31px; height: 31px; position:absolute; right:5px; top:100px;}
a:hover.task-popup-close{background:url(/images/task/task-close.png) -40px 0px no-repeat; }
.task-su-con{ text-align: center; padding-top:285px;}
.task-su-p{ font-size: 20px; color:#ee4a1f; font-weight: bold;}
a.task-su-btn{display: block;background:url(/images/task/task-su-btn-jie.png) 0px -64px no-repeat; width: 138px; height: 53px;color:#ee4a1f; line-height: 50px; text-align: center; font-size: 16px; margin:20px auto;}
a:hover.task-su-btn{background:url(/images/task/task-su-btn-jie.png) 0px 0px no-repeat;height: 53px;}
a.task-su-btn{display: block;background:url(/images/task/task-su-btn.png) 0px -64px no-repeat; width: 138px; height: 57px;color:#ee4a1f; line-height: 50px; text-align: center; font-size: 16px; margin:20px auto;}
a:hover.task-su-btn{background:url(/images/task/task-su-btn.png) 0px 0px no-repeat; }
a.task-su-btn-white{ display: inline-block; padding:8px 25px; border:1px solid #fff; color:#fff; text-align: center; border-radius:5px; font-size:14px;}
a:hover.task-su-btn-white{ color: #ee4a1f; border:1px solid #ee4a1f; }