From 07b97c8eb988ed620c8adaa460ef9739640865d2 Mon Sep 17 00:00:00 2001 From: cxt Date: Fri, 11 Nov 2016 13:58:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E5=88=97=E8=A1=A8=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD=E3=80=81=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=AD=A6=E7=94=9F=E6=97=B6=E5=88=A0=E9=99=A4=E5=85=B6?= =?UTF-8?q?=E5=AF=B9=E5=BA=94=E7=9A=84=E4=BD=9C=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 29 +++++++++++++++++++++ app/controllers/members_controller.rb | 4 +-- app/controllers/watchers_controller.rb | 2 +- app/models/students_for_course.rb | 10 ++++++- app/services/courses_service.rb | 12 ++++----- app/views/courses/_new_member_list.html.erb | 25 ++++++++++++------ app/views/courses/delete_member.js.erb | 4 +++ config/routes.rb | 1 + public/javascripts/application.js | 9 +++++++ public/stylesheets/syllabus.css | 6 +++-- 10 files changed, 82 insertions(+), 20 deletions(-) create mode 100644 app/views/courses/delete_member.js.erb diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index db18566db..dd31d3778 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -558,6 +558,35 @@ class CoursesController < ApplicationController end end + def delete_member + member = @course.members.find params[:member_id] + student_role = member.member_roles.where("role_id = 10").first + if member && member.deletable? && student_role + user_admin = CourseInfos.where("user_id = ? and course_id = ?", member.user_id, @course.id) + if user_admin.size > 0 + user_admin.destroy_all + end + joined = StudentsForCourse.where('student_id = ? and course_id = ?', member.user_id,@course.id) + joined.destroy_all + + if member.member_roles.count > 1 + student_role.destroy + member.update_attribute("course_group_id", 0) + else + member.destroy + end + #移出课程发送消息 + CourseMessage.create(:user_id => member.user_id, :course_id => @course.id, :course_message_type => "RemoveFromCourse", :viewed => false, :course_message_id => User.current.id) + + @course_groups = @course.course_groups + @no_group_count = @course.student.count - @course.members.where("course_group_id != 0").count + @canShowCode = isCourseTeacher(User.current.id,@course) + respond_to do |format| + format.js + end + end + end + def handle_course courses, activities course_activity_count_array=activities.values() course_array=[] diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 0be18ea5c..5f0dbda97 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -337,7 +337,7 @@ class MembersController < ApplicationController else joined = StudentsForCourse.where('student_id = ? and course_id = ?', @member.user_id,@course.id) joined.each do |join| - join.delete + join.destroy end @member.course_group_id = 0 end @@ -423,7 +423,7 @@ class MembersController < ApplicationController end joined = StudentsForCourse.where('student_id = ? and course_id = ?', @member.user_id,@course.id) joined.each do |join| - join.delete + join.destroy end @roles = Role.givable.all[3..5] @members = @course.member_principals.includes(:roles, :principal).all.sort diff --git a/app/controllers/watchers_controller.rb b/app/controllers/watchers_controller.rb index 304ba10a2..da0c5733a 100644 --- a/app/controllers/watchers_controller.rb +++ b/app/controllers/watchers_controller.rb @@ -125,7 +125,7 @@ class WatchersController < ApplicationController joined = StudentsForCourse.where('student_id = ? and course_id = ?', User.current.id, params[:object_id]) joined.each do |join| - join.delete + join.destroy end end respond_to do |format| diff --git a/app/models/students_for_course.rb b/app/models/students_for_course.rb index 6958cfe73..767d65b10 100644 --- a/app/models/students_for_course.rb +++ b/app/models/students_for_course.rb @@ -7,5 +7,13 @@ class StudentsForCourse < ActiveRecord::Base validates_presence_of :course_id, :student_id validates_uniqueness_of :student_id, :scope => :course_id - + + after_destroy :delete_student_works + + def delete_student_works + course = self.course + homework_ids = course.homework_commons.blank? ? "(-1)" : "(" + course.homework_commons.map{|hw| hw.id}.join(",") + ")" + student_works = StudentWork.where("user_id = #{self.student_id} && homework_common_id in #{homework_ids}") + student_works.destroy_all + end end diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 69864f226..f72623d84 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -207,7 +207,7 @@ class CoursesService unless member.role_ids.include?(10) joined = StudentsForCourse.where('student_id = ? and course_id = ?', member.user_id,c.id) joined.each do |join| - join.delete + join.destroy end end @@ -460,7 +460,7 @@ class CoursesService @member.first.destroy joined = StudentsForCourse.where('student_id = ? and course_id = ?', user.id, params[:object_id]) joined.each do |join| - join.delete + join.destroy end @state = 0 @state @@ -837,7 +837,7 @@ class CoursesService member = Member.new(:role_ids =>[7], :user_id => params[:user_id],:course_id=>params[:course_id]) joined = StudentsForCourse.where('student_id = ? and course_id = ?', member.user_id,course.id) joined.each do |join| - join.delete + join.destroy end member.course_group_id = 0 members << member @@ -858,7 +858,7 @@ class CoursesService end joined = StudentsForCourse.where('student_id = ? and course_id = ?', params[:user_id],params[:course_id]) joined.each do |join| - join.delete + join.destroy end end @@ -1261,7 +1261,7 @@ class CoursesService else joined = StudentsForCourse.where('student_id = ? and course_id = ?', params[:user_id],params[:id]) joined.each do |join| - join.delete + join.destroy end member.course_group_id = 0 end @@ -1305,7 +1305,7 @@ class CoursesService end joined = StudentsForCourse.where('student_id = ? and course_id = ?', member.user_id,course.id) joined.each do |join| - join.delete + join.destroy end roles = Role.givable.all[3..5] #移出课程发送消息 diff --git a/app/views/courses/_new_member_list.html.erb b/app/views/courses/_new_member_list.html.erb index 7b59b2db6..d04e14cc8 100644 --- a/app/views/courses/_new_member_list.html.erb +++ b/app/views/courses/_new_member_list.html.erb @@ -1,8 +1,9 @@ +<% is_teacher = User.current.allowed_to?(:as_teacher, @course) || User.current.admin? %> <% if members.any? %> - + - - - - + <% if is_teacher %> + + <% end %> @@ -98,10 +102,10 @@ + <% if is_teacher %> + + <% end %> <% end %> diff --git a/app/views/courses/delete_member.js.erb b/app/views/courses/delete_member.js.erb new file mode 100644 index 000000000..144ad749b --- /dev/null +++ b/app/views/courses/delete_member.js.erb @@ -0,0 +1,4 @@ +hideModal(); +$("#member_li_<%=params[:member_id] %>").html(""); +$("#st_groups").html("<%=escape_javascript(render :partial => 'new_groups_name', :locals => {:course_groups => @course_groups}) %>"); +$("#group_children_list").html("<%= escape_javascript( render :partial => 'layouts/group_children_list', :locals => {:course => @course})%>"); diff --git a/config/routes.rb b/config/routes.rb index e5a122f19..e25689099 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1238,6 +1238,7 @@ RedmineApp::Application.routes.draw do get "switch_role" get 'search_not_group_member' post 'add_members' + get 'delete_member' end collection do match 'join_private_courses', :via => [:get, :post] diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 6248194f5..a7126c002 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -1768,6 +1768,15 @@ function expand_course_list(id, target, btnid, count) { btn.parent().show(); } } + +//点击删除时的确认弹框 +function delete_confirm_box(url, str){ + var htmlvalue = '

