diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index c12f59f21..c4ef0fe60 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -20,7 +20,7 @@ class CoursesController < ApplicationController
before_filter :can_show_course, :except => []
before_filter :logged_user_by_apptoken,:only => [:show,:new_homework,:feedback]
before_filter :find_course, :except => [ :index, :search,:list, :new,:join,:unjoin, :create, :copy, :statistics, :new_join, :course, :enterprise_course, :course_enterprise,:view_homework_attaches,:join_private_courses]
- before_filter :authorize_course, :only => [:show, :settings, :edit, :update, :modules, :close, :reopen, :view_homework_attaches, :course]
+ before_filter :authorize_course, :only => [:show, :settings, :edit, :update, :modules, :close, :reopen, :view_homework_attaches, :course,:search_member]
before_filter :authorize_course_global, :only => [:view_homework_attaches, :new,:create]
before_filter :require_admin, :only => [:copy, :archive, :unarchive, :destroy, :calendar]
before_filter :toggleCourse, :only => [:finishcourse, :restartcourse]
@@ -418,6 +418,21 @@ class CoursesController < ApplicationController
end
+ def search_member
+ if User.current.allowed_to?(:as_teacher,@course)
+ q = "#{params[:q].strip}"
+ @roles = Role.givable.all[3..5]
+ if q.nil? || q == ""
+ @members = @course.member_principals.includes(:roles, :principal).all.sort
+ else
+ @members = searchmember_by_name(@course.member_principals.includes(:roles, :principal).all.sort,q)
+ end
+
+ else
+ render_403
+ end
+ end
+
def create
cs = CoursesService.new
@course = cs.create_course(params,User.current)[:course]
diff --git a/app/views/courses/_course_members.html.erb b/app/views/courses/_course_members.html.erb
index 38ef7e9db..db6ec4b55 100644
--- a/app/views/courses/_course_members.html.erb
+++ b/app/views/courses/_course_members.html.erb
@@ -1,3 +1,14 @@
+
+ <%= form_tag({:controller => 'courses', :action => 'search_member'},:id => "course_member_search_form", :method => :get, :class => "search_form_course",:remote => true) do %>
+
+ <%= text_field_tag 'q', params[:q], :placeholder => l(:label_user_name), :class => "search_text fl" %>
+
+ <%= l(:label_search)%>
+
+
+
+ <% end %>
+
-
diff --git a/app/views/courses/search_member.js.erb b/app/views/courses/search_member.js.erb
new file mode 100644
index 000000000..a8fa0b986
--- /dev/null
+++ b/app/views/courses/search_member.js.erb
@@ -0,0 +1 @@
+$("#course_member_list").html("<%= escape_javascript(render :partial => "courses/member") %>");
\ No newline at end of file
diff --git a/config/locales/courses/zh.yml b/config/locales/courses/zh.yml
index 30144bf1d..e0a39f51d 100644
--- a/config/locales/courses/zh.yml
+++ b/config/locales/courses/zh.yml
@@ -86,4 +86,8 @@ zh:
#boards
label_course_momes_count: "个帖子"
- #boards count
\ No newline at end of file
+ #boards count
+
+ #setting
+ label_user_name: "用户名称"
+ #setting end
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 911a45848..b3fd769a2 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -677,6 +677,7 @@ RedmineApp::Application.routes.draw do
resources :courses do
member do
get 'settings(/:tab)', :action => 'settings', :as => 'settings'
+ get 'search_member', :action => 'search_member'
get 'homework', :action => 'homework', :as => 'homework'
get 'new_homework', :action => 'new_homework', :as => 'new_homework'
get 'file', :action => 'file', :as => 'file'
diff --git a/lib/redmine.rb b/lib/redmine.rb
index b8284ddc5..ad73c2db1 100644
--- a/lib/redmine.rb
+++ b/lib/redmine.rb
@@ -110,7 +110,7 @@ Redmine::AccessControl.map do |map|
map.permission :view_course, {:courses => [:show], :activities => [:index]}, :public => true, :read => true
map.permission :search_course, {:search => :index}, :public => true, :read => true
map.permission :add_course, {:courses => [:new, :create]}, :require => :loggedin ,:belong_to_course => true
- map.permission :edit_course, {:courses => [:settings, :edit, :update]}, :require => :member ,:belong_to_course => true
+ map.permission :edit_course, {:courses => [:settings, :edit, :update,:search_member]}, :require => :member ,:belong_to_course => true
map.permission :close_course, {:courses => [:close, :reopen]}, :require => :member, :read => true ,:belong_to_course => true
map.permission :select_course_modules, {:courses => :modules}, :require => :member ,:belong_to_course => true
map.permission :view_course_journals_for_messages, {:courses => :feedback}, :require => :member,:read => true ,:belong_to_course => true
diff --git a/public/javascripts/course.js b/public/javascripts/course.js
index 8a16def1d..fe9ea965c 100644
--- a/public/javascripts/course.js
+++ b/public/javascripts/course.js
@@ -300,6 +300,31 @@ function submitSerch(content)
{
if(regexName(content)){$("#course_search_form").submit();}
}
+
+//验证搜索时输入名字
+function regexQ(content)
+{
+ var name = $.trim($("#q").val());
+ if(name.length == 0)
+ {
+ $("#course_member_name_span").text(content);
+ $("#course_member_name_span").css('color','#ff0000');
+ $("#course_member_name_span").focus();
+ return false;
+ }
+ else
+ {
+ $("#course_member_name_span").text("");
+ return true;
+ }
+}
+//提交课程成员搜索
+function submitMemberSerch(content)
+{
+ //if(regexQ(content)){$("#course_member_search_form").submit();}
+ $("#course_member_search_form").submit();
+}
+
//课程描述显示更多信息
function show_more_msg()
{
diff --git a/public/stylesheets/courses.css b/public/stylesheets/courses.css
index 246622b78..59c43cd86 100644
--- a/public/stylesheets/courses.css
+++ b/public/stylesheets/courses.css
@@ -273,6 +273,8 @@ a:hover.tijiao{ background:#0f99a9;}
a.member_btn{ padding: 3px 5px; background:#15bccf; color:#fff;}
a:hover.member_btn{ background:#329cbd;}
.hol{display: none;}
+.search_course{margin-top:8px;margin-left:8px;}
+.search_form_course{margin-top:8px;margin-left:8px;}
/* 新建项目 */
.pro_new{ }