diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/members_controller.rb | 23 | ||||
-rw-r--r-- | app/views/members/autocomplete.html.erb | 1 | ||||
-rw-r--r-- | app/views/members/autocomplete_for_member.html.erb | 1 | ||||
-rw-r--r-- | app/views/projects/settings/_members.html.erb | 23 |
4 files changed, 25 insertions, 23 deletions
diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 6d5dd4733..ae2f57a13 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -17,15 +17,15 @@ class MembersController < ApplicationController model_object Member - before_filter :find_model_object, :except => [:new, :autocomplete_for_member] - before_filter :find_project_from_association, :except => [:new, :autocomplete_for_member] - before_filter :find_project, :only => [:new, :autocomplete_for_member] + before_filter :find_model_object, :except => [:create, :autocomplete] + before_filter :find_project_from_association, :except => [:create, :autocomplete] + before_filter :find_project_by_project_id, :only => [:create, :autocomplete] before_filter :authorize - def new + def create members = [] - if params[:member] && request.post? - attrs = params[:member].dup + if params[:membership] && request.post? + attrs = params[:membership].dup if (user_ids = attrs.delete(:user_ids)) user_ids.each do |user_id| members << Member.new(attrs.merge(:user_id => user_id)) @@ -63,8 +63,11 @@ class MembersController < ApplicationController end end - def edit - if request.post? and @member.update_attributes(params[:member]) + def update + if params[:membership] + @member.role_ids = params[:membership][:role_ids] + end + if request.put? && @member.save respond_to do |format| format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } format.js { @@ -79,7 +82,7 @@ class MembersController < ApplicationController end def destroy - if request.post? && @member.deletable? + if request.delete? && @member.deletable? @member.destroy end respond_to do |format| @@ -92,7 +95,7 @@ class MembersController < ApplicationController end end - def autocomplete_for_member + def autocomplete @principals = Principal.active.like(params[:q]).find(:all, :limit => 100) - @project.principals render :layout => false end diff --git a/app/views/members/autocomplete.html.erb b/app/views/members/autocomplete.html.erb new file mode 100644 index 000000000..a3ae74a0b --- /dev/null +++ b/app/views/members/autocomplete.html.erb @@ -0,0 +1 @@ +<%= principals_check_box_tags 'membership[user_ids][]', @principals %> diff --git a/app/views/members/autocomplete_for_member.html.erb b/app/views/members/autocomplete_for_member.html.erb deleted file mode 100644 index 96b4c973b..000000000 --- a/app/views/members/autocomplete_for_member.html.erb +++ /dev/null @@ -1 +0,0 @@ -<%= principals_check_box_tags 'member[user_ids][]', @principals %>
\ No newline at end of file diff --git a/app/views/projects/settings/_members.html.erb b/app/views/projects/settings/_members.html.erb index 02591efe9..5cd3afd32 100644 --- a/app/views/projects/settings/_members.html.erb +++ b/app/views/projects/settings/_members.html.erb @@ -18,21 +18,19 @@ <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> - <% if authorize_for('members', 'edit') %> - <% remote_form_for(:member, member, :url => {:controller => 'members', :action => 'edit', :id => member}, - :method => :post, + <% remote_form_for(:membership, member, :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 'member[role_ids][]', role.id, member.roles.include?(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 'member[role_ids][]', '' %> + <%= 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 %> - <% end %> </td> <td class="buttons"> <%= link_to_function l(:button_edit), @@ -40,8 +38,8 @@ :class => 'icon icon-edit' %> <%= link_to_remote( l(:button_delete), - { :url => {:controller => 'members', :action => 'destroy', :id => member}, - :method => :post, + { :url => membership_path(member), + :method => :delete, :confirm => (!User.current.admin? && member.include?(User.current) ? l(:text_own_membership_delete_confirmation) : nil) }, :title => l(:button_delete), :class => 'icon icon-del' @@ -61,7 +59,7 @@ <div class="splitcontentright"> <% if roles.any? && principals.any? %> - <% remote_form_for(:member, @member, :url => {:controller => 'members', :action => 'new', :id => @project}, :method => :post, + <% remote_form_for(:membership, @member, :url => project_memberships_path(@project), :method => :post, :loading => '$(\'member-add-submit\').disable();', :complete => 'if($(\'member-add-submit\')) $(\'member-add-submit\').enable();') do |f| %> <fieldset><legend><%=l(:label_member_new)%></legend> @@ -70,17 +68,18 @@ <%= observe_field(:principal_search, :frequency => 0.5, :update => :principals, - :url => { :controller => 'members', :action => 'autocomplete_for_member', :id => @project }, + :url => autocomplete_project_memberships_path(@project), + :method => :get, :with => 'q') %> <div id="principals"> - <%= principals_check_box_tags 'member[user_ids][]', principals %> + <%= principals_check_box_tags 'membership[user_ids][]', principals %> </div> <p><%= l(:label_role_plural) %>: <% roles.each do |role| %> - <label><%= check_box_tag 'member[role_ids][]', role.id %> <%=h role %></label> + <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> |