实现给作业增加用户页面相关js代码及css代码

This commit is contained in:
sw 2014-06-10 15:44:10 +08:00
parent 67c9fefba6
commit cbb348dc0e
5 changed files with 50 additions and 138 deletions

View File

@ -78,8 +78,8 @@ class HomeworkAttachController < ApplicationController
def new def new
@bid = Bid.find(params[:id]) @bid = Bid.find(params[:id])
if User.current.admin? || User.current.member_of?(@bid.courses.first) if User.current.admin? || User.current.member_of?(@bid.courses.first)
#该课程的学生的集合
@members = @bid.courses.first.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and user_id <> #{User.current.id}", {:role_id => [5, 10]}) @members = @bid.courses.first.members.joins(:member_roles).where("member_roles.role_id IN (:role_id) and user_id <> #{User.current.id}", {:role_id => [5, 10]})
#@all_user = [] #@all_user = []
#@bid.courses.first.members.each do |member| #@bid.courses.first.members.each do |member|
# @all_user << member.user # @all_user << member.user

View File

@ -19,23 +19,37 @@ module HomeworkAttachHelper
def render_new_members_for_homework members def render_new_members_for_homework members
#scope = Principal.active.sorted.not_member_of(project).like(params[:q]) #scope = Principal.active.sorted.not_member_of(project).like(params[:q])
#scope = project.members #scope = project.members
principal_count = members.count principals = paginateHelper members,10
limit = 10 #principal_count = members.count
principal_pages = Redmine::Pagination::Paginator.new principal_count, limit, params['page'] #by young #limit = 10
offset ||= principal_pages.offset #principal_pages = Redmine::Pagination::Paginator.new principal_count, limit, params['page'] #by young
principals = members[offset, limit] #offset ||= principal_pages.offset
#principals = members[offset, limit]
s = content_tag('div', member_check_box_tags_ex('membership[user_ids][]', principals), :id => 'principals') s = content_tag('div', member_check_box_tags_ex('membership[user_ids][]', principals), :id => 'principals')
links = pagination_links_full(principal_pages, principal_count, :per_page_links => false,:remote => true) links = pagination_links_full(@obj_pages, @obj_count, :per_page_links => false) {|text, parameters, options|
link_to text, new_homework_attach_path( parameters.merge(:q => params[:q], :format => 'js')), :remote => true }
s + content_tag('div', content_tag('ul', links), :class => 'pagination_new') return s + content_tag('div', content_tag('ul', links), :class => 'pagination_new')
end end
#扩展的checkbox生成 #扩展的checkbox生成
def member_check_box_tags_ex(name, principals) def member_check_box_tags_ex(name, principals)
s = '' s = ''
principals.each do |member| principals.each do |member|
s << "<label>#{ check_box_tag name, member.id, false, :id => nil } #{h member.user.name }</label>\n" s << "<label>#{ check_box_tag name, member.id, false, :id => nil } #{h member.user.name }</label><br/>"
end end
s.html_safe s.html_safe
end end
def paginateHelper obj, pre_size=20
@obj_count = obj.count
@obj_pages = Redmine::Pagination::Paginator.new @obj_count, pre_size, params['page']
if obj.kind_of? ActiveRecord::Base or obj.kind_of? ActiveRecord::Relation
obj.limit(@obj_pages.per_page).offset(@obj_pages.offset)
elsif obj.kind_of? Array
obj[@obj_pages.offset, @obj_pages.per_page]
else
logger.error "[ApplicationController] Error : application_controller#paginateHelper ===> unknow category: #{obj.class}"
raise RuntimeError, 'unknow type, Please input you type into this helper.'
end
end
end end

View File

