diff --git a/app/controllers/exercise_controller.rb b/app/controllers/exercise_controller.rb index 75751e4f7..8fa90ea46 100644 --- a/app/controllers/exercise_controller.rb +++ b/app/controllers/exercise_controller.rb @@ -1,8 +1,10 @@ class ExerciseController < ApplicationController layout "base_courses" - before_filter :find_exercise_and_course, :only => [:create_exercise_question, :edit, :update, :show, :destroy, :commit_exercise, :commit_answer,:publish_exercise,:republish_exercise,:show_student_result] - before_filter :find_course, :only => [:index,:new,:create,:student_exercise_list] + before_filter :find_exercise_and_course, :only => [:create_exercise_question, :edit, :update, :show, :destroy, + :commit_exercise, :commit_answer,:publish_exercise,:republish_exercise, + :show_student_result,:student_exercise_list] + before_filter :find_course, :only => [:index,:new,:create] include ExerciseHelper def index @@ -354,8 +356,20 @@ class ExerciseController < ApplicationController end def student_exercise_list +=begin + if @exercise.end_time <= Time.now + @course.student.each do |student| + if ExerciseUser.where("user_id = ? && exercise_id = ?",student.student_id,@exercise.id).empty? + ExerciseUser.create(:user_id => student.student_id, :exercise_id => @exercise.id, :start_at => @exercise.end_time, :status => true,:score=>0) + end + + s_score = calculate_student_score(@exercise, student.student) + exercise_user = ExerciseUser.where("user_id =? and exercise_id=?", student.student_id, @exercise.id).first + exercise_user.update_attributes(:score => s_score) + end + end +=end @is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin? - @exercise = Exercise.find params[:id] @all_exercises = @course.exercises.where("exercise_status > 1").order("created_at desc") @exercise_count = @exercise.exercise_users.where('score is not NULL').count if @is_teacher || (!@exercise.exercise_users.where(:user_id => User.current.id).empty? && @exercise.end_time <= Time.now) @@ -543,11 +557,11 @@ class ExerciseController < ApplicationController def show_student_result @user = User.find params[:user_id] @can_edit_excercise = false - @exercise_user = ExerciseUser.where("user_id =? and exercise_id=?", @user.id, @exercise.id).first @exercise_questions = @exercise.exercise_questions score = calculate_student_score(@exercise, @user) eu = get_exercise_user(@exercise.id, @user.id) eu.update_attributes(:score => score) + @exercise_user = ExerciseUser.where("user_id =? and exercise_id=?", @user.id, @exercise.id).first respond_to do |format| format.html {render :layout => 'base_courses'} end @@ -565,15 +579,15 @@ class ExerciseController < ApplicationController standard_answer = get_user_standard_answer(question, user) unless answer.empty? # 问答题有多个答案 - if question.question_type == 3 + if question.question_type == 3 && !standard_answer.empty? if standard_answer.include?(answer.first.answer_text) score1 = score1+ question.question_score unless question.question_score.nil? end - elsif question.question_type == 1 + elsif question.question_type == 1 && !standard_answer.nil? if answer.first.exercise_choice.choice_position == standard_answer.exercise_choice_id score2 = score2 + question.question_score unless question.question_score.nil? end - else + elsif question.question_type == 2 && !standard_answer.nil? arr = get_mulscore(question, user) if arr.to_i == standard_answer.exercise_choice_id score3 = score3 + question.question_score unless question.question_score.nil? diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb index a8d6dfe8f..a83534ad7 100644 --- a/app/controllers/homework_common_controller.rb +++ b/app/controllers/homework_common_controller.rb @@ -84,9 +84,20 @@ class HomeworkCommonController < ApplicationController end end + #分组作业 + if @homework.homework_type == 3 + @homework.homework_detail_group ||= HomeworkDetailGroup.new + @homework_detail_group = @homework.homework_detail_group + @homework_detail_group.min_num = params[:min_num].to_i + @homework_detail_group.max_num = params[:max_num].to_i + @homework_detail_group.base_on_project = params[:base_on_project].to_i + end + if @homework.save @homework_detail_manual.save if @homework_detail_manual @homework_detail_programing.save if @homework_detail_programing + @homework_detail_group.save if @homework_detail_group + if params[:is_in_course] == "1" redirect_to homework_common_index_path(:course => @course.id) elsif params[:is_in_course] == "0" diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index b79adda2d..5cb646c8e 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -215,7 +215,6 @@ class StudentWorkController < ApplicationController student_work ||= StudentWork.new student_work.name = params[:student_work][:name] student_work.description = params[:student_work][:description] - student_work.project_id = params[:student_work][:project_id] student_work.homework_common_id = @homework.id student_work.user_id = User.current.id student_work.save_attachments(params[:attachments]) @@ -305,15 +304,28 @@ class StudentWorkController < ApplicationController @work.save_attachments(params[:attachments]) render_attachment_warning_if_needed(@work) if @work.save + if @homework.homework_type == 3 + @student_work_project = @homework.student_work_projects.where("user_id=?",User.current.id).first + student_work_projects = @homework.student_work_projects.where("student_work_id=? and is_leader =?",@work.id,0) + student_work_projects.delete_all + members = params[:group_member_ids].split(',') + for i in 1 .. members.count-1 + stu_project = StudentWorkProject.new + stu_project.homework_common_id = @homework.id + stu_project.student_work_id = @work.id + if @homework.homework_detail_group.base_on_project == 1 + stu_project.project_id = @student_work_project.project_id + else @homework.homework_detail_group.base_on_project == 0 + stu_project.project_id = -1 + end + stu_project.user_id = members[i].to_i + stu_project.is_leader = 0 + stu_project.save + end + end + course_message = CourseMessage.new(:user_id =>User.current.id,:content=>"edit",:course_message_id=>@work.id,:course_id => @course.id,:course_message_type=>"StudentWork", :status => 9) #作品提交记录 course_message.save -=begin - respond_to do |format| - format.html { - flash[:notice] = l(:notice_successful_edit) - redirect_to student_work_index_url(:homework => @homework.id) - } -=end @student_work = @work respond_to do |format| format.js @@ -689,7 +701,12 @@ class StudentWorkController < ApplicationController unless params[:name].nil? name = params[:name] end - all_student_ids = "(" + @homework.course.student.map{|student| student.student_id}.join(",") + ")" + if @homework.homework_detail_group.base_on_project == 0 + all_student_ids = "(" + @homework.course.student.map{|student| student.student_id}.join(",") + ")" + else + pro = Project.find @homework.student_work_projects.where("user_id=?",User.current.id).first.project_id + all_student_ids = "(" + pro.members.map{|member| member.user_id}.join(",") + ")" + end all_students = User.where("id in #{all_student_ids}") @commit_student_ids = @homework.student_work_projects.map{|student| student.user_id} @users = searchstudent_by_name all_students,name diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index b6d336547..02676978f 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -415,6 +415,7 @@ class UsersController < ApplicationController def user_select_homework homework = HomeworkCommon.find_by_id params[:checkMenu] homework_detail_programing = homework.homework_detail_programing + homework_detail_group = homework.homework_detail_group @homework = HomeworkCommon.new @select_course = params[:select_course] || 0 if homework @@ -444,6 +445,14 @@ class UsersController < ApplicationController ) end end + + if homework_detail_group + @homework.homework_detail_group = HomeworkDetailGroup.new + @homework_detail_group = @homework.homework_detail_group + @homework_detail_group.min_num = homework_detail_group.min_num + @homework_detail_group.max_num = homework_detail_group.max_num + @homework_detail_group.base_on_project = homework_detail_group.base_on_project + end end respond_to do |format| format.js diff --git a/app/helpers/exercise_helper.rb b/app/helpers/exercise_helper.rb index b0d0118e5..aba2fb58e 100644 --- a/app/helpers/exercise_helper.rb +++ b/app/helpers/exercise_helper.rb @@ -43,8 +43,9 @@ module ExerciseHelper ecs.each do |ec| arr << ec.exercise_choice.choice_position end - arr.sort - arr = arr.join("") + #arr = arr.sort + str = arr.sort.join("") + return str end # 判断用户是否已经提交了问卷 diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 51d1846d8..afc6cb1d9 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -19,6 +19,7 @@ include AvatarHelper include StudentWorkHelper +include ApiHelper module ProjectsHelper def link_to_version(version, options = {}) return '' unless version && version.is_a?(Version) diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb index ec6390408..396133c7a 100644 --- a/app/models/journals_for_message.rb +++ b/app/models/journals_for_message.rb @@ -267,7 +267,7 @@ class JournalsForMessage < ActiveRecord::Base # 课程成员得分(英雄榜) def act_as_student_score - unless self.user.allowed_to?(:as_teacher, self.jour) + if !self.user.allowed_to?(:as_teacher, self.jour) && self.jour_type == "Course" course_member_score(self.jour_id, self.user_id, "JournalForMessage") end end diff --git a/app/views/courses/_courses_jours.html.erb b/app/views/courses/_courses_jours.html.erb index 7b6b44c69..ce775da4d 100644 --- a/app/views/courses/_courses_jours.html.erb +++ b/app/views/courses/_courses_jours.html.erb @@ -1,22 +1,18 @@ -<%= content_for(:header_tags) do %> - <%= import_ke(enable_at: false, prettify: false, init_activity: true) %> -<% end %> - - +<%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg',"init_KindEditor" %> @@ -24,11 +20,11 @@

