From c9b84d0a352732c100426ed95e452f8333eb0c2e Mon Sep 17 00:00:00 2001 From: alan <547533434@qq.com> Date: Thu, 4 Dec 2014 22:02:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E3=80=8A=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=EF=BC=8C=E9=80=80=E5=87=BA=E5=88=86=E7=BB=84?= =?UTF-8?q?=E3=80=8B=E5=8A=9F=E8=83=BD=20Signed-off-by:=20alan=20<54753343?= =?UTF-8?q?4@qq.com>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 41 ++++++++++++++++--------- app/helpers/courses_helper.rb | 2 +- app/helpers/watchers_helper.rb | 17 +++++++--- app/models/course_group.rb | 2 +- app/models/principal.rb | 2 +- app/views/courses/_groups_name.html.erb | 7 ++--- app/views/courses/_member_list.html.erb | 9 ++++++ app/views/courses/join_group.js.erb | 2 ++ app/views/courses/unjoin_group.js.erb | 2 ++ config/routes.rb | 2 ++ 10 files changed, 58 insertions(+), 28 deletions(-) create mode 100644 app/views/courses/join_group.js.erb create mode 100644 app/views/courses/unjoin_group.js.erb diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 8a3c58244..87a5184f7 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -78,21 +78,9 @@ class CoursesController < ApplicationController format.js { render :partial => 'set_join', :locals => {:user => User.current, :course => Course.find(params[:object_id]), :object_id => params[:object_id]} } end end - def join_group - group = CourseGroup.find(params[:object_id]) - member = Member.find(:conditions => {:course_id => @course.id, :user_id => User.current.id}).first - member.course_group_id = group.id - member.save - end - def unjoin_group - member = Member.find(:conditions => {:course_group_id => params[object_id], :user_id => User.current.id}).first - member.course_group_id = 0 - member.save - end - def new_join_group - end + def join_private_courses respond_to do |format| format.js @@ -239,20 +227,43 @@ class CoursesController < ApplicationController end @course_groups = @course.course_groups end - + def join_group + group = CourseGroup.find(params[:object_id]) + member = Member.where(:course_id => @course.id, :user_id => User.current.id).first + member.course_group_id = group.id + member.save + @group = group + search_group_members group + end + def unjoin_group + group = CourseGroup.find(params[:object_id]) + member = Member.where(:course_id => @course.id, :user_id => User.current.id).first + member.course_group_id = 0 + member.save + @group = group + search_group_members group + end def searchgroupmembers @render_file = 'member_list' @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1' @is_remote = true if params[:group_id] && params[:group_id] != "0" @group = CourseGroup.find(params[:group_id]) - @results = searchStudent_by_group(@group) + @results = searchStudent_by_group(@group, @course) else @results = searchStudent(@course) end @results = paginateHelper @results end + def search_group_members group + @render_file = 'member_list' + @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1' + @is_remote = true + + @results = searchStudent_by_group(group, @course) + @results = paginateHelper @results + end def member ## 有角色参数的才是课程,没有的就是项目 @render_file = 'member_list' diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb index 5da100fa9..7356fe8fa 100644 --- a/app/helpers/courses_helper.rb +++ b/app/helpers/courses_helper.rb @@ -199,7 +199,7 @@ module CoursesHelper end members end - def searchStudent_by_group group + def searchStudent_by_group group, project #searchPeopleByRoles(project, StudentRoles) members = [] group.members.each do |m| diff --git a/app/helpers/watchers_helper.rb b/app/helpers/watchers_helper.rb index ca5efd364..6818b4859 100644 --- a/app/helpers/watchers_helper.rb +++ b/app/helpers/watchers_helper.rb @@ -113,21 +113,27 @@ module WatchersHelper @isjoin = false coursegroups.each do |g| - @isjoin = user.member_of_course_group?(g) + g.members.each do |mem| + if mem.user_id == user.id + @isjoin = true + end + end end url_t = join_group_path(:object_id => group.id) - url_f = try_join_group_path(:object_id => group.id) + url_f = join_group_path(:object_id => group.id) if @isjoin == true joined = user.member_of_course_group?(group) text = l(:label_exit_course) if joined - link_to text, url_t, :remote => true, :method => 'delete', :id => "#{group.id}", :confirm => l(:text_are_you_sure_out), :class => []+options + link_to text, {:controller => "courses", :action => "join_group", :object_id => "#{group.id}"}, :remote => true, :method => 'delete', :id => "#{group.id}", :confirm => l(:text_are_you_sure_out_group), :class => []+options end else text = l(:label_new_join) - link_to text, url_f, :remote => true, :method => 'post', :id => "#{group.id}", :class => []+options + form_tag({:controller => "courses", :action => "join_group", :object_id => "#{group.id}"}, :remote => true, :method => 'post') do + submit_tag text, class: "submit f_l", style: "width: 43px;height: 21px;" + end end end @@ -146,7 +152,8 @@ module WatchersHelper if joined link_to text, url_t, :remote => true, :method => method, :id => "#{course.id}", :confirm => l(:text_are_you_sure_out), :class => []+options else - link_to text, url_f, :remote => true, :method => method, :id => "#{course.id}", :class => []+options + + link_to text, url_f, :remote => true, :method => method, :id => "#{course.id}", :class => []+options end end diff --git a/app/models/course_group.rb b/app/models/course_group.rb index bb7be5af9..6126352f6 100644 --- a/app/models/course_group.rb +++ b/app/models/course_group.rb @@ -1,7 +1,7 @@ class CourseGroup < ActiveRecord::Base # attr_accessible :title, :body belongs_to :course - has_many :members, :include => [:principal, :roles], :conditions => "#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{Principal::STATUS_ACTIVE}" + has_many :members has_many :memberships, :class_name => 'Member' has_many :member_principals, :class_name => 'Member', :include => :principal, diff --git a/app/models/principal.rb b/app/models/principal.rb index 30c064f6f..2eaba6796 100644 --- a/app/models/principal.rb +++ b/app/models/principal.rb @@ -26,7 +26,7 @@ class Principal < ActiveRecord::Base has_many :members, :foreign_key => 'user_id', :dependent => :destroy has_many :memberships, :class_name => 'Member', :foreign_key => 'user_id', :include => [ :project, :roles ], :conditions => "#{Project.table_name}.status<>#{Project::STATUS_ARCHIVED}", :order => "#{Project.table_name}.name" - has_many :coursememberships, :class_name => 'Member', :foreign_key => 'user_id', :include => [ :course, :roles ], :conditions => "#{Course.table_name}.status<>#{Course::STATUS_ARCHIVED}", :order => "#{Course.table_name}.name" + has_many :coursememberships, :class_name => 'Member', :foreign_key => 'user_id', :include => [ :course, :roles ], :order => "#{Course.table_name}.name" has_many :projects, :through => :memberships #add by nwb has_many :courses, :through => :coursememberships diff --git a/app/views/courses/_groups_name.html.erb b/app/views/courses/_groups_name.html.erb index 6256bd4f7..32f85ba21 100644 --- a/app/views/courses/_groups_name.html.erb +++ b/app/views/courses/_groups_name.html.erb @@ -51,9 +51,6 @@ -
- <%= @group %><%= @subPage_title %> - <% if !@canShowCode %> - <%= join_in_course_group(@course.course_groups,@group, User.current) %> - <% end %> + + diff --git a/app/views/courses/_member_list.html.erb b/app/views/courses/_member_list.html.erb index cd620c52f..c915587c1 100644 --- a/app/views/courses/_member_list.html.erb +++ b/app/views/courses/_member_list.html.erb @@ -1,3 +1,12 @@ +
+<% if @group %> + <% if !@canShowCode %> + <%= join_in_course_group(@course.course_groups,@group, User.current) %> + <% end %>    + <%= @group.name %><%= @subPage_title %> + +<% end %> +
<% if members.any? %> <% members.each do |member| %> diff --git a/app/views/courses/join_group.js.erb b/app/views/courses/join_group.js.erb new file mode 100644 index 000000000..d1901db83 --- /dev/null +++ b/app/views/courses/join_group.js.erb @@ -0,0 +1,2 @@ + +$("#member_content").html("<%= escape_javascript( render :partial => @render_file, :locals => {:members => @results})%>"); \ No newline at end of file diff --git a/app/views/courses/unjoin_group.js.erb b/app/views/courses/unjoin_group.js.erb new file mode 100644 index 000000000..d1901db83 --- /dev/null +++ b/app/views/courses/unjoin_group.js.erb @@ -0,0 +1,2 @@ + +$("#member_content").html("<%= escape_javascript( render :partial => @render_file, :locals => {:members => @results})%>"); \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index f3f2a7e91..835e6be6e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -647,6 +647,8 @@ RedmineApp::Application.routes.draw do match "searchgroupmembers", :via => [:post, :get] match "updategroupname", :via => [:post, :get] match "addgroups", :via => [:post, :get] + post 'join_in/join_group', :to => 'courses#join_group', :as => 'join_group' + delete 'join_in/join_group', :to => 'courses#unjoin_group' end collection do match 'join_private_courses', :via => [:get, :post]