diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index 7b3130026..581005bf7 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -323,6 +323,7 @@ class CoursesController < ApplicationController
end
respond_to do |format|
if params[:page]
+ format.html {render :layout => 'base_courses'}
format.js
else
format.html {render :layout => 'base_courses'}
@@ -402,6 +403,9 @@ class CoursesController < ApplicationController
@issue_category ||= IssueCategory.new
@member ||= @course.members.new
@trackers = Tracker.sorted.all
+
+ @roles = Role.givable.all[3..5]
+ @members = @course.member_principals.includes(:roles, :principal).all.sort
else
render_403
end
diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb
index aaaa4484d..fc243741a 100644
--- a/app/controllers/members_controller.rb
+++ b/app/controllers/members_controller.rb
@@ -133,6 +133,9 @@ class MembersController < ApplicationController
elsif @course
course_info = []
if params[:membership]
+ @create_member_error_messages = "角色不能留空" unless params[:membership][:role_ids]
+ @create_member_error_messages = "用户不能留空" unless params[:membership][:user_ids]
+
if params[:membership][:user_ids]
attrs = params[:membership].dup
user_ids = attrs.delete(:user_ids)
@@ -140,7 +143,7 @@ class MembersController < ApplicationController
member = Member.new(:role_ids => params[:membership][:role_ids], :user_id => user_id)
role = Role.find_by_id(params[:membership][:role_ids])
# 这里的判断只能通过角色名,可以弄成常量
- if role.name == "学生" || role.name == "Student"
+ if role && (role.name == "学生" || role.name == "Student")
StudentsForCourse.create(:student_id => user_id, :course_id =>@course.id)
end
members << member
@@ -159,6 +162,11 @@ class MembersController < ApplicationController
end
@course.members << members
@course.course_infos << course_info
+
+ @roles = Role.givable.all[3..5]
+ members = @course.member_principals.includes(:roles, :principal).all.sort
+ else
+ @create_member_error_messages = l(:label_user_role_null)
end
respond_to do |format|
format.html { redirect_to_settings_in_courses }
@@ -242,6 +250,9 @@ class MembersController < ApplicationController
end
end
end
+ @roles = Role.givable.all[3..5]
+ @members = @course.member_principals.includes(:roles, :principal).all.sort
+ @member = @course.members.new
end
saved = @member.save
@@ -304,7 +315,8 @@ class MembersController < ApplicationController
joined.each do |join|
join.delete
end
-
+ @roles = Role.givable.all[3..5]
+ @members = @course.member_principals.includes(:roles, :principal).all.sort
end
respond_to do |format|
format.html { redirect_to_settings_in_courses }
diff --git a/app/helpers/members_helper.rb b/app/helpers/members_helper.rb
index ed18b7ae4..29ba94924 100644
--- a/app/helpers/members_helper.rb
+++ b/app/helpers/members_helper.rb
@@ -45,17 +45,14 @@ module MembersHelper
# 课程可添加的成员列表
def render_principals_for_new_course_members(course)
scope = Principal.active.sorted.not_member_of_course(course).like(params[:q])
- principal_count = scope.count
- principal_pages = Redmine::Pagination::Paginator.new principal_count, 10, params['page']
- principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).all
-
- s = content_tag('div', principals_check_box_tags_ex('membership[user_ids][]', principals), :id => 'principals')
+ principals = paginateHelper scope,10
+ s = content_tag('ul', project_member_check_box_tags_ex('membership[user_ids][]', principals), :class => 'mb5', :id => 'principals')
- links = pagination_links_full(principal_pages, principal_count, :per_page_links => false) {|text, parameters, options|
+ links = pagination_links_full(@obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true) {|text, parameters, options|
link_to text, autocomplete_course_memberships_path(course, parameters.merge(:q => params[:q], :format => 'js')), :remote => true
}
- s + content_tag('div', content_tag('ul', links), :class => 'pagination_new')
+ s + content_tag('ul', links,:class => 'wlist',:id => "course_member_pagination_links")
end
diff --git a/app/views/courses/_course_members.html.erb b/app/views/courses/_course_members.html.erb
new file mode 100644
index 000000000..38ef7e9db
--- /dev/null
+++ b/app/views/courses/_course_members.html.erb
@@ -0,0 +1,49 @@
+
+
+
添加成员
+ <%= form_for(@member, {:as => :membership, :url => course_memberships_path(@course), :remote => true, :method => :post}) do |f| %>
+
+
+
+ <%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_course_memberships_path(@course, :format => 'js',:flag => true) }')" %>
+
+
+
+ <%= render_principals_for_new_course_members(@course) %>
+
+
+
+
+
+ <%= l(:label_role_plural) %>:
+
+ <% @roles.each do |role| %>
+
+ <%= radio_button_tag 'membership[role_ids][]', role.id, role.name == "学生" || role.name == "Student" %>
+ <%= h role %>
+
+ <% end %>
+
+
+
+ 新增成员
+
+
+ <% end%>
+
\ No newline at end of file
diff --git a/app/views/courses/_member.html.erb b/app/views/courses/_member.html.erb
new file mode 100644
index 000000000..53e7c15a5
--- /dev/null
+++ b/app/views/courses/_member.html.erb
@@ -0,0 +1,37 @@
+<% @members.each do |member| %>
+
+ <%= link_to_user_header member.principal,false,:class => "w150 c_orange fl" %>
+
+ <%= h member.roles.sort.collect(&:to_s).join(', ') %>
+ <%= form_for(member, {:as => :membership, :remote => true, :url => membership_path(member),
+ :method => :put,
+ :html => {:id => "member-#{member.id}-roles-form", :class => 'hol'}}
+ ) do |f| %>
+ <% @roles.each do |role| %>
+
+ <%= radio_button_tag 'membership[role_ids][]', role.id, member.roles.include?(role),
+ :disabled => member.member_roles.detect { |mr| mr.role_id == role.id && !mr.inherited_from.nil? } %>
+ <%= h role %>
+
+
+ <% end %>
+ <%= hidden_field_tag 'membership[role_ids][]', '' %>
+
+ <% end %>
+
+ <% unless member.roles.first.to_s == "Manager"%>
+ 编辑
+ <%= delete_link membership_path(member),
+ :remote => true,
+ :class => "c_dblue w40 fl",
+ :data => (!User.current.admin? && member.include?(User.current) ? {:confirm => l(:text_own_membership_delete_confirmation)} : {confirm: l(:label_delete_confirm)}) if member.deletable? %>
+ <% end%>
+
+<% end%>
\ No newline at end of file
diff --git a/app/views/courses/new.html.erb b/app/views/courses/new.html.erb
index 3d1a3f6a4..3057285a7 100644
--- a/app/views/courses/new.html.erb
+++ b/app/views/courses/new.html.erb
@@ -47,7 +47,7 @@
提交
- 取消
+ 取消
<% end%>
diff --git a/app/views/courses/settings.html.erb b/app/views/courses/settings.html.erb
index 43261f4e2..569ae302b 100644
--- a/app/views/courses/settings.html.erb
+++ b/app/views/courses/settings.html.erb
@@ -2,59 +2,75 @@
<%= l(:label_course_modify_settings)%>
\ No newline at end of file
diff --git a/app/views/layouts/base_courses.html.erb b/app/views/layouts/base_courses.html.erb
index d35e31dd7..e787cfa54 100644
--- a/app/views/layouts/base_courses.html.erb
+++ b/app/views/layouts/base_courses.html.erb
@@ -62,11 +62,7 @@
- <% if get_avatar?(@course) %>
- <%= image_tag(url_to_avatar(@course), :width => "60", :height => "60") %>
- <% else %>
- <%= link_to image_tag('../images/avatars/course/course.jpg', :width => "60", :height => "60"), course_path(@course) %>
- <% end %>
+ <%= image_tag(url_to_avatar(@course), :width => "60", :height => "60") %>
ID:<%= @course.id%>
diff --git a/app/views/members/create.js.erb b/app/views/members/create.js.erb
index 35280b7a4..93aad5b5e 100644
--- a/app/views/members/create.js.erb
+++ b/app/views/members/create.js.erb
@@ -1,22 +1,27 @@
<%if @project%>
$('#tab-content-members').html('<%= escape_javascript(render :partial => 'projects/settings/members') %>');
-<%elsif @course%>
-$('#tab-content-members').html('<%= escape_javascript(render :partial => 'courses/settings/members') %>');
-<%end%>
-
-hideOnLoad();
<%if !@applied_members%>
- <% if @members.present? && @members.all? {|m| m.valid? } %>
- <% @members.each do |member| %>
- $("#member-<%= member.id %>").effect("highlight");
- <% end %>
- <% else %>
- <% if @members %>
- <% errors = @members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ')%>
- alert('<%= raw(escape_javascript(l(:notice_failed_to_save_members, :errors => errors || ''))) %>');
- <% else%>
+<% if @members.present? && @members.all? {|m| m.valid? } %>
+<% @members.each do |member| %>
+$("#member-<%= member.id %>").effect("highlight");
+<% end %>
+<% else %>
+<% if @members %>
+<% errors = @members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ')%>
+alert('<%= raw(escape_javascript(l(:notice_failed_to_save_members, :errors => errors || ''))) %>');
+<% else%>
// alert('');
- <% end%>
- <% end %>
+<% end%>
<% end %>
+<% end %>
+<%elsif @course%>
+ <% if @create_member_error_messages%>
+ alert("<%= @create_member_error_messages%>");
+ <% else%>
+ $('#tbc_02').html('<%= escape_javascript(render :partial => 'courses/course_members') %>');
+ alert("添加成功");
+ <% end%>
+<%end%>
+
+hideOnLoad();
diff --git a/app/views/members/destroy.js.erb b/app/views/members/destroy.js.erb
index 2d0d26271..912cfde58 100644
--- a/app/views/members/destroy.js.erb
+++ b/app/views/members/destroy.js.erb
@@ -1,6 +1,6 @@
<%if @project%>
-$('#tab-content-members').html('<%= escape_javascript(render :partial => 'projects/settings/members') %>');
+ $('#tab-content-members').html('<%= escape_javascript(render :partial => 'projects/settings/members') %>');
<%elsif @course%>
- $('#tab-content-members').html('<%= escape_javascript(render :partial => 'courses/settings/members') %>');
+ $('#tbc_02').html('<%= escape_javascript(render :partial => 'courses/course_members') %>');
<%end%>
hideOnLoad();
diff --git a/app/views/members/update.js.erb b/app/views/members/update.js.erb
index 9f6709701..a166e76ab 100644
--- a/app/views/members/update.js.erb
+++ b/app/views/members/update.js.erb
@@ -1,7 +1,9 @@
<%if @project%>
$('#tab-content-members').html('<%= escape_javascript(render :partial => 'projects/settings/members') %>');
+$("#member-<%= @member.id %>").effect("highlight");
<%elsif @course%>
-$('#tab-content-members').html('<%= escape_javascript(render :partial => 'courses/settings/members') %>');
+$('#tbc_02').html('<%= escape_javascript(render :partial => 'courses/course_members') %>');
<%end%>
hideOnLoad();
-$("#member-<%= @member.id %>").effect("highlight");
+
+
diff --git a/lib/redmine/pagination.rb b/lib/redmine/pagination.rb
index 00a20c15e..41702e2ce 100644
--- a/lib/redmine/pagination.rb
+++ b/lib/redmine/pagination.rb
@@ -260,7 +260,7 @@ module Redmine
end
if page == paginator.page
if flag
- html << '
' << page.to_s << ' '
+ html << '' << content_tag('a', page.to_s, :class => 'current-page c_white') << ' '
else
html << '' << content_tag('span', page.to_s, :class => 'current-page') << ' '
end
diff --git a/public/javascripts/course.js b/public/javascripts/course.js
index e49ecd828..4ca2c3403 100644
--- a/public/javascripts/course.js
+++ b/public/javascripts/course.js
@@ -1,3 +1,13 @@
+//配置课程信息
+function course_setting(id)
+{
+ //alert(id);
+ $('#tb_'+id).removeClass().addClass("hwork_hovertab");
+ $('#tbc_0'+id).removeClass().addClass("dis");
+ $('#tb_'+(3-id)).removeClass().addClass("hwork_normaltab");
+ $('#tbc_0'+(3-id)).removeClass().addClass("undis");
+}
+
///////////////////////////////////////////////////////////////
//添加分班
function add_group(url,course_id) {
diff --git a/public/stylesheets/courses.css b/public/stylesheets/courses.css
index 11d94e9b2..6053940d6 100644
--- a/public/stylesheets/courses.css
+++ b/public/stylesheets/courses.css
@@ -63,7 +63,8 @@ ul.wlist{ float:right; border-bottom:none; height:30px; margin-top:20px; }
ul.wlist li{float: left;}
ul.wlist li a{ border:1px solid #15bccf; padding: 1px 4px 1px 4px; margin-left:3px;}
ul.wlist li a:hover{ background:#15bccf; color:#fff; text-decoration:none;}
-.wlist_select { background-color:#64bdd9; color:#fff; padding: 1px 5px 0px 5px; margin-left:3px;margin-top: -2px; border:1px solid #64bdd9;}
+/*.wlist_select { background-color:#64bdd9; color:#fff; padding: 1px 5px 0px 5px; margin-left:3px;margin-top: -2px; border:1px solid #64bdd9;}*/
+.wlist_select a{background-color: #64bdd9;cursor: default;}
/****讨论区***/
.talk_top{ margin:10px 0; font-size:14px; color:#4c4c4c;}
.talk_top span{ color:#ff7143;}
@@ -103,6 +104,7 @@ a:hover.grey_btn{ background:#717171; color:#fff;}
.f_14{ font-size:14px;}
.c_dblue{ color:#3e6d8e;}
.w90{width:90px;}
+.w40{width:40px;}
.ml10{margin-left:10px;}
.resource{ width:670px;}
.re_top{width:660px; height:40px; background:#eaeaea; padding:5px;}
@@ -240,6 +242,7 @@ a:hover.tijiao{ background:#0f99a9;}
.members_left ul li{ height:30px; border-bottom:1px solid #E4E4E4; width:410px; padding-top:10px; }
.members_left ul li a{ float:left; text-align:center;}
.members_left ul li span{ float:left; text-align:center; color:#484747;}
+
.w150{ text-align:center; width:150px;}
.f_b{ font-weight: bold;}
.members_right label{ margin-left:15px;}
@@ -270,8 +273,9 @@ a:hover.tijiao{ background:#0f99a9;}
.member_search_input{ border:1px solid #15bccf; background:#fff; width:170px; height:24px; color:#9b9b9b; padding-left:5px; margin-bottom:10px;}
.member_search_btn{ background:#15bccf; color:#fff; text-align: center; width:40px; height:22px;border:1px solid #15bccf; padding-top:2px; cursor:pointer;}
.member_search_btn:hover{ background:#0da1b2; border:1px solid #0da1b2;}
-a.member_btn{ padding:5px; background:#15bccf; color:#fff;}
+a.member_btn{ padding: 3px 5px; background:#15bccf; color:#fff;}
a:hover.member_btn{ background:#329cbd;}
+.hol{display: none;}
/* 新建项目 */
.pro_new{ }
@@ -374,6 +378,9 @@ span.add_attachment {font-size: 80%;line-height: 2.5em;}
a:hover.link_file_board{ background:url(../images/pic_file.png) 0 -25px no-repeat; color:#3ca5c6;}
a.link_file_board{ background:url(../images/pic_file.png) 0 3px no-repeat !important; padding-left:20px !important; color:#64bdd9 !important; }
+#course_member_pagination_links{height: auto;float: left;}
+#course_member_pagination_links li{margin-bottom: 5px;}
+
/* colorbox
*******************************************************************************/
/*