<%= render :partial => 'groups_name', locals: {:course_groups => @course_groups} %>
<%= error_messages_for 'member' %>
<%= render :partial => @render_file, :locals => {:members => @members} %>
diff --git a/app/views/courses/searchgroupmembers.js.erb b/app/views/courses/searchgroupmembers.js.erb
new file mode 100644
index 000000000..c6ff97164
--- /dev/null
+++ b/app/views/courses/searchgroupmembers.js.erb
@@ -0,0 +1,4 @@
+/**
+ * Created by Administrator on 2014/12/3.
+ */
+$("#member_content").html("<%= escape_javascript( render :partial => @render_file, :locals => {:members => @results})%>");
\ No newline at end of file
diff --git a/app/views/courses/searchmembers.js b/app/views/courses/searchmembers.js.erb
similarity index 100%
rename from app/views/courses/searchmembers.js
rename to app/views/courses/searchmembers.js.erb
diff --git a/app/views/courses/updategroupname.js.erb b/app/views/courses/updategroupname.js.erb
new file mode 100644
index 000000000..8eb4e865c
--- /dev/null
+++ b/app/views/courses/updategroupname.js.erb
@@ -0,0 +1,4 @@
+/**
+ * Created by Administrator on 2014/12/3.
+ */
+$("#st_groups").html("<%= escape_javascript( render :partial => 'groups_name', locals: {:course_groups => @course_groups})%>");
\ No newline at end of file
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index 5aedd93a7..13302a77c 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -1120,6 +1120,7 @@ zh:
text_workflow_edit: 选择角色和跟踪标签来编辑工作流程
text_are_you_sure: 您确定要删除吗?
text_are_you_sure_out: 你确定要退出该课程吗?
+ text_are_you_sure_out_group: 你确定要退出该分组吗?
text_journal_changed: "%{label} 从 %{old} 变更为 %{new}"
text_journal_set_to: "%{label} 被设置为 %{value}"
text_journal_deleted: "%{label} 已删除 (%{old})"
diff --git a/config/routes.rb b/config/routes.rb
index 7a6a8aae0..f3f2a7e91 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -644,7 +644,9 @@ RedmineApp::Application.routes.draw do
post 'finishcourse'
post 'restartcourse'
match "searchmembers", :controller => 'courses', :action => 'searchmembers', :via => [:post,:get]
-
+ match "searchgroupmembers", :via => [:post, :get]
+ match "updategroupname", :via => [:post, :get]
+ match "addgroups", :via => [:post, :get]
end
collection do
match 'join_private_courses', :via => [:get, :post]
@@ -741,6 +743,8 @@ RedmineApp::Application.routes.draw do
post 'join_in/join', :to => 'courses#join', :as => 'join'
delete 'join_in/join', :to => 'courses#unjoin'
+ post 'join_in/join_group', :to => 'courses#join_group', :as => 'join_group'
+ delete 'join_in/join_group', :to => 'courses#unjoin_group'
post 'calls/:id/join_in_contest', :to => 'bids#join_in_contest', :as => 'join_in_contest'
delete 'calls/:id/join_in_contest', :to => 'bids#unjoin_in_contest'
match 'calls/:id/show_participator', :to => 'bids#show_participator' # bai
@@ -749,6 +753,7 @@ RedmineApp::Application.routes.draw do
delete 'attachment/:id', :to => 'attachments#delete_homework'
match 'new_join', :to => 'courses#new_join', :as => 'try_join'
+ match 'new_join_group', :to => 'courses#new_join_group', :as => 'try_join_group'
match 'new_join_in_contest', :to => 'bids#new_join', :as => 'try_join_in_contest'
match 'projects/:id/respond', :to => 'projects#project_respond', :via => :post
match 'calls/:id/manage',:to => 'bids#manage',:via => [:get,:post]
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 4/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E3=80=8A=E5=AD=A6?=
=?UTF-8?q?=E7=94=9F=E5=8A=A0=E5=85=A5=EF=BC=8C=E9=80=80=E5=87=BA=E5=88=86?=
=?UTF-8?q?=E7=BB=84=E3=80=8B=E5=8A=9F=E8=83=BD=20Signed-off-by:=20alan=20?=
=?UTF-8?q?<547533434@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]
From cfb8edbfe2a19cd335be3996c1341a8b84e9f026 Mon Sep 17 00:00:00 2001
From: alan <547533434@qq.com>
Date: Fri, 5 Dec 2014 10:53:43 +0800
Subject: [PATCH 5/6] =?UTF-8?q?=E5=88=86=E7=BB=84=E5=8A=9F=E8=83=BD?=
=?UTF-8?q?=E6=A0=B7=E5=BC=8F=E5=BE=AE=E8=B0=83=20Signed-off-by:=20alan=20?=
=?UTF-8?q?<547533434@qq.com>?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/courses_controller.rb | 4 ++++
app/helpers/watchers_helper.rb | 7 +++++--
app/views/courses/_groups_name.html.erb | 7 +++++--
app/views/courses/_member_list.html.erb | 4 ++--
public/stylesheets/course_group.css | 16 +++++++++++++++-
5 files changed, 31 insertions(+), 7 deletions(-)
diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index 87a5184f7..2e3f42784 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -225,6 +225,8 @@ class CoursesController < ApplicationController
group.name = params[:group_name]
group.save
end
+ @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1'
+ @is_remote = true
@course_groups = @course.course_groups
end
def join_group
@@ -233,6 +235,7 @@ class CoursesController < ApplicationController
member.course_group_id = group.id
member.save
@group = group
+
search_group_members group
end
def unjoin_group
@@ -241,6 +244,7 @@ class CoursesController < ApplicationController
member.course_group_id = 0
member.save
@group = group
+
search_group_members group
end
def searchgroupmembers
diff --git a/app/helpers/watchers_helper.rb b/app/helpers/watchers_helper.rb
index 6818b4859..8acd0b577 100644
--- a/app/helpers/watchers_helper.rb
+++ b/app/helpers/watchers_helper.rb
@@ -126,13 +126,16 @@ module WatchersHelper
text = l(:label_exit_course)
if joined
- 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
+ link_to text, {:controller => "courses", :action => "join_group", :object_id => "#{group.id}"},
+ :remote => true, :method => 'delete',
+ :id => "#{group.id}", :style => "padding: 8px 8px 4px;",
+ :confirm => l(:text_are_you_sure_out_group), :class => 'group_in'
end
else
text = l(:label_new_join)
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;"
+ submit_tag text, class: "group_in", style: "width: 43px;height: 21px;"
end
end
end
diff --git a/app/views/courses/_groups_name.html.erb b/app/views/courses/_groups_name.html.erb
index 32f85ba21..de8425b45 100644
--- a/app/views/courses/_groups_name.html.erb
+++ b/app/views/courses/_groups_name.html.erb
@@ -16,10 +16,11 @@
<% if course_groups.any? %>
<% course_groups.each do |group| %>
+ <% group_display = group.name + "(" + group.members.count.to_s + "人)" %>
<%= form_tag(searchgroupmembers_course_path(@course,:group_id => group.id), method: 'get', remote: true) do %>
<%#= text_field_tag "group_id", params[:group_id] %>
- <%= submit_tag group.name, :onclick => "$asign_id(#{group.id})",:style => "background: #f8df8c; border:0px; color: black; float:left;"%>
+ <%= submit_tag group_display, :onclick => "$asign_id(#{group.id})",:style => "background: #f8df8c; border:0px; color: black; float:left;"%>
<% if @canShowCode %>
<% end %>
@@ -36,12 +37,13 @@
<% end %>
<% end %>
+ <% if @canShowCode %>
+添加分班
- <%= form_tag( addgroups_course_path(@course), method: 'get',:remote=>true) do %>
+ <%= form_tag( addgroups_course_path(@course), method: 'get',:remote=>true) do %>
<%= text_field_tag "group_name", params[:group_name], size: "20", class: "isTxt w90 f_l", style: "padding: 0px", maxlength: "100" %>
<%= submit_tag '', class: "submit f_l", style: "width: 43px;height: 21px;background: url(/images/btn.png) no-repeat 0 0;" %>
@@ -50,6 +52,7 @@
<% end %>
+ <% end %>
diff --git a/app/views/courses/_member_list.html.erb b/app/views/courses/_member_list.html.erb
index c915587c1..cba88b141 100644
--- a/app/views/courses/_member_list.html.erb
+++ b/app/views/courses/_member_list.html.erb
@@ -1,9 +1,9 @@
-
+
<% if @group %>
<% if !@canShowCode %>
<%= join_in_course_group(@course.course_groups,@group, User.current) %>
<% end %>
- <%= @group.name %><%= @subPage_title %>
+ <%= @group.name %><%= @subPage_title %>
<% end %>
diff --git a/public/stylesheets/course_group.css b/public/stylesheets/course_group.css
index 81e9f68e4..10d69f384 100644
--- a/public/stylesheets/course_group.css
+++ b/public/stylesheets/course_group.css
@@ -79,4 +79,18 @@ a:hover.st_add{ color:#ff8e15;}
.submit{height:21px;border:0; cursor:pointer; background:url(../images/btn.png) no-repeat 0 0;width:42px; margin-top:2px; margin-left:3px; }
.submit_2{height:21px;border:0; cursor:pointer; background:url(../images/btn1.png) no-repeat 0 0;width:42px; margin-top:2px; margin-left:3px; }
-.isTxt{background:#fbfbfb url(../images/inputBg.png) repeat-x left top;height:22px;line-height:22px;border:1px solid #c1c1c1;padding:0 5px;color:#666666;}
\ No newline at end of file
+.isTxt{background:#fbfbfb url(../images/inputBg.png) repeat-x left top;height:22px;line-height:22px;border:1px solid #c1c1c1;padding:0 5px;color:#666666;}
+.group_in {
+ width:60px !important;
+ height:28px !important;
+ color:#fff !important;
+ margin-right:5px !important;
+ border:none !important;
+ margin-left:0px !important;
+ box-shadow: none !important;
+
+ border-radius: 0 !important;
+ text-shadow: none !important;
+ border:1px solid #1c9ec7;
+ background:#1c9ec7;
+}
\ No newline at end of file
From 020242a8c973109f958292601b172c296eaf873e Mon Sep 17 00:00:00 2001
From: alan <547533434@qq.com>
Date: Fri, 5 Dec 2014 11:27:51 +0800
Subject: [PATCH 6/6] =?UTF-8?q?=E5=A2=9E=E5=87=8F=E3=80=8A=E6=9F=A5?=
=?UTF-8?q?=E8=AF=A2=E6=98=BE=E7=A4=BA=E4=BA=BA=E6=95=B0=E4=BB=A5=E5=8F=8A?=
=?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=85=A8=E9=83=A8=E4=BA=BA=E6=95=B0=E3=80=8B?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=20Signed-off-by:=20alan=20<547533434@qq.com>?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/courses_controller.rb | 1 +
app/views/courses/_groups_name.html.erb | 3 ++-
app/views/courses/_member_list.html.erb | 3 +++
config/locales/zh.yml | 4 +++-
4 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index 2e3f42784..d266f5990 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -205,6 +205,7 @@ class CoursesController < ApplicationController
q = "#{params[:name].strip}"
#(redirect_to stores_url, :notice => l(:label_sumbit_empty);return) if params[:name].blank?
@results = searchStudent_by_name(@course, q)
+ @result_count = @results.count
@results = paginateHelper @results
end
diff --git a/app/views/courses/_groups_name.html.erb b/app/views/courses/_groups_name.html.erb
index de8425b45..151eb9c7e 100644
--- a/app/views/courses/_groups_name.html.erb
+++ b/app/views/courses/_groups_name.html.erb
@@ -6,11 +6,12 @@
分班:
+ <% course_member_count = l(:label_all) + "(" + @course.members.count.to_s + "人)" %>
<%= form_tag( searchgroupmembers_course_path(@course, :group_id => 0), method: 'get',:remote=>true) do %>
<%= hidden_field_tag "all", params[:group_id], name: 'all' %>
- <%= submit_tag l(:label_all), :style => "background: #f8df8c; border:0px; color: black" %>
+ <%= submit_tag course_member_count, :style => "background: #f8df8c; border:0px; color: black" %>
<% end %>
diff --git a/app/views/courses/_member_list.html.erb b/app/views/courses/_member_list.html.erb
index cba88b141..436a339dd 100644
--- a/app/views/courses/_member_list.html.erb
+++ b/app/views/courses/_member_list.html.erb
@@ -9,6 +9,9 @@
<% if members.any? %>
+ <% if @result_count %>
+
<%= l(:label_search_member_count) %><%= @result_count %><%= l(:label_member_people) %>
+ <% end %>
<% members.each do |member| %>
<% next if member.new_record? %>
diff --git a/config/locales/zh.yml b/config/locales/zh.yml
index ef90c7d10..cecc9b465 100644
--- a/config/locales/zh.yml
+++ b/config/locales/zh.yml
@@ -569,7 +569,9 @@ zh:
label_role_plural: 角色
label_role_new: 新建角色
label_role_and_permissions: 角色和权限
- label_member: 成员
+ label_member:
+ label_search_member_count: 共搜索到
+ label_member_people: 人
label_member_new: 添加成员
label_member_plural: 成员
label_tracker: 跟踪标签