提示

'+ + '

' + str + '

确定'+ + '取消
'; + pop_box_new(htmlvalue, 300, 140); +} + //删除组织成员 function ifDeleteOrgMember(id,name){ var htmlvalue = "
您确定要删除"+name+"吗?

确定取消
" + diff --git a/public/stylesheets/syllabus.css b/public/stylesheets/syllabus.css index 3eecc01c6..64640f96f 100644 --- a/public/stylesheets/syllabus.css +++ b/public/stylesheets/syllabus.css @@ -629,9 +629,11 @@ a:hover.sy_class_ltitle{ color:#333;} .sy_class_users_st img{ width:30px;height:30px; border: 1px solid #fff;-webkit-border-radius:50px;-moz-border-radius:50px;-o-border-radius:50px;border-radius:50px;} .sy_fenban_select{height: 28px; background-color: #fff; border: 1px solid #d1d1d1;-webkit-border-radius:3px;-moz-border-radius:3px;-o-border-radius:3px;border-radius:3px; border:1px solid #d3d3d3;padding-left:5px; color:#888; box-shadow: inset 0px 0px 5px #dcdcdc; } .sy_new_table_width tr th.sy_th10{ width: 10%; } -.sy_new_table_width tr th.sy_th0{ width: 12.5%; } +.sy_new_table_width tr th.sy_th0{ width: 12%; } +.sy_new_table_width tr th.sy_th1{ width: 12.5%; } .sy_new_table_width tr th.sy_th15{ width: 15%; } -.sy_new_table_width tr th.sy_th7{ width: 7%;} +.sy_new_table_width tr th.sy_th6{ width: 6%;} +.sy_new_table_width tr th.sy_th3{ width: 3%;} .sy_new_table_width tr th.sy_th13{ width: 13%;} .sy_fenban_tap{ cursor: pointer; position: relative;} .sy_fenban_tap:hover .sy_fenban_show{ display: block;}
序号序号 姓名 <%= link_to '学号', member_score_sort_course_path(:sort_type => 'student_id', :sort_by => (@score_sort_by == "desc" ? "asc" : "desc"), :group_id => (@group ? (@group == -1 ? -1 : @group.id) : 0), :search_name => (@search_name ? @search_name : nil)), :result => members, method: 'get', remote: true, :style => 'color:#000000;'%> @@ -12,7 +13,7 @@ <% end %> + <%= link_to '作业得分', member_score_sort_course_path(:sort_type => 'score', :sort_by => (@score_sort_by == "desc" ? "asc" : "desc"), :group_id => (@group ? (@group == -1 ? -1 : @group.id) : 0), :search_name => (@search_name ? @search_name : nil)), :result => members, method: 'get', remote: true, :style => 'color:#000000;'%> <% if @sort_type == "score" && @score_sort_by == 'desc' %> @@ -24,7 +25,7 @@ 班级作业的得分总和