@ -1,131 +1,30 @@
<%= error_messages_for 'member' %> <%= error_messages_for 'member' %>
<% <div style="float:left; width:60%;height:410px;padding-left: 10px;padding-right: 10px">
roles = Role.givable.all <table class="list members" style="width: 100%">
if @project.project_type == Project::ProjectType_course <thead>
roles = roles[3..5] <tr>
else <th><%= l(:label_user) %></th>
roles = roles[0..2] <th><%= l(:label_role_plural) %></th>
end <th style="width:15%"></th>
members = @project.member_principals.includes(:roles, :principal).all.sort </tr>
%> </thead>
<tbody>
<div class="splitcontentleft"> <tr id="member-<%= User.current.id %>" class="<%= cycle 'odd', 'even' %> member" style="text-align: center">
<% if members.any? %> <td style="width: 40%"><%= link_to_user User.current %></td>
<table class="list members"> <td style="text-align: center;width: 60%"> 发布人员 </td>
<thead>
<tr>
<th><%= l(:label_user) %></th>
<th><%= l(:label_role_plural) %></th>
<th style="width:15%"></th>
<%= call_hook(:view_projects_settings_members_table_header, :project => @project) %>
</tr> </tr>
</thead> </tbody>
<tbody> </table>
<% members.each do |member| %>
<% next if member.new_record? %>
<tr id="member-<%= member.id %>" class="<%= cycle 'odd', 'even' %> member">
<td class="<%= member.principal.class.name.downcase %>"><%= link_to_user member.principal %></td>
<td class="roles">
<span id="member-<%= member.id %>-roles">
<%= h member.roles.sort.collect(&:to_s).join(', ') %>
</span>
<%= form_for(member, {:as => :membership, :remote => true, :url => membership_path(member),
:method => :put,
:html => {:id => "member-#{member.id}-roles-form", :class => 'hol'}}
) do |f| %>
<p>
<% roles.each do |role| %>
<label><%= check_box_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 %></label><br/>
<% end %></p>
<%= hidden_field_tag 'membership[role_ids][]', '' %>
<p><%= submit_tag l(:button_change), :class => "small" %>
<%= link_to_function l(:button_cancel),
"$('#member-#{member.id}-roles').show(); $('#member-#{member.id}-roles-form').hide(); return false;"
%></p>
<% end %>
</td>
<!--modified by huang for: if the user'roles is Manager that he will can't modified himself-->
<% if @project.project_type == 1 %>
<% if member.roles.first.to_s == "Manager" %>
<td class="buttons"></td>
<% else %>
<td class="buttons">
<%= link_to_function l(:button_edit),
"$('#member-#{member.id}-roles').hide(); $('#member-#{member.id}-roles-form').show(); return false;",
:class => 'icon icon-edit' %>
<%= delete_link membership_path(member),
:remote => true,
:data => (!User.current.admin? && member.include?(User.current) ? {:confirm => l(:text_own_membership_delete_confirmation)} : {}) if member.deletable? %>
</td>
<% end %>
<% else %>
<td class="buttons">
<%= link_to_function l(:button_edit),
"$('#member-#{member.id}-roles').hide(); $('#member-#{member.id}-roles-form').show(); return false;",
:class => 'icon icon-edit' %>
<%= delete_link membership_path(member),
:remote => true,
:data => (!User.current.admin? && member.include?(User.current) ? {:confirm => l(:text_own_membership_delete_confirmation)} : {}) if member.deletable? %>
</td>
<% end %>
<!--end-->
<%= call_hook(:view_projects_settings_members_table_row, {:project => @project, :member => member}) %>
</tr>
<% end; reset_cycle %>
</tbody>
</table>
<% else %>
<p class="nodata"><%= l(:label_no_data) %></p>
<% end %>
</div> </div>
<div class="splitcontentright"> <div class="splitcontentright" style="width: 37%">
<% if roles.any? %> <fieldset>
<% if @project.applied_projects.any? %> <legend><%= l(:label_member_new) %></legend>
<div id="applied_project_block">
<%= form_for(@applied_members, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %>
<fieldset>
<legend><%= l(:label_apply_project) %></legend>
<div id="principals_for_applied_member"> <p><%= label_tag "principal_search", l(:label_principal_search) %><%= text_field_tag 'principal_search', nil %></p>
<%= render_principals_for_applied_members(@project) %> <div id="principals_for_new_member">
</div> <%= render_new_members_for_homework(members) %>
<!--show the roles which will select--> </div>
<p style="padding-top: 5px"><%= l(:label_role_plural) %>: <p><%= submit_tag l(:button_add), :id => 'member-add-submit' %></p>
<% roles.each do |role| %> </fieldset>
<label><%= check_box_tag 'membership[role_ids][]', role.id %> <%= h role %></label>
<% end %></p>
<p><%= submit_tag l(:label_approve), :id => 'member-add-submit' %>
<%= submit_tag l(:label_refusal), :name => "refusal_button", :id => 'member-refusal-submit' %>
</p>
</fieldset>
<% end %>
</div>
<% end %>
<%= form_for(@member, {:as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post}) do |f| %>
<fieldset>
<legend><%= l(:label_member_new) %></legend>
<p><%= label_tag "principal_search", l(:label_principal_search) %><%= text_field_tag 'principal_search', nil %></p>
<%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_project_memberships_path(@project, :format => 'js') }')" %>
<div id="principals_for_new_member">
<%= render_principals_for_new_members(@project) %>
</div>
<!--show the roles which will select-->
<p style="padding-top: 5px"><%= l(:label_role_plural) %>:
<% roles.each do |role| %>
<label><%= check_box_tag 'membership[role_ids][]', role.id %> <%= h role %></label>
<% end %></p>
<p><%= submit_tag l(:button_add), :id => 'member-add-submit' %></p>
</fieldset>
<% end %>
<% end %>
</div> </div>

View File

@ -1,5 +1,4 @@
<div class="box"> <div class="box">
<p style=" padding: 3px 0 3px 0;padding-left: 50px; clear:left;"> <p style=" padding: 3px 0 3px 0;padding-left: 50px; clear:left;">
<strong>标 题:</strong> <strong>标 题:</strong>
<%= f.text_field "name", :required => true, :size => 60, :style => "width:490px;" %> <%= f.text_field "name", :required => true, :size => 60, :style => "width:490px;" %>

View File

@ -36,8 +36,8 @@
<%= render :partial => "new_homework",:locals => {:f => f} %> <%= render :partial => "new_homework",:locals => {:f => f} %>
</div> </div>
<div id="content2"> <div id="content2" style="display: none">
<%= render :partial => "homework_member" %> <%= render :partial => "homework_member",:locals => {:members => @members} %>
</div> </div>
<p style="padding-left: 60px;padding-top: 10px;"> <p style="padding-left: 60px;padding-top: 10px;">