diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 47d0e51c94462d9a8a7a86729afa3708ac91641a..ab4aae08dd080d1e7e3b32e68296e2d16702a88a 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -80,6 +80,27 @@ class UsersController < ApplicationController end end @auth_sources = AuthSource.find(:all) + @roles = Role.find :all + @projects = Project.find(:all) - @user.projects + @membership ||= Member.new + end + + def edit_membership + @user = User.find(params[:id]) + @membership = params[:membership_id] ? Member.find(params[:membership_id]) : Member.new(:user => @user) + @membership.attributes = params[:membership] + if request.post? and @membership.save + flash[:notice] = l(:notice_successful_update) + end + redirect_to :action => 'edit', :id => @user and return + end + + def destroy_membership + @user = User.find(params[:id]) + if request.post? and Member.find(params[:membership_id]).destroy + flash[:notice] = l(:notice_successful_update) + end + redirect_to :action => 'edit', :id => @user and return end def destroy diff --git a/app/views/users/_memberships.rhtml b/app/views/users/_memberships.rhtml new file mode 100644 index 0000000000000000000000000000000000000000..ccf2111a6d5a1a3cb9d5946739c3a63c0f8f02ea --- /dev/null +++ b/app/views/users/_memberships.rhtml @@ -0,0 +1,29 @@ +<div class="box" style="margin-top: 16px;"> +<h3><%= l(:label_project_plural) %></h3> + +<% @user.memberships.each do |membership| %> +<%= start_form_tag({ :action => 'edit_membership', :id => @user, :membership_id => membership }, :class => "tabular") %> +<p style="margin:0;padding-top:0;"> + <label><%= membership.project.name %></label> + <select name="membership[role_id]"> + <%= options_from_collection_for_select @roles, "id", "name", membership.role_id %> + </select> + <%= submit_tag l(:button_change), :class => "button-small" %> + <%= link_to l(:button_delete), {:action => 'destroy_membership', :id => @user, :membership_id => membership }, :confirm => l(:text_are_you_sure), :post => true, :class => 'pic picDelete' %> +</p> +<%= end_form_tag %> +<% end %> +<hr /> +<p> +<label><%=l(:label_project_new)%></label><br/> +<%= start_form_tag({ :action => 'edit_membership', :id => @user }) %> +<select name="membership[project_id]"> +<%= options_from_collection_for_select @projects, "id", "name", @membership.project_id %> +</select> +<select name="membership[role_id]"> +<%= options_from_collection_for_select @roles, "id", "name", @membership.role_id %> +</select> +<%= submit_tag l(:button_add) %> +<%= end_form_tag %> +</p> +</div> \ No newline at end of file diff --git a/app/views/users/edit.rhtml b/app/views/users/edit.rhtml index 2332b70adc906ffebd4db9fe31fd2dbe18e0417f..0da99d0d27f3abe3c25dbee887c9997a32075a8b 100644 --- a/app/views/users/edit.rhtml +++ b/app/views/users/edit.rhtml @@ -4,3 +4,5 @@ <%= render :partial => 'form', :locals => { :f => f } %> <%= submit_tag l(:button_save) %> <% end %> + +<%= render :partial => 'memberships' %> \ No newline at end of file diff --git a/public/images/arrow_down.png b/public/images/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..ea37f3a9efd8f7cdf388538b291dbd9a67cd856f Binary files /dev/null and b/public/images/arrow_down.png differ