<%= l(:label_leave_message) %>

<% if !User.current.logged?%> -
- <%= l(:label_user_login_tips) %> - <%= link_to l(:label_user_login_new), signin_path %> -
-
+
+ <%= l(:label_user_login_tips) %> + <%= link_to l(:label_user_login_new), signin_path %> +
+
<% else %>
<%= form_for('new_form',:url => {:controller => 'words', :action => 'leave_course_message'}, :html=>{:id => "course_feedback_new"},:method => "post") do |f|%> @@ -59,37 +55,37 @@ $("#submit_feedback_course").one('click',function() { $("#course_feedback_new").submit(); }); - KindEditor.ready(function(K){ - $("a[nhname='reply_btn']").live('click',function(){ - var params = {}; - params.kindutil = K; - params.container = $(this).parent('div').parent('div'); - params.div_form = $(">.respond-form",params.container); - params.form = $("form",params.div_form); - params.textarea = $("textarea[name='user_notes']",params.div_form); - params.contentmsg = $("p[nhname='contentmsg']",params.div_form); - params.toolbar_container = $("div[nhname='toolbar_container']",params.div_form); - params.cancel_btn = $("input[nhname='cancel_btn']",params.div_form); - params.height = 55; - if(params.textarea.data('init') == undefined){ - params.editor = init_editor(params); - init_form(params); - params.cancel_btn.click(function(){ - nh_reset_form(params); - }); - } - params.cancel_btn.click(); - toggleAndSettingWordsVal(params.div_form, params.textarea); - setTimeout(function(){ - if(!params.div_form.is(':hidden')){ - params.textarea.show(); - params.textarea.focus(); - params.textarea.hide(); - } - },300); - params.textarea.data('init',1); - }); + KindEditor.ready(function(K){ + $("a[nhname='reply_btn']").live('click',function(){ + var params = {}; + params.kindutil = K; + params.container = $(this).parent('div').parent('div'); + params.div_form = $(">.respond-form",params.container); + params.form = $("form",params.div_form); + params.textarea = $("textarea[name='user_notes']",params.div_form); + params.contentmsg = $("p[nhname='contentmsg']",params.div_form); + params.toolbar_container = $("div[nhname='toolbar_container']",params.div_form); + params.cancel_btn = $("input[nhname='cancel_btn']",params.div_form); + params.height = 55; + if(params.textarea.data('init') == undefined){ + params.editor = init_editor(params); + init_form(params); + params.cancel_btn.click(function(){ + nh_reset_form(params); + }); + } + params.cancel_btn.click(); + toggleAndSettingWordsVal(params.div_form, params.textarea); + setTimeout(function(){ + if(!params.div_form.is(':hidden')){ + params.textarea.show(); + params.textarea.focus(); + params.textarea.hide(); + } + },300); + params.textarea.data('init',1); + }); + }); }); - }); diff --git a/app/views/exercise/_exercise_teacher.html.erb b/app/views/exercise/_exercise_teacher.html.erb index 24687d28b..586c033a1 100644 --- a/app/views/exercise/_exercise_teacher.html.erb +++ b/app/views/exercise/_exercise_teacher.html.erb @@ -32,7 +32,7 @@
第<%= list_index+1%>题:<%= exercise_question.question_title %>  (<%= exercise_question.question_score %>分)
- 标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %> + 标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) if exercise_question.exercise_standard_answers.first %>
@@ -64,7 +64,7 @@
第<%= list_index+1%>题:<%= exercise_question.question_title %>  (<%= exercise_question.question_score %>分)
- 标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %> + 标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) if exercise_question.exercise_standard_answers.first%>
diff --git a/app/views/exercise/_student_exercise.html.erb b/app/views/exercise/_student_exercise.html.erb index 9b07e0626..bbbe9026d 100644 --- a/app/views/exercise/_student_exercise.html.erb +++ b/app/views/exercise/_student_exercise.html.erb @@ -35,17 +35,19 @@ }); $(function(){ <% if Time.parse(h(@exercise.end_time)).strftime("%Y-%m-%d-%H-%M-%S") <= Time.now.strftime("%Y-%m-%d-%H-%M-%S") %> - $("#show_student_result_div").on('click',show_result); + $("#show_student_result_div_<%= exercise.id%>").on('click',function() { + window.location.href = '<%=show_student_result_exercise_path(@exercise,:user_id => exercise.user_id) %>'; + }); <% else %> - $("#show_student_result_div").attr("title","截止日期未到,暂不能查看学生答题结果"); + $("#show_student_result_div_<%= exercise.id%>").attr("title","截止日期未到,暂不能查看学生答题结果"); $("#student_name_<%= exercise.id%>").attr("title","截止日期未到,暂不能查看学生答题结果"); $("#student_id_<%= exercise.id%>").attr("title","截止日期未到,暂不能查看学生答题结果"); $("#student_class_<%= exercise.id%>").attr("title","截止日期未到,暂不能查看学生答题结果"); <% end %> }); - function show_result() { - window.location.href = '<%=show_student_result_exercise_path(@exercise,:user_id => exercise.user.id) %>'; - } + /*function show_result(id) { + window.location.href = '<%#=show_student_result_exercise_path(@exercise,:user_id => exercise.user.id) %>'; + }*/
  • @@ -53,7 +55,7 @@
  • <%= link_to(image_tag(url_to_avatar(exercise.user),:width =>"40",:height => "40"),user_activities_path(exercise.user)) %>
  • -
    +
    • diff --git a/app/views/layouts/_base_footer_public.html.erb b/app/views/layouts/_base_footer_public.html.erb index dba26f1f6..eb2e83ba2 100644 --- a/app/views/layouts/_base_footer_public.html.erb +++ b/app/views/layouts/_base_footer_public.html.erb @@ -2,9 +2,9 @@
      • <%= l(:label_about_us)%>|
      • -
      • <%= l(:label_contact_us)%>|
      • +
      • <%= l(:label_contact_us)%>|
      • <%= l(:label_recruitment_information)%>|
      • -
      • <%= l(:label_surpport_group)%>|
      • +
      • <%= link_to l(:label_surpport_group), "https://#{Setting.host_name}/forums/1/memos/1168", :class => "f_grey mw20", :target=>"_blank" %>|
      • <%= l(:label_forums)%>|
      • <%= l(:label_language)%>
        - +

          diff --git a/app/views/student_work/edit.html.erb b/app/views/student_work/edit.html.erb index bfdf8c316..c7c572cff 100644 --- a/app/views/student_work/edit.html.erb +++ b/app/views/student_work/edit.html.erb @@ -7,7 +7,7 @@
          -
          + @@ -31,7 +31,11 @@ 提示:作品名称和描述中不要出现真实的姓名信息
          - + <% if @homework.homework_type == 3 %> + + + <%=hidden_field_tag 'group_member_ids', params[:group_member_ids], :value=>User.current.id %> + <% end %>
          @@ -51,6 +55,12 @@ <%= render :partial => 'users/user_homework_attachment', :locals => {:container => @work, :has_program=>false,:has_group=>false} %>
          + <% if @homework.homework_type == 3 %> + + <% end %> +
          确定 @@ -61,14 +71,44 @@
          \ No newline at end of file diff --git a/app/views/student_work/new.html.erb b/app/views/student_work/new.html.erb index c3a61d4c8..bd13fb7c1 100644 --- a/app/views/student_work/new.html.erb +++ b/app/views/student_work/new.html.erb @@ -11,6 +11,11 @@ $('#ajax-modal').parent().addClass("anonymos_work"); }); <% end%> + <% if @homework.homework_detail_group %> + $(function(){ + $('span.group_detail_info').text('分组人数:<%=@homework.homework_detail_group.min_num %>-<%=@homework.homework_detail_group.max_num %> 人'); + }); + <% end %> //快速创建项目的弹框 function new_project(){ @@ -83,7 +88,7 @@
          -
          + diff --git a/app/views/student_work/search_course_students.js.erb b/app/views/student_work/search_course_students.js.erb index 1cea9f27e..c7aa982b9 100644 --- a/app/views/student_work/search_course_students.js.erb +++ b/app/views/student_work/search_course_students.js.erb @@ -18,7 +18,7 @@ $("#all_students_list").empty(); } } } - <% if user.id.to_i != User.current.id.to_i && (@commit_student_ids.find{|e| e.to_i == user.id.to_i}).nil? %> + <% if user.id.to_i != User.current.id.to_i && (@commit_student_ids.find{|e| e.to_i == user.id.to_i}).nil? && user.member_of_course?(@course) %> if (str.indexOf(<%=user.id.to_s %>) < 0) { $("#student_<%=user.id %>").one("click",function choose_student() { var li = "
        • + if (str.indexOf(<%=user.id.to_s %>) < 0) { + $("#student_<%=user.id %>").attr("title","该项目成员不是本课程的学生"); + } <% else %> if (str.indexOf(<%=user.id.to_s %>) < 0) { $("#student_<%=user.id %>").attr("title","该学生已加入其它分组"); diff --git a/app/views/users/_course_homework.html.erb b/app/views/users/_course_homework.html.erb index a3aa5d5b1..60b8e6728 100644 --- a/app/views/users/_course_homework.html.erb +++ b/app/views/users/_course_homework.html.erb @@ -13,7 +13,7 @@ <% end %> TO <%= link_to activity.course.name.to_s+" | 课程作业", homework_common_index_path(:course => activity.course.id, :host=> Setting.host_course), :class => "newsBlue ml15"%>
        - <% end %> - + <% if activity.homework_type == 3 && activity.homework_detail_group%> +
        + 分组人数:<%=activity.homework_detail_group.min_num %>-<%=activity.homework_detail_group.max_num %> 人 +
        + <% end %>
        截止时间:<%= activity.end_time.to_s %> 23:59
    • @@ -93,25 +97,49 @@
      +
      +
      + 匿评开启时间:<%= activity.homework_detail_manual.evaluation_start%> 00:00 +
      +
      + 匿评关闭时间:<%= activity.homework_detail_manual.evaluation_end%> 23:59 +
      +
      +
      <%= render :partial => 'student_work/work_attachments', :locals => {:attachments => activity.attachments} %>
      - <% if activity.homework_type == 3 && !activity.student_work_projects.empty? && activity.homework_detail_group.base_on_project == 1 %> + <% if activity.homework_type == 3 && activity.homework_detail_group.base_on_project == 1 %>
      + <% projects = activity.student_work_projects.where("is_leader = 1") %>
      - - 已关联项目: + 已关联项目:<%='各小组尚未将小组项目关联到本次作业。' if projects.empty? %>
      - <% activity.student_work_projects.where("is_leader = 1").each do |pro| %> -
      - <% project = Project.find pro.project_id %> - <% if project.is_public || User.current.member_of?(project) || User.current.admin?%> - <%= link_to image_tag(url_to_avatar(project),:width=>"40",:height => "40",:class => "borderRadius"),project_path(project.id,:host=>Setting.host_name),:alt =>"项目头像" %> + <% projects.each do |pro| %> + <% project = Project.find pro.project_id %> + +
      + <% if project.is_public || User.current.member_of?(project) || User.current.admin? %> + <%= link_to image_tag(url_to_avatar(project),:width=>"40",:height => "40",:class => "borderRadius"),project_path(project.id,:host=>Setting.host_name),:id=>"project_img_"+project.id.to_s,:alt =>"项目头像" %> <% else %> - <%= image_tag(url_to_avatar(project),:width=>"40",:height => "40",:class => "borderRadius") %> + <%= image_tag(url_to_avatar(project),:width=>"40",:height => "40",:class => "borderRadius",:id=>"project_img_"+project.id.to_s,:alt =>"项目头像") %> <% end %> -

      <%=project.project_score.score.to_i %>

      +
      + 项目名称:<%=project.name %>
      + 创建者:<%=(User.find project.user_id).show_name %>(组长)
      + <% time=project.updated_on %> + <% time=ForgeActivity.where("project_id=?",project.id).last.updated_at if ForgeActivity.where("project_id=?",project.id).last %> + 更新时间:<%=time_from_now time %> +
      <% end %>
      diff --git a/app/views/users/_user_group_attr.html.erb b/app/views/users/_user_group_attr.html.erb index aa8166a04..652cb723a 100644 --- a/app/views/users/_user_group_attr.html.erb +++ b/app/views/users/_user_group_attr.html.erb @@ -11,7 +11,7 @@

      提醒:勾选后各小组必须在Trustie平台创建项目,教师可随时观察平台对各小组最新进展的实时统计。

      diff --git a/app/views/users/_user_homework_attachment.html.erb b/app/views/users/_user_homework_attachment.html.erb index bba7627b1..5f4cb4a8e 100644 --- a/app/views/users/_user_homework_attachment.html.erb +++ b/app/views/users/_user_homework_attachment.html.erb @@ -48,10 +48,12 @@
      <% if @homework && @homework.homework_type == 3 %> - - 合作成员:<%=User.current.show_name %>(组长) - - + <% unless defined?(show_member) && show_member %> + + 合作成员:<%=User.current.show_name %>(组长) + + + <% end %> <% end %>
      diff --git a/app/views/users/_user_homework_detail.html.erb b/app/views/users/_user_homework_detail.html.erb index 4217cf1a9..d9421f5ea 100644 --- a/app/views/users/_user_homework_detail.html.erb +++ b/app/views/users/_user_homework_detail.html.erb @@ -10,7 +10,7 @@ TO <%= link_to homework_common.course.name, course_path(homework_common.course_id), :class => "newsBlue ml15"%>
      -