diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 48fc6fad..c3770966 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -91,23 +91,20 @@ class UsersController < ApplicationController @roles = Role.find_all_givable @projects = Project.find(:all, :order => 'name', :conditions => "status=#{Project::STATUS_ACTIVE}") - @user.projects @membership ||= Member.new + @memberships = @user.memberships 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 + @membership.save if request.post? + redirect_to :action => 'edit', :id => @user, :tab => 'memberships' 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 + Member.find(params[:membership_id]).destroy if request.post? + redirect_to :action => 'edit', :id => @user, :tab => 'memberships' end end diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index 0fe1755e..6976d021 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -48,4 +48,10 @@ module UsersHelper link_to l(:button_lock), url.merge(:user => {:status => User::STATUS_LOCKED}), :method => :post, :class => 'icon icon-lock' end end + + def user_settings_tabs + tabs = [{:name => 'general', :partial => 'users/general', :label => :label_general}, + {:name => 'memberships', :partial => 'users/memberships', :label => :label_project_plural} + ] + end end diff --git a/app/views/users/_form.rhtml b/app/views/users/_form.rhtml index ff4278c1..6ca167a5 100644 --- a/app/views/users/_form.rhtml +++ b/app/views/users/_form.rhtml @@ -2,7 +2,6 @@
<%= f.text_field :login, :required => true, :size => 25 %>
<%= f.text_field :firstname, :required => true %>
<%= f.text_field :lastname, :required => true %>
diff --git a/app/views/users/_general.rhtml b/app/views/users/_general.rhtml new file mode 100644 index 00000000..80615ff6 --- /dev/null +++ b/app/views/users/_general.rhtml @@ -0,0 +1,4 @@ +<% labelled_tabular_form_for :user, @user, :url => { :action => "edit" } do |f| %> +<%= render :partial => 'form', :locals => { :f => f } %> +<%= submit_tag l(:button_save) %> +<% end %> diff --git a/app/views/users/_memberships.rhtml b/app/views/users/_memberships.rhtml index 44d74ef7..94b49159 100644 --- a/app/views/users/_memberships.rhtml +++ b/app/views/users/_memberships.rhtml @@ -1,21 +1,33 @@ -- - - <%= 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), :method => :post, :class => 'icon icon-del' %> -
-<% end %> +<% if @memberships.any? %> +<%= l(:label_project) %> | +<%= l(:label_role) %> | ++ + + <% @memberships.each do |membership| %> + <% next if membership.new_record? %> + |
---|---|---|
<%=h membership.project %> | ++ <% form_tag({ :action => 'edit_membership', :id => @user, :membership_id => membership }) do %> + <%= select_tag 'membership[role_id]', options_from_collection_for_select(@roles, "id", "name", membership.role_id) %> + <%= submit_tag l(:button_change), :class => "small" %> + <% end %> + | ++ <%= link_to l(:button_delete), {:action => 'destroy_membership', :id => @user, :membership_id => membership }, :method => :post, :class => 'icon icon-del' %> + | +
<%= l(:label_no_data) %>
<% end %> <% if @projects.any? %> -
<% form_tag({ :action => 'edit_membership', :id => @user }) do %>
@@ -26,4 +38,3 @@
<% end %>