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| %> + + <% 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| %> + + + <% 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)%>

    - +
    +
    + +
    + +
    + <%= render :partial => "course_members" %> +
    \ 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 @@
    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 *******************************************************************************/ /*