+ <%= link_to '测评得分', member_score_sort_course_path(:sort_type => 'ex_score', :sort_by => (@score_sort_by == "desc" ? "asc" : "desc"), :group_id => (@group ? (@group == -1 ? -1 : @group.id) : 0), :search_name => (@search_name ? @search_name : nil)), :result => members, method: 'get', remote: true, :style => 'color:#000000;'%> <% if @sort_type == "ex_score" && @score_sort_by == 'desc' %> @@ -36,7 +37,7 @@ 班级测验的得分总和

+ <%= link_to '社区得分', member_score_sort_course_path(:sort_type => 'act_score', :sort_by => (@score_sort_by == "desc" ? "asc" : "desc"), :group_id => (@group ? (@group == -1 ? -1 : @group.id) : 0),:search_name => (@search_name ? @search_name : nil)) ,:result => members,method: 'get', remote: true, :style => 'color:#000000;'%> <% if @sort_type == "act_score" && @score_sort_by == 'desc' %> @@ -56,13 +57,16 @@

总得分 + 总得分

积分规则
作业得分+测评得分+社区得分

分班
<%= format("%0.2f", sum) %> -
+

- <%= user.show_name %>
+ <%= user.show_name %>(<%=user.login %>)
资源    发布数:<%= member.resource_num.nil? ? 0 : member.resource_num %>
问答    发布数:<%= member.message_num.nil? ? 0 : member.message_num %>回复数:<%= member.message_reply_num.nil? ? 0 : member.message_reply_num %>
通知    提交数:<%= member.news_num.nil? ? 0 : member.news_num %>留言数:<%= member.news_reply_num.nil? ? 0 : member.news_reply_num %>
@@ -112,7 +116,7 @@

- <% if User.current.allowed_to?(:as_teacher, @course) || User.current.admin? || User.current == user %> + <% if is_teacher || User.current == user %> <% if @course.course_groups.empty? %> <%=member.course_group_id == 0 ? "暂无" : member.course_group.name %> <% else %> @@ -130,6 +134,11 @@ <%=member.course_group_id == 0 ? "暂无" : member.course_group.name %> <% end %> + +