diff --git a/app/controllers/bids_controller.rb b/app/controllers/bids_controller.rb index 17a20b0d5..cab954e96 100644 --- a/app/controllers/bids_controller.rb +++ b/app/controllers/bids_controller.rb @@ -511,7 +511,7 @@ class BidsController < ApplicationController 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, (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN #{teachers}) AS s_score, - (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = 3123) AS m_score + (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = #{User.current.id}) 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} ORDER BY s_score DESC) AS table1 @@ -806,6 +806,7 @@ class BidsController < ApplicationController @bid.description = params[:bid][:description] @bid.is_evaluation = params[:bid][:is_evaluation] @bid.proportion = params[:bid][:proportion] + @bid.evaluation_num = params[:bid][:evaluation_num] @bid.reward_type = 3 # @bid.budget = params[:bid][:budget] @bid.deadline = params[:bid][:deadline] @@ -822,7 +823,7 @@ class BidsController < ApplicationController flash[:notice] = l(:label_bid_succeed) end end - redirect_to course_for_bid_path(@bid) + redirect_to course_homework_url(params[:course_id]) else @bid.safe_attributes = params[:bid] @homework = @bid @@ -861,6 +862,7 @@ class BidsController < ApplicationController @bid.description = params[:bid][:description] @bid.is_evaluation = params[:bid][:is_evaluation] @bid.proportion = params[:bid][:proportion] + @bid.evaluation_num = params[:bid][:evaluation_num] @bid.reward_type = 3 @bid.deadline = params[:bid][:deadline] @bid.budget = 0 @@ -1006,28 +1008,18 @@ class BidsController < ApplicationController @bid = Bid.find(params[:id]) 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 } - - @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 + if(homeworks && homeworks.size >= 2) + homeworks.each_with_index do |homework, index| + user = homework.user + n = @bid.evaluation_num + n = n < homeworks.size ? n : homeworks.size - 1 + assigned_homeworks = get_assigned_homeworks(homeworks, n, index) + assigned_homeworks.each do |h| + @homework_evaluation = HomeworkEvaluation.new(user_id: user.id, homework_attach_id: h.id) + @homework_evaluation.save end end - # 修改状态为 '启动匿评' - #@bid.update_column('comment_status', 1) + @bid.update_column('comment_status', 1) @statue = 1 else @statue = 2 @@ -1052,6 +1044,11 @@ class BidsController < ApplicationController end private + + def get_assigned_homeworks(homeworks, n, index) + homeworks += homeworks + homeworks[index + 1 .. index + n] + end def find_bid if params[:id] diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 8a5bfd9fb..a048c3c9c 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -672,10 +672,10 @@ class CoursesController < ApplicationController page = 1 + offset / @limit end - @feedback_count = @jours.count - @feedback_pages = Paginator.new @feedback_count, @limit, page - @offset ||= @feedback_pages.offset - @jour = @jours[@offset, @limit] + #@feedback_count = @jours.count + #@feedback_pages = Paginator.new @feedback_count, @limit, page + #@offset ||= @feedback_pages.offset + @jour = paginateHelper @jours,10 @state = false respond_to do |format| format.html{render :layout => 'base_courses'} diff --git a/app/controllers/homework_attach_controller.rb b/app/controllers/homework_attach_controller.rb index 12aa5860f..42c7ffc77 100644 --- a/app/controllers/homework_attach_controller.rb +++ b/app/controllers/homework_attach_controller.rb @@ -103,7 +103,7 @@ class HomeworkAttachController < ApplicationController 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, (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id NOT IN #{teachers}) AS s_score, - (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = 3123) AS m_score + (SELECT stars FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach' AND rateable_id = homework_attaches.id AND rater_id = #{User.current.id}) 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} ORDER BY s_score DESC) AS table1 @@ -227,7 +227,7 @@ class HomeworkAttachController < ApplicationController def create bid = Bid.find params[:bid_id] if User.current.admin? || User.current.member_of_course?(bid.courses.first) # modify by nwb - if bid.homeworks.where("user_id = ?",User.current).count == 0 + if bid.homeworks.where("user_id = ?",User.current).empty? user_id = params[:user_id] bid_id = params[:bid_id] if params[:homework_attach] diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index bf0717aae..47c8107ce 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -424,10 +424,10 @@ class ProjectsController < ApplicationController end - @feedback_count = @jours.count - @feedback_pages = Paginator.new @feedback_count, @limit, @page - @offset ||= @feedback_pages.offset - @jour = @jours[@offset, @limit] + #@feedback_count = @jours.count + #@feedback_pages = Paginator.new @feedback_count, @limit, @page + #@offset ||= @feedback_pages.offset + @jour = paginateHelper @jours,10 @state = false @base_courses_tag = @project.project_type diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 7e6e3d04a..9b2e5990a 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -280,11 +280,11 @@ class UsersController < ApplicationController fetch_user_leaveWord_reply(journal).update_all(:is_readed => true, :status => false) end - @limit = 10 - @feedback_count = @jours.count - @feedback_pages = Paginator.new @feedback_count, @limit, params['page'] - @offset ||= @feedback_pages.offset - @jour = @jours[@offset, @limit] + #@limit = 10 + #@feedback_count = @jours.count + #@feedback_pages = Paginator.new @feedback_count, @limit, params['page'] + #@offset ||= @feedback_pages.offset + @jour = paginateHelper @jours,10 @state = false end # end diff --git a/app/controllers/words_controller.rb b/app/controllers/words_controller.rb index b4bc52eab..89fa0e1dc 100644 --- a/app/controllers/words_controller.rb +++ b/app/controllers/words_controller.rb @@ -27,11 +27,7 @@ class WordsController < ApplicationController end end @jours = @user.journals_for_messages.where('m_parent_id IS NULL').reverse - @limit = 10 - @feedback_count = @jours.count - @feedback_pages = Paginator.new @feedback_count, @limit, params['page'] - @offset ||= @feedback_pages.offset - @jour = @jours[@offset, @limit] + @jour = paginateHelper @jours,10 respond_to do |format| # format.html { redirect_to_referer_or {render :text => 'Watcher added.', :layout => true}} diff --git a/app/views/bids/_bid_homework_show.html.erb b/app/views/bids/_bid_homework_show.html.erb index 4ed9a9015..f098de895 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, :confirm => "开启匿评后学生将不能对作业进行提交、修改、删除等操作\n是否确定开启匿评?" %> + <%= link_to '启动匿评', start_anonymous_comment_bid_path(bid), id: "#{bid.id}_start_anonymous_comment", remote: true, :confirm => "开启匿评后学生将不能对作业进行提交、修改、删除等操作\n是否确定开启匿评?", disable_with: '加载中...' %> <% when 1 %> - <%= link_to '关闭匿评', stop_anonymous_comment_bid_path(bid), id: "#{bid.id}_stop_anonymous_comment", remote: true, :confirm => "关闭匿评后学生将不能对作业进行评分\n是否确定关闭匿评?" %> + <%= 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_form.html.erb b/app/views/bids/_homework_form.html.erb index de4c16960..448e4144a 100644 --- a/app/views/bids/_homework_form.html.erb +++ b/app/views/bids/_homework_form.html.erb @@ -32,7 +32,7 @@ <%= f.text_area :description, :rows => 8, :class => 'wiki-edit', :style => "font-size:small;width:490px;", :maxlength => Bid::DESCRIPTION_LENGTH_LIMIT %>

- <%= f.text_field(:deadline, :required => true, :size => 60, :style => "width:150px;", :readonly => true, :onchange => "regexDeadLine();") %> + <%= f.text_field(:deadline, :required => true, :size => 60, :style => "width:100px;", :readonly => true, :onchange => "regexDeadLine();") %> <%= calendar_for('bid_deadline')%> @@ -43,6 +43,10 @@

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

+

+ <%= f.text_field :evaluation_num, :required => true, :size => 60, :style => "width:150px;", :onblur => "regexEvaluationNum();" , :maxlength => 4%> + 匿评分配数量不宜太大,否则会影响开启匿评速度 +

<%= hidden_field_tag 'course_id', @course.id %>

diff --git a/app/views/bids/edit.html.erb b/app/views/bids/edit.html.erb index fd21872b0..322b8cdc3 100644 --- a/app/views/bids/edit.html.erb +++ b/app/views/bids/edit.html.erb @@ -1,7 +1,7 @@ - - <% html_title(l(:label_course_feedback)) -%> \ No newline at end of file diff --git a/app/views/courses/new_homework.html.erb b/app/views/courses/new_homework.html.erb index e339db2d7..753aa20c8 100644 --- a/app/views/courses/new_homework.html.erb +++ b/app/views/courses/new_homework.html.erb @@ -1,7 +1,7 @@