commit
b6bf0aafb1
|
@ -8,15 +8,25 @@ class Exercise < ActiveRecord::Base
|
||||||
has_many :users, :through => :exercise_users #该测试被哪些用户提交答案过
|
has_many :users, :through => :exercise_users #该测试被哪些用户提交答案过
|
||||||
# 课程消息
|
# 课程消息
|
||||||
has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy
|
has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy
|
||||||
after_create :acts_as_course_message
|
after_save :acts_as_course_message
|
||||||
def acts_as_course_message
|
def acts_as_course_message
|
||||||
if self.course
|
if self.course
|
||||||
if self.exercise_status == 2 #未发布
|
if self.exercise_status == 2 && self.course_messages.where(:status => 2).blank? #已发布
|
||||||
|
self.delay.send_exercise_message_delay
|
||||||
#self.course.members.each do |m|
|
#self.course.members.each do |m|
|
||||||
self.course_messages << CourseMessage.create(:user_id => User.current.id, :course_id => self.course_id, :viewed => false,:status=>2)
|
#self.course_messages << CourseMessage.create(:user_id => User.current.id, :course_id => self.course_id, :viewed => false,:status=>2)
|
||||||
#end
|
#end
|
||||||
# else
|
else
|
||||||
# self.course_messages.destroy_all 这里的destory_all值得商榷。因为我这里是通过status来控制不同的status的
|
#self.course_messages.destroy_all #这里的destory_all值得商榷。因为我这里是通过status来控制不同的status的
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
#测验通知delay
|
||||||
|
def send_exercise_message_delay
|
||||||
|
self.course.members.each do |m|
|
||||||
|
if m.user_id != self.user_id
|
||||||
|
self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.course_id, :viewed => false ,:status=>2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -153,7 +153,7 @@
|
||||||
<%= render :partial => 'exercise/total_questions_score', :locals => {:exercise => exercise, :current_score => current_score} %>
|
<%= render :partial => 'exercise/total_questions_score', :locals => {:exercise => exercise, :current_score => current_score} %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="ur_buttons" style="width: 297px;">
|
<div class="ur_buttons" style="width: 298px;">
|
||||||
<%= link_to "返回", exercise_index_path(:course_id => @course.id),:class => "btn_grey_64_width" %>
|
<%= link_to "返回", exercise_index_path(:course_id => @course.id),:class => "btn_grey_64_width" %>
|
||||||
<a href="javascript:void(0)" onclick="send_exercise_to_course();" class="btn_green_64_width ml10 mr10">发送</a>
|
<a href="javascript:void(0)" onclick="send_exercise_to_course();" class="btn_green_64_width ml10 mr10">发送</a>
|
||||||
<% if exercise.exercise_status == 1 %>
|
<% if exercise.exercise_status == 1 %>
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
<% if @homework.homework_type == 1 %>
|
<% if @homework.homework_type == 1 %>
|
||||||
<p class="c_red mb5">已有<%=committed_work_count %>个学生提交作品,不允许再修改作业类型。</p>
|
<p class="c_red mb5">已有<%=committed_work_count %>个学生提交作品,不允许再修改作业类型。</p>
|
||||||
<% elsif @homework.homework_type == 2 %>
|
<% elsif @homework.homework_type == 2 %>
|
||||||
<p class="c_red mb5">已有<%=committed_work_count %>个学生提交作品,不允许再修改作业类型和测试集。</p>
|
<p class="c_red mb5">已有<%=committed_work_count %>个学生提交作品,不允许再修改作业类型。</p>
|
||||||
<% elsif @homework.homework_type == 3 %>
|
<% elsif @homework.homework_type == 3 %>
|
||||||
<p class="c_red mb5">已有<%=committed_work_count %>个学生提交作品,不允许再修改作业类型和分组设置(可扩大分组范围)。</p>
|
<p class="c_red mb5">已有<%=committed_work_count %>个学生提交作品,不允许再修改作业类型和分组设置(可扩大分组范围)。</p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
@ -107,7 +107,7 @@
|
||||||
<em></em>
|
<em></em>
|
||||||
<font></font>
|
<font></font>
|
||||||
现共有
|
现共有
|
||||||
<span class="c_red"> <%= student_work.student_works_scores.where("reviewer_role = 3 and appeal_status != 3").group_by(&:user_id).count%> </span>
|
<span class="c_red"> <%= student_work.student_works_scores.where(:reviewer_role => 3).group_by(&:user_id).count%> </span>
|
||||||
名学生进行了匿评,平均分为
|
名学生进行了匿评,平均分为
|
||||||
<span class="c_red"> <%= format("%.1f",student_work.student_score)%> </span>分。
|
<span class="c_red"> <%= format("%.1f",student_work.student_score)%> </span>分。
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -68,11 +68,34 @@
|
||||||
<%= link_to "加入班级",join_private_courses_courses_path,:remote => true,:class => "hw_btn_green fr mt5",:method => "post"%>
|
<%= link_to "加入班级",join_private_courses_courses_path,:remote => true,:class => "hw_btn_green fr mt5",:method => "post"%>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if User.current == course.teacher || User.current.admin? %>
|
<% if User.current == course.teacher || User.current.admin? %>
|
||||||
<a href="javascript:void(0)" onclick="archive_course(<%=course.id %>, 0, 1);" class="btn_grey_big fr mt5 mr5" style="width: 56px;">归档</a>
|
<div class="pr">
|
||||||
|
<a href="javascript:void(0)" onclick="archive_course(<%=course.id %>, 0, 1);" onmouseover="$('#archive_notice_<%=course.id %>').show();" onmouseout="$('#archive_notice_<%=course.id %>').hide();"
|
||||||
|
class="btn_grey_big fr mt5 mr5" style="width: 56px;">归档</a>
|
||||||
|
<div class="archive_course_notice fontGrey2 none" id="archive_notice_<%=course.id %>" style="width: 230px; right: -275px;">
|
||||||
|
<em></em>
|
||||||
|
<span></span>
|
||||||
|
<p class="mt5 mb5 break_word">
|
||||||
|
此班级的信息将不再显示<br/>
|
||||||
|
您和您的学生将不能在此班级中继续互动<br/>
|
||||||
|
但您可以点击“归档管理”重新恢复
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<% if User.current == course.teacher || User.current.admin? %>
|
<% if User.current == course.teacher || User.current.admin? %>
|
||||||
<a href="javascript:void(0)" onclick="archive_course(<%=course.id %>, 1, 1);" class="btn_grey_big fr mt5" style="width: 56px;">恢复</a>
|
<div class="pr">
|
||||||
|
<a href="javascript:void(0)" onclick="archive_course(<%=course.id %>, 1, 1);" onmouseover="$('#archive_notice_<%=course.id %>').show();" onmouseout="$('#archive_notice_<%=course.id %>').hide();"
|
||||||
|
class="btn_grey_big fr mt5" style="width: 56px;">恢复</a>
|
||||||
|
<div class="archive_course_notice fontGrey2 none" id="archive_notice_<%=course.id %>" style="width: 230px; right: -275px; top: -10px;">
|
||||||
|
<em style="top: 21px;"></em>
|
||||||
|
<span style="top: 21px;"></span>
|
||||||
|
<p class="mt5 mb5 break_word">
|
||||||
|
此班级的信息将恢复显示<br/>
|
||||||
|
您和您的学生将可以重新在此班级中互动
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
|
|
|
@ -26,9 +26,9 @@
|
||||||
<div class="pr">
|
<div class="pr">
|
||||||
<a href="javascript:void(0)" onclick="archive_course(<%=course.id %>, <%=course.is_delete %>, 0);" onmouseover="$('#archive_notice_<%=course.id %>').show();" onmouseout="$('#archive_notice_<%=course.id %>').hide();"
|
<a href="javascript:void(0)" onclick="archive_course(<%=course.id %>, <%=course.is_delete %>, 0);" onmouseover="$('#archive_notice_<%=course.id %>').show();" onmouseout="$('#archive_notice_<%=course.id %>').hide();"
|
||||||
class="btn_grey_big fr mt5 mr15" style="width: 56px;"><%= course.is_delete == 0 ? '归档' : '恢复' %></a>
|
class="btn_grey_big fr mt5 mr15" style="width: 56px;"><%= course.is_delete == 0 ? '归档' : '恢复' %></a>
|
||||||
<div class="archive_course_notice fontGrey2 none" id="archive_notice_<%=course.id %>" style="width: 230px;">
|
<div class="archive_course_notice fontGrey2 none" id="archive_notice_<%=course.id %>" style="width: 230px; top: -10px;">
|
||||||
<em></em>
|
<em style="top: 21px;"></em>
|
||||||
<span></span>
|
<span style="top: 21px;"></span>
|
||||||
<p class="mt5 mb5 break_word">
|
<p class="mt5 mb5 break_word">
|
||||||
<% if course.is_delete == 0 %>
|
<% if course.is_delete == 0 %>
|
||||||
此班级的信息将不再显示<br/>
|
此班级的信息将不再显示<br/>
|
||||||
|
|
|
@ -368,6 +368,7 @@
|
||||||
<span class="fr mr10 mt3">或</span>
|
<span class="fr mr10 mt3">或</span>
|
||||||
<a href="javascript:void(0);" id="new_message_cancel_btn" class="fr mr10 mt3">取消</a>
|
<a href="javascript:void(0);" id="new_message_cancel_btn" class="fr mr10 mt3">取消</a>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<p id="modify_inputs_notice" class="mt3 fr none c_red mr10"></p>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -8,15 +8,13 @@
|
||||||
<% homework.homework_samples.each_with_index do |sample, index| %>
|
<% homework.homework_samples.each_with_index do |sample, index| %>
|
||||||
<div class="mt10" style="margin-left:57px;">
|
<div class="mt10" style="margin-left:57px;">
|
||||||
<label class="fl fontGrey2 mr10 mt5 w20" name="sample_inputs_label"><%= index+1 %> </label>
|
<label class="fl fontGrey2 mr10 mt5 w20" name="sample_inputs_label"><%= index+1 %> </label>
|
||||||
<textarea class="InputBox w547 fl mr5" placeholder="样例输入" name="sample[input][]" <%= not_allow_select ? 'disabled' : '' %>><%= sample.input %></textarea>
|
<textarea class="InputBox w547 fl mr5" placeholder="样例输入" name="sample[input][]"><%= sample.input %></textarea>
|
||||||
<% unless not_allow_select %>
|
<a href="javascript:void(0);" class="fl icon_add sample_icon_add" title="增加样例组"></a>
|
||||||
<a href="javascript:void(0);" class="fl icon_add sample_icon_add" title="增加样例组"></a>
|
<% if index != 0 %>
|
||||||
<% if index != 0 %>
|
<a href="javascript:void(0);" class="fl icon_remove sample_icon_remove" title="删除样例组"></a>
|
||||||
<a href="javascript:void(0);" class="fl icon_remove sample_icon_remove" title="删除样例组"></a>
|
|
||||||
<% end %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
<textarea class="InputBox w547 fl ml30 mt10" placeholder="样例输出" name="sample[output][]" <%= not_allow_select ? 'disabled' : '' %>><%= sample.output %></textarea>
|
<textarea class="InputBox w547 fl ml30 mt10" placeholder="样例输出" name="sample[output][]"><%= sample.output %></textarea>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
@ -40,17 +38,16 @@
|
||||||
<span class="f12 c_red mt5 fr">温馨提示:您可以在发布作业后,在作业"模拟答题"中进行标准代码的检测。</span>
|
<span class="f12 c_red mt5 fr">温馨提示:您可以在发布作业后,在作业"模拟答题"中进行标准代码的检测。</span>
|
||||||
|
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
|
<div id="input_boxes_div">
|
||||||
<% if edit_mode && homework.is_program_homework? %>
|
<% if edit_mode && homework.is_program_homework? %>
|
||||||
<% homework.homework_tests.each_with_index do |test, index| %>
|
<% homework.homework_tests.each_with_index do |test, index| %>
|
||||||
<div class="mt10" style="margin-left:57px;">
|
<div class="mt10" style="margin-left:57px;">
|
||||||
<label class="fl fontGrey2 mr10 mt5 w20" name="inputs_label"><%= index+1 %> </label>
|
<label class="fl fontGrey2 mr10 mt5 w20" name="inputs_label"><%= index+1 %> </label>
|
||||||
<textarea class="InputBox w265 fl mr10" placeholder="测试输入" name="program[input][]" <%= not_allow_select ? 'disabled' : '' %>><%= test.input %></textarea>
|
<textarea class="InputBox w265 fl mr10" placeholder="测试输入" name="program[input][]"><%= test.input %></textarea>
|
||||||
<textarea class="InputBox w265 fl mr5" placeholder="测试输出" name="program[output][]" <%= not_allow_select ? 'disabled' : '' %>><%= test.output %></textarea>
|
<textarea class="InputBox w265 fl mr5" placeholder="测试输出" name="program[output][]"><%= test.output %></textarea>
|
||||||
<% unless not_allow_select %>
|
<a href="javascript:void(0);" class=" fl icon_add test_icon_add" title="增加测试组"></a>
|
||||||
<a href="javascript:void(0);" class=" fl icon_add test_icon_add" title="增加测试组"></a>
|
<% if index != 0 %>
|
||||||
<% if index != 0 %>
|
<a href="javascript:void(0);" class=" fl icon_remove test_icon_remove" title="删除测试组"></a>
|
||||||
<a href="javascript:void(0);" class=" fl icon_remove test_icon_remove" title="删除测试组"></a>
|
|
||||||
<% end %>
|
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -65,6 +62,7 @@
|
||||||
<div class="cl"></div>
|
<div class="cl"></div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -74,6 +72,10 @@
|
||||||
bt.LEFT_DELIMITER = '<!';
|
bt.LEFT_DELIMITER = '<!';
|
||||||
bt.RIGHT_DELIMITER = '!>';
|
bt.RIGHT_DELIMITER = '!>';
|
||||||
|
|
||||||
|
<% if not_allow_select %>
|
||||||
|
$("#input_boxes_div .InputBox").on('focus', modify_input_notice);
|
||||||
|
<% end %>
|
||||||
|
|
||||||
$("#programHomework").on('click', 'a.test_icon_add', function () {
|
$("#programHomework").on('click', 'a.test_icon_add', function () {
|
||||||
var html = bt('t:test-answer-list', null);
|
var html = bt('t:test-answer-list', null);
|
||||||
$(this).parent('.mt10').after(html);
|
$(this).parent('.mt10').after(html);
|
||||||
|
@ -90,6 +92,9 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$(inputs[inputs.length - 1]).focus();
|
$(inputs[inputs.length - 1]).focus();
|
||||||
|
<% if not_allow_select %>
|
||||||
|
$("#input_boxes_div .InputBox").on('focus', modify_input_notice);
|
||||||
|
<% end %>
|
||||||
});
|
});
|
||||||
$("#programHomework").on('click', 'a.test_icon_remove', function () {
|
$("#programHomework").on('click', 'a.test_icon_remove', function () {
|
||||||
$(this).parent('.mt10').remove();
|
$(this).parent('.mt10').remove();
|
||||||
|
@ -152,4 +157,9 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
function modify_input_notice(){
|
||||||
|
$("#modify_inputs_notice").html("修改测试集后请通知学生重新提交作品");
|
||||||
|
$("#modify_inputs_notice").show();
|
||||||
|
}
|
||||||
</script>
|
</script>
|
Loading…
Reference in New Issue