##// END OF EJS Templates
Split user edit screen into tabs....
Jean-Philippe Lang -
r1389:63951812a1ed
parent child
Show More
@@ -0,0 +1,4
1 <% labelled_tabular_form_for :user, @user, :url => { :action => "edit" } do |f| %>
2 <%= render :partial => 'form', :locals => { :f => f } %>
3 <%= submit_tag l(:button_save) %>
4 <% end %>
@@ -91,23 +91,20 class UsersController < ApplicationController
91 91 @roles = Role.find_all_givable
92 92 @projects = Project.find(:all, :order => 'name', :conditions => "status=#{Project::STATUS_ACTIVE}") - @user.projects
93 93 @membership ||= Member.new
94 @memberships = @user.memberships
94 95 end
95 96
96 97 def edit_membership
97 98 @user = User.find(params[:id])
98 99 @membership = params[:membership_id] ? Member.find(params[:membership_id]) : Member.new(:user => @user)
99 100 @membership.attributes = params[:membership]
100 if request.post? and @membership.save
101 flash[:notice] = l(:notice_successful_update)
102 end
103 redirect_to :action => 'edit', :id => @user and return
101 @membership.save if request.post?
102 redirect_to :action => 'edit', :id => @user, :tab => 'memberships'
104 103 end
105 104
106 105 def destroy_membership
107 106 @user = User.find(params[:id])
108 if request.post? and Member.find(params[:membership_id]).destroy
109 flash[:notice] = l(:notice_successful_update)
110 end
111 redirect_to :action => 'edit', :id => @user and return
107 Member.find(params[:membership_id]).destroy if request.post?
108 redirect_to :action => 'edit', :id => @user, :tab => 'memberships'
112 109 end
113 110 end
@@ -48,4 +48,10 module UsersHelper
48 48 link_to l(:button_lock), url.merge(:user => {:status => User::STATUS_LOCKED}), :method => :post, :class => 'icon icon-lock'
49 49 end
50 50 end
51
52 def user_settings_tabs
53 tabs = [{:name => 'general', :partial => 'users/general', :label => :label_general},
54 {:name => 'memberships', :partial => 'users/memberships', :label => :label_project_plural}
55 ]
56 end
51 57 end
@@ -2,7 +2,6
2 2
3 3 <!--[form:user]-->
4 4 <div class="box">
5 <h3><%=l(:label_information_plural)%></h3>
6 5 <p><%= f.text_field :login, :required => true, :size => 25 %></p>
7 6 <p><%= f.text_field :firstname, :required => true %></p>
8 7 <p><%= f.text_field :lastname, :required => true %></p>
@@ -1,21 +1,33
1 <div class="box" style="margin-top: 16px;">
2 <h3><%= l(:label_project_plural) %></h3>
3
4 <% @user.memberships.each do |membership| %>
5 <% form_tag({ :action => 'edit_membership', :id => @user, :membership_id => membership }, :class => "tabular") do %>
6 <p style="margin:0;padding-top:0;">
7 <label><%= membership.project.name %></label>
8 <select name="membership[role_id]">
9 <%= options_from_collection_for_select @roles, "id", "name", membership.role_id %>
10 </select>
11 <%= submit_tag l(:button_change), :class => "button-small" %>
12 <%= 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' %>
13 </p>
14 <% end %>
1 <% if @memberships.any? %>
2 <table class="list memberships">
3 <thead>
4 <th><%= l(:label_project) %></th>
5 <th><%= l(:label_role) %></th>
6 <th style="width:15%"></th>
7 </thead>
8 <tbody>
9 <% @memberships.each do |membership| %>
10 <% next if membership.new_record? %>
11 <tr class="<%= cycle 'odd', 'even' %>">
12 <td><%=h membership.project %></td>
13 <td align="center">
14 <% form_tag({ :action => 'edit_membership', :id => @user, :membership_id => membership }) do %>
15 <%= select_tag 'membership[role_id]', options_from_collection_for_select(@roles, "id", "name", membership.role_id) %>
16 <%= submit_tag l(:button_change), :class => "small" %>
17 <% end %>
18 </td>
19 <td align="center">
20 <%= link_to l(:button_delete), {:action => 'destroy_membership', :id => @user, :membership_id => membership }, :method => :post, :class => 'icon icon-del' %>
21 </td>
22 </tr>
23 </tbody>
24 <% end; reset_cycle %>
25 </table>
26 <% else %>
27 <p class="nodata"><%= l(:label_no_data) %></p>
15 28 <% end %>
16 29
17 30 <% if @projects.any? %>
18 <hr />
19 31 <p>
20 32 <label><%=l(:label_project_new)%></label><br/>
21 33 <% form_tag({ :action => 'edit_membership', :id => @user }) do %>
@@ -26,4 +38,3
26 38 <% end %>
27 39 </p>
28 40 <% end %>
29 </div> No newline at end of file
@@ -1,8 +1,23
1 <h2><%=l(:label_user)%></h2>
1 <h2><%=l(:label_user)%>: <%=h @user.login %></h2>
2 2
3 <% labelled_tabular_form_for :user, @user, :url => { :action => "edit" } do |f| %>
4 <%= render :partial => 'form', :locals => { :f => f } %>
5 <%= submit_tag l(:button_save) %>
6 <% end %>
3 <% selected_tab = params[:tab] ? params[:tab].to_s : user_settings_tabs.first[:name] %>
7 4
8 <%= render :partial => 'memberships' %> No newline at end of file
5 <div class="tabs">
6 <ul>
7 <% user_settings_tabs.each do |tab| -%>
8 <li><%= link_to l(tab[:label]), { :tab => tab[:name] },
9 :id => "tab-#{tab[:name]}",
10 :class => (tab[:name] != selected_tab ? nil : 'selected'),
11 :onclick => "showTab('#{tab[:name]}'); this.blur(); return false;" %></li>
12 <% end -%>
13 </ul>
14 </div>
15
16 <% user_settings_tabs.each do |tab| -%>
17 <%= content_tag('div', render(:partial => tab[:partial]),
18 :id => "tab-content-#{tab[:name]}",
19 :style => (tab[:name] != selected_tab ? 'display:none' : nil),
20 :class => 'tab-content') %>
21 <% end -%>
22
23 <% html_title(l(:label_user), @user.login, l(:label_administration)) -%>
General Comments 0
You need to be logged in to leave comments. Login now