diff --git a/app/controllers/bids_controller.rb b/app/controllers/bids_controller.rb index 8eaf20716..17a20b0d5 100644 --- a/app/controllers/bids_controller.rb +++ b/app/controllers/bids_controller.rb @@ -514,7 +514,7 @@ class BidsController < ApplicationController (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = 3123) AS m_score FROM homework_attaches INNER JOIN homework_evaluations ON homework_evaluations.homework_attach_id = homework_attaches.id - WHERE homework_attaches.bid_id = #{@bid.id} AND homework_evaluations.user_id = #{User.current.id}) AS table1 + WHERE homework_attaches.bid_id = #{@bid.id} AND homework_evaluations.user_id = #{User.current.id} ORDER BY s_score DESC) AS table1 WHERE table1.m_score IS NULL") @is_student_batch_homework = true @cur_type = 4 @@ -1004,27 +1004,37 @@ class BidsController < ApplicationController # 启动匿评 def start_anonymous_comment @bid = Bid.find(params[:id]) - homeworks = @bid.homeworks - users = homeworks.map { |h| h.user } - - @start_index = rand(homeworks.size) - while users[0] == homeworks[@start_index].user - @start_index = rand(homeworks.size) - end + if(@bid.comment_status == 0) + homeworks = @bid.homeworks + if(homeworks && homeworks.count >= 4) + @bid.update_column('comment_status', 1) + users = homeworks.map { |h| h.user } - 3.times do |i| - homework_start_index = @start_index + i - users.each_with_index do |user, index| - actual_index = homework_start_index + index - actual_index = (actual_index < homeworks.size ? actual_index : actual_index - homeworks.size) - if user != homeworks[actual_index] - @homework_evaluation = HomeworkEvaluation.new(user_id: user.id, homework_attach_id: homeworks[actual_index].id) - @homework_evaluation.save + @start_index = rand(homeworks.size) + while users[0] == homeworks[@start_index].user + @start_index = rand(homeworks.size) end + + 3.times do |i| + homework_start_index = @start_index + i + users.each_with_index do |user, index| + actual_index = homework_start_index + index + actual_index = (actual_index < homeworks.size ? actual_index : actual_index - homeworks.size) + if user != homeworks[actual_index] + @homework_evaluation = HomeworkEvaluation.new(user_id: user.id, homework_attach_id: homeworks[actual_index].id) + @homework_evaluation.save + end + end + end + # 修改状态为 '启动匿评' + #@bid.update_column('comment_status', 1) + @statue = 1 + else + @statue = 2 end + else + @statue = 3 end - # 修改状态为 '启动匿评' - @bid.update_column('comment_status', 1) respond_to do |format| format.js diff --git a/app/controllers/homework_attach_controller.rb b/app/controllers/homework_attach_controller.rb index ff98475ae..12aa5860f 100644 --- a/app/controllers/homework_attach_controller.rb +++ b/app/controllers/homework_attach_controller.rb @@ -21,8 +21,14 @@ class HomeworkAttachController < ApplicationController #获取未批作业列表 def get_not_batch_homework - sort, direction = params[:sort], params[:direction] - order_by = sort == 'socre'? "s_score #{direction}" : "created_at #{direction}" + sort, direction = params[:sort] || "s_socre", params[:direction] || "desc" + if sort == 't_socre' + order_by = "t_score #{direction}" + elsif sort == 's_socre' + order_by = "s_score #{direction}" + elsif sort == 'time' + order_by = "created_at #{direction}" + end teachers = find_course_teachers @course all_homework_list = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT * FROM (SELECT homework_attaches.*, (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN #{teachers}) AS t_score, @@ -41,9 +47,14 @@ class HomeworkAttachController < ApplicationController #获取已评作业列表 def get_batch_homeworks - sort, direction = params[:sort], params[:direction] - teacher_proportion = get_teacher_proportion @bid - order_by = sort == 'socre'? "(CASE WHEN t_score IS NULL THEN 0 ELSE t_score * #{teacher_proportion} END + CASE WHEN s_score IS NULL THEN 0 ELSE s_score * #{1 - teacher_proportion} END) #{direction}" : "created_at #{direction}" + sort, direction = params[:sort] || "s_socre", params[:direction] || "desc" + if sort == 't_socre' + order_by = "t_score #{direction}" + elsif sort == 's_socre' + order_by = "s_score #{direction}" + elsif sort == 'time' + order_by = "created_at #{direction}" + end teachers = find_course_teachers @course all_homework_list = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT * FROM (SELECT homework_attaches.*, (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id IN #{teachers} and stars IS NOT NULL) AS t_score, @@ -62,9 +73,14 @@ class HomeworkAttachController < ApplicationController #获取所有作业列表 def get_homeworks - sort, direction = params[:sort], params[:direction] - teacher_proportion = get_teacher_proportion @bid - order_by = sort == 'socre'? "(CASE WHEN t_score IS NULL THEN 0 ELSE t_score * #{teacher_proportion} END + CASE WHEN s_score IS NULL THEN 0 ELSE s_score * #{1 - teacher_proportion} END) #{direction}" : "created_at #{direction}" + sort, direction = params[:sort] || "s_socre", params[:direction] || "desc" + if sort == 't_socre' + order_by = "t_score #{direction}" + elsif sort == 's_socre' + order_by = "s_score #{direction}" + elsif sort == 'time' + order_by = "created_at #{direction}" + end teachers = find_course_teachers @course all_homework_list = HomeworkAttach.eager_load(:attachments,:user,:rate_averages).find_by_sql("SELECT homework_attaches.*, (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id in #{teachers}) AS t_score, @@ -90,7 +106,7 @@ class HomeworkAttachController < ApplicationController (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = 3123) AS m_score FROM homework_attaches INNER JOIN homework_evaluations ON homework_evaluations.homework_attach_id = homework_attaches.id - WHERE homework_attaches.bid_id = #{@bid.id} AND homework_evaluations.user_id = #{User.current.id}) AS table1 + WHERE homework_attaches.bid_id = #{@bid.id} AND homework_evaluations.user_id = #{User.current.id} ORDER BY s_score DESC) AS table1 WHERE table1.m_score IS NULL") @cur_page = params[:page] || 1 @cur_type = 4 diff --git a/app/helpers/watchers_helper.rb b/app/helpers/watchers_helper.rb index 166dfd0ec..298331c69 100644 --- a/app/helpers/watchers_helper.rb +++ b/app/helpers/watchers_helper.rb @@ -99,7 +99,7 @@ module WatchersHelper # 主讲教师不允许退出课程 return '' if user.id == course.tea_id || course.is_public == 0 joined = user.member_of_course?(course) - text = joined ? l(:label_exit_course) : l(:label_join_course) + text = joined ? l(:label_exit_course) : l(:label_new_join) url_t = join_path(:object_id => course.id) url_f = try_join_path(:object_id => course.id) method = joined ? 'delete' : 'post' diff --git a/app/views/bids/_bid_homework_show.html.erb b/app/views/bids/_bid_homework_show.html.erb index 0c38335bf..4ed9a9015 100644 --- a/app/views/bids/_bid_homework_show.html.erb +++ b/app/views/bids/_bid_homework_show.html.erb @@ -37,9 +37,9 @@ <% case bid.comment_status %> <% when 0 %> - <%= link_to '启动匿评', start_anonymous_comment_bid_path(bid), id: "#{bid.id}_start_anonymous_comment", remote: true %> + <%= link_to '启动匿评', start_anonymous_comment_bid_path(bid), id: "#{bid.id}_start_anonymous_comment", remote: true, :confirm => "开启匿评后学生将不能对作业进行提交、修改、删除等操作\n是否确定开启匿评?" %> <% when 1 %> - <%= link_to '关闭匿评', stop_anonymous_comment_bid_path(bid), id: "#{bid.id}_stop_anonymous_comment", remote: true %> + <%= link_to '关闭匿评', stop_anonymous_comment_bid_path(bid), id: "#{bid.id}_stop_anonymous_comment", remote: true, :confirm => "关闭匿评后学生将不能对作业进行评分\n是否确定关闭匿评?" %> <% when 2 %> 匿评结束 <% end %> diff --git a/app/views/bids/_homework.html.erb b/app/views/bids/_homework.html.erb index 458ed68cc..673ea2674 100644 --- a/app/views/bids/_homework.html.erb +++ b/app/views/bids/_homework.html.erb @@ -35,8 +35,10 @@ $('#ajax-modal').html('<%= escape_javascript(render :partial => 'homework_attach/praise_alert') %>'); showModal('ajax-modal', '480px'); $('#ajax-modal').css('height','240px'); - $('#ajax-modal').before("" + + $('#ajax-modal').before("" + ""); + $('#ajax-modal').parent().css("top","").css("left","").css("width","511"); + $('#ajax-modal').parent().addClass("alert_praise"); <% end %> } diff --git a/app/views/bids/_homework_form.html.erb b/app/views/bids/_homework_form.html.erb index 063daa12c..de4c16960 100644 --- a/app/views/bids/_homework_form.html.erb +++ b/app/views/bids/_homework_form.html.erb @@ -37,10 +37,10 @@

-

+

<%= f.select :is_evaluation, is_evaluation_option %>

-

+

<%= f.select :proportion, proportion_option %>

diff --git a/app/views/bids/start_anonymous_comment.js.erb b/app/views/bids/start_anonymous_comment.js.erb index 84cd65a7d..a6e24285b 100644 --- a/app/views/bids/start_anonymous_comment.js.erb +++ b/app/views/bids/start_anonymous_comment.js.erb @@ -1,2 +1,8 @@ -alert('启动成功') -$("#<%= @bid.id %>_start_anonymous_comment").html('<%= link_to "关闭匿评", stop_anonymous_comment_bid_path(@bid), remote: true %>') +<% if @statue == 1%> + alert('启动成功'); + $("#<%= @bid.id %>_start_anonymous_comment").html('<%= link_to "关闭匿评", stop_anonymous_comment_bid_path(@bid), remote: true %>'); +<% elsif @statue == 2 %> + alert('启动失败\n作业总数大于4份时才能启动匿评'); +<% elsif @statue == 3%> + alert("已开启匿评,请务重复开启"); +<% end %> diff --git a/app/views/homework_attach/_homework.html.erb b/app/views/homework_attach/_homework.html.erb index 63e398877..be83a93ae 100644 --- a/app/views/homework_attach/_homework.html.erb +++ b/app/views/homework_attach/_homework.html.erb @@ -78,7 +78,7 @@ <% if @bid.comment_status == 1 %>

  • - <%= link_to l(:label_work_rating),homework_attach_path(homework,:cur_page => @cur_page,:cur_type => @cur_type),:remote => true %> + <%= link_to l(:label_anonymous_comments),homework_attach_path(homework,:cur_page => @cur_page,:cur_type => @cur_type),:remote => true %> <% if Time.parse(@bid.deadline.to_s).strftime("%Y-%m-%d") < Time.parse(homework.created_at.to_s).strftime("%Y-%m-%d") %>   迟交! <% end %> @@ -86,7 +86,7 @@ <% elsif @bid.comment_status == 2%>
  • - 评分 + <%= l(:label_anonymous_comments) %> <% if Time.parse(@bid.deadline.to_s).strftime("%Y-%m-%d") < Time.parse(homework.created_at.to_s).strftime("%Y-%m-%d") %>   迟交! <% end %> diff --git a/app/views/homework_attach/_homeworks_list.html.erb b/app/views/homework_attach/_homeworks_list.html.erb index 514820fdd..b67e91d84 100644 --- a/app/views/homework_attach/_homeworks_list.html.erb +++ b/app/views/homework_attach/_homeworks_list.html.erb @@ -9,12 +9,15 @@ ( <%= homework_count%> ) - + + 按  - <%= link_to l(:label_work_rating), sort_homework_path(@bid, 'socre', @direction), {:remote => true}%> -  /  - <%= link_to l(:label_time), sort_homework_path(@bid, 'time', @direction), {:remote => true}%> -  <%= l(:label_sort) %> + <%= link_to l(:label_anonymous_comments), sort_homework_path(@bid, 's_socre', @direction), {:remote => true}%> +  /  + <%= link_to l(:label_teacher_score), sort_homework_path(@bid, 't_socre', @direction), {:remote => true}%> +  /  + <%= link_to l(:label_time), sort_homework_path(@bid, 'time', @direction), {:remote => true}%> +  <%= l(:label_sort) %> <% end %> @@ -35,11 +38,11 @@ <% if @bid.comment_status == 0 %>
  • - <%= link_to "创建作业", new_exercise_book_path(@bid), :style => "width:80px; margin:20px 0 0 350px;" %> + <%= link_to "提交作业", new_exercise_book_path(@bid), :style => "width:80px; margin:20px 0 0 350px;" %>
  • <% else %> -
  • - 创建作业 +
  • + 提交作业
  • <% end %> diff --git a/app/views/homework_attach/edit.html.erb b/app/views/homework_attach/edit.html.erb index 9f81a3d19..5530b8cff 100644 --- a/app/views/homework_attach/edit.html.erb +++ b/app/views/homework_attach/edit.html.erb @@ -14,7 +14,24 @@ } function submit_homework_form() { - $('#edit_homework_attach_<%= @homework.id%>').submit(); + if(regexName()){$('#edit_homework_attach_<%= @homework.id%>').submit();} + } + function regexName() + { + var name = $("#homework_attach_name").val(); + + if(name=="") + { + $("#homework_attach_name_span").text("名称不能为空"); + $("#homework_attach_name_span").css('color','#ff0000'); + return false; + } + else + { + $("#homework_attach_name_span").text("填写正确"); + $("#homework_attach_name_span").css('color','#008000'); + return true; + } } @@ -44,7 +61,8 @@ <%= form_for(@homework) do |f|%>

    - <%= f.text_field :name, :required => true, :name => "homework_name", :class => "w430 bo", :maxlength => 254, :placeholder => "作品名称"%> + <%= f.text_field :name, :required => true, :name => "homework_name", :class => "w430 bo", :maxlength => 254, :placeholder => "作品名称", :onblur => "regexName();"%> +

    @@ -36,7 +51,8 @@   作品名称    : - <%= f.text_field "name", :required => true, :size => 60, :class => "w430 bo", :maxlength => 254, :placeholder => "作品名称" %> + <%= f.text_field "name", :required => true, :size => 60, :class => "w430 bo", :maxlength => 254, :placeholder => "作品名称", :onblur => "regexName();" %> +

    <% if User.current.logged? %> <% if User.current.allowed_to?(:as_teacher,@course) %> - <%= link_to l(:label_course_modify_settings), {:controller => 'courses', :action => 'settings', :id => @course} %> + <%= link_to l(:button_configure), {:controller => 'courses', :action => 'settings', :id => @course} %> <%= render :partial => 'courses/set_course_time', :locals => {:course => @course} %> <% else %> <%= join_in_course(@course, User.current) %> diff --git a/app/views/layouts/base_homework.html.erb b/app/views/layouts/base_homework.html.erb index db9d0e1d7..ab3dbd750 100644 --- a/app/views/layouts/base_homework.html.erb +++ b/app/views/layouts/base_homework.html.erb @@ -76,7 +76,7 @@ - -
    + <%= link_to course.name.to_s, homework_course_path(course) if course %> @@ -85,7 +85,7 @@
    + <%=link_to(@bid.name, course_for_bid_path(@bid)) %> @@ -101,8 +101,25 @@
    + <% if (User.current.admin?||User.current.id==@bid.author_id) %> + + + + <% end %> + -
    + + <% case @bid.comment_status %> + <% when 0 %> + <%= link_to '启动匿评', start_anonymous_comment_bid_path(bid), id: "#{bid.id}_start_anonymous_comment", remote: true, :confirm => "开启匿评后学生将不能对作业进行提交、修改、删除等操作\n是否确定开启匿评?" %> + <% when 1 %> + <%= link_to '关闭匿评', stop_anonymous_comment_bid_path(bid), id: "#{bid.id}_stop_anonymous_comment", remote: true, :confirm => "关闭匿评后学生将不能对作业进行评分\n是否确定关闭匿评?" %> + <% when 2 %> + 匿评结束 + <% end %> + +
    + <%= l(:label_homework_description) %> : @@ -118,7 +135,6 @@
    <%= l(:label_limit_time) %>: - <%= @bid.deadline %> diff --git a/config/locales/zh.yml b/config/locales/zh.yml index a11ded73a..ddde5ccb7 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -1886,7 +1886,7 @@ zh: label_bids_task_list: 作业列表 label_join_course: 加入课程 - label_exit_course: 退出课程 + label_exit_course: 退出 label_new_join: 加入 label_new_course_password: 课程密码 label_new_course_school: 开课学校 diff --git a/public/stylesheets/css.css b/public/stylesheets/css.css index 490dab1b7..a8fee8b67 100644 --- a/public/stylesheets/css.css +++ b/public/stylesheets/css.css @@ -69,7 +69,7 @@ a.wzan_visited{background:url(images/pic_zan.png) 0 0 no-repeat;} /****评分弹框****/ - +.alert_box {width:488px;height:550px;position:absolute;z-index:1002;left:50%;top:40%;margin:-215px 0 0 -300px; background:#fff; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; box-shadow:0px 0px 8px #194a81; padding:5px; overflow:auto; } .alert .close{width:26px;height:26px;overflow:hidden;position:absolute;top:-10px;right:-502px;background:url(images/close.png) no-repeat;cursor:pointer;} .alert .C{width:476px;height:296px;position:absolute;left:5px;top:5px; } @@ -143,6 +143,7 @@ a:hover.tijiao{ background:#0f99a9 !important;} .N_search{ height:20px !important; border:1px solid #999 !important;} /* 匿名评分弹框 */ +.alert_praise{width:480px;height:200px;position:absolute;z-index:100;left:50%;top:50%;margin:-215px 0 0 -300px; background:#fff; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; box-shadow:0px 0px 8px #194a81; overflow:auto;} .alert .close02{width:26px;height:26px;overflow:hidden;position:absolute;top:-10px;right:-490px;background:url(images/close.png) no-repeat;cursor:pointer;} .ni_con { width:425px; margin:25px 30px;} .ni_con h2{ display:block; height:40px; width:188px; margin:0 auto;}