@@ -0,0 +1,43 | |||||
|
1 | <%= error_messages_for 'member' %> | |||
|
2 | <% roles = Role.find(:all, :order => 'position') %> | |||
|
3 | <% users = User.find_active(:all) - @project.users %> | |||
|
4 | ||||
|
5 | <table class="list"> | |||
|
6 | <thead> | |||
|
7 | <th><%= l(:label_user) %></th> | |||
|
8 | <th><%= l(:label_role) %></th> | |||
|
9 | <th></th> | |||
|
10 | </thead> | |||
|
11 | <tbody> | |||
|
12 | <% @project.members.find(:all, :include => [:role, :user]).sort{|x,y| x.role.position <=> y.role.position}.each do |member| %> | |||
|
13 | <% next if member.new_record? %> | |||
|
14 | <tr class="<%= cycle 'odd', 'even' %>"> | |||
|
15 | <td><%= member.user.display_name %></td> | |||
|
16 | <td align="center"> | |||
|
17 | <% if authorize_for('members', 'edit') %> | |||
|
18 | <% remote_form_for(:member, member, :url => {:controller => 'members', :action => 'edit', :id => member}, :method => :post) do |f| %> | |||
|
19 | <%= f.select :role_id, roles.collect{|role| [role.name, role.id]}, {}, :class => "small" %> | |||
|
20 | <%= submit_tag l(:button_change), :class => "small" %> | |||
|
21 | <% end %> | |||
|
22 | <% end %> | |||
|
23 | </td> | |||
|
24 | <td align="center"> | |||
|
25 | <small><%= link_to_remote l(:button_delete), { :url => {:controller => 'members', :action => 'destroy', :id => member}, | |||
|
26 | :method => :post | |||
|
27 | }, :title => l(:button_delete), | |||
|
28 | :class => 'icon icon-del' %></small> | |||
|
29 | </td> | |||
|
30 | </tr> | |||
|
31 | </tbody> | |||
|
32 | <% end; reset_cycle %> | |||
|
33 | </table> | |||
|
34 | | |||
|
35 | ||||
|
36 | <% if authorize_for('projects', 'add_member') && !users.empty? %> | |||
|
37 | <p><label for="member_user_id"><%=l(:label_member_new)%></label></p> | |||
|
38 | <% remote_form_for(:member, @member, :url => {:controller => 'projects', :action => 'add_member', :tab => 'members', :id => @project}, :method => :post) do |f| %> | |||
|
39 | <%= f.select :user_id, users.collect{|user| [user.name, user.id]} %> | |||
|
40 | <%= l(:label_role) %>: <%= f.select :role_id, roles.collect{|role| [role.name, role.id]}, :selected => nil %> | |||
|
41 | <%= submit_tag l(:button_add) %> | |||
|
42 | <% end %> | |||
|
43 | <% end %> |
@@ -21,15 +21,19 class MembersController < ApplicationController | |||||
21 |
|
21 | |||
22 | def edit |
|
22 | def edit | |
23 | if request.post? and @member.update_attributes(params[:member]) |
|
23 | if request.post? and @member.update_attributes(params[:member]) | |
24 | flash[:notice] = l(:notice_successful_update) |
|
24 | respond_to do |format| | |
25 | redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project |
|
25 | format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } | |
|
26 | format.js { render(:update) {|page| page.replace_html "tab-content-members", :partial => 'projects/members'} } | |||
|
27 | end | |||
26 | end |
|
28 | end | |
27 | end |
|
29 | end | |
28 |
|
30 | |||
29 | def destroy |
|
31 | def destroy | |
30 | @member.destroy |
|
32 | @member.destroy | |
31 | flash[:notice] = l(:notice_successful_delete) |
|
33 | respond_to do |format| | |
32 | redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project |
|
34 | format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } | |
|
35 | format.js { render(:update) {|page| page.replace_html "tab-content-members", :partial => 'projects/members'} } | |||
|
36 | end | |||
33 | end |
|
37 | end | |
34 |
|
38 | |||
35 | private |
|
39 | private |
@@ -96,8 +96,6 class ProjectsController < ApplicationController | |||||
96 | @custom_fields = IssueCustomField.find(:all) |
|
96 | @custom_fields = IssueCustomField.find(:all) | |
97 | @issue_category ||= IssueCategory.new |
|
97 | @issue_category ||= IssueCategory.new | |
98 | @member ||= @project.members.new |
|
98 | @member ||= @project.members.new | |
99 | @roles = Role.find(:all, :order => 'position') |
|
|||
100 | @users = User.find_active(:all) - @project.users |
|
|||
101 | @custom_values ||= ProjectCustomField.find(:all).collect { |x| @project.custom_values.find_by_custom_field_id(x.id) || CustomValue.new(:custom_field => x) } |
|
99 | @custom_values ||= ProjectCustomField.find(:all).collect { |x| @project.custom_values.find_by_custom_field_id(x.id) || CustomValue.new(:custom_field => x) } | |
102 | end |
|
100 | end | |
103 |
|
101 | |||
@@ -172,14 +170,14 class ProjectsController < ApplicationController | |||||
172 | # Add a new member to @project |
|
170 | # Add a new member to @project | |
173 | def add_member |
|
171 | def add_member | |
174 | @member = @project.members.build(params[:member]) |
|
172 | @member = @project.members.build(params[:member]) | |
175 | if request.post? |
|
173 | if request.post? && @member.save | |
176 | if @member.save |
|
174 | respond_to do |format| | |
177 | flash[:notice] = l(:notice_successful_create) |
|
175 | format.html { redirect_to :action => 'settings', :tab => 'members', :id => @project } | |
178 | redirect_to :action => 'settings', :tab => 'members', :id => @project |
|
176 | format.js { render(:update) {|page| page.replace_html "tab-content-members", :partial => 'members'} } | |
179 | else |
|
|||
180 | settings |
|
|||
181 | render :action => 'settings' |
|
|||
182 | end |
|
177 | end | |
|
178 | else | |||
|
179 | settings | |||
|
180 | render :action => 'settings' | |||
183 | end |
|
181 | end | |
184 | end |
|
182 | end | |
185 |
|
183 |
@@ -19,44 +19,7 | |||||
19 | </div> |
|
19 | </div> | |
20 |
|
20 | |||
21 | <div id="tab-content-members" class="tab-content" style="display:none;"> |
|
21 | <div id="tab-content-members" class="tab-content" style="display:none;"> | |
22 | <%= error_messages_for 'member' %> |
|
22 | <%= render :partial => 'members' %> | |
23 | <table class="list"> |
|
|||
24 | <thead><th><%= l(:label_user) %></th><th><%= l(:label_role) %></th><th></th></thead> |
|
|||
25 | <tbody> |
|
|||
26 | <% @project.members.find(:all, :include => [:role, :user]).sort{|x,y| x.role.position <=> y.role.position}.each do |member| %> |
|
|||
27 | <% unless member.new_record? %> |
|
|||
28 | <tr class="<%= cycle 'odd', 'even' %>"> |
|
|||
29 | <td><%= member.user.display_name %></td> |
|
|||
30 | <td align="center"> |
|
|||
31 | <% if authorize_for('members', 'edit') %> |
|
|||
32 | <% form_tag({:controller => 'members', :action => 'edit', :id => member}) do %> |
|
|||
33 | <select name="member[role_id]"> |
|
|||
34 | <%= options_from_collection_for_select @roles, "id", "name", member.role_id %> |
|
|||
35 | </select> |
|
|||
36 | <%= submit_tag l(:button_change), :class => "button-small" %> |
|
|||
37 | <% end %> |
|
|||
38 | <% end %> |
|
|||
39 | </td> |
|
|||
40 | <td align="center"> |
|
|||
41 | <%= link_to_if_authorized l(:button_delete), {:controller => 'members', :action => 'destroy', :id => member}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %> |
|
|||
42 | </td> |
|
|||
43 | </tr> |
|
|||
44 | <% end %> |
|
|||
45 | </tbody> |
|
|||
46 | <% end; reset_cycle %> |
|
|||
47 | </table> |
|
|||
48 | <% if authorize_for('projects', 'add_member') %> |
|
|||
49 | <label><%=l(:label_member_new)%></label><br/> |
|
|||
50 | <% form_tag({:controller => 'projects', :action => 'add_member', :tab => 'members', :id => @project}) do %> |
|
|||
51 | <select name="member[user_id]"> |
|
|||
52 | <%= options_from_collection_for_select @users, "id", "display_name", @member.user_id %> |
|
|||
53 | </select> |
|
|||
54 | <select name="member[role_id]"> |
|
|||
55 | <%= options_from_collection_for_select @roles, "id", "name", @member.role_id %> |
|
|||
56 | </select> |
|
|||
57 | <%= submit_tag l(:button_add) %> |
|
|||
58 | <% end %> |
|
|||
59 | <% end %> |
|
|||
60 | </div> |
|
23 | </div> | |
61 |
|
24 | |||
62 | <div id="tab-content-versions" class="tab-content" style="display:none;"> |
|
25 | <div id="tab-content-versions" class="tab-content" style="display:none;"> | |
@@ -68,8 +31,8 | |||||
68 | <td><%=h version.name %></td> |
|
31 | <td><%=h version.name %></td> | |
69 | <td align="center"><%= format_date(version.effective_date) %></td> |
|
32 | <td align="center"><%= format_date(version.effective_date) %></td> | |
70 | <td><%=h version.description %></td> |
|
33 | <td><%=h version.description %></td> | |
71 | <td align="center"><%= link_to_if_authorized l(:button_edit), { :controller => 'versions', :action => 'edit', :id => version }, :class => 'icon icon-edit' %></td> |
|
34 | <td align="center"><small><%= link_to_if_authorized l(:button_edit), { :controller => 'versions', :action => 'edit', :id => version }, :class => 'icon icon-edit' %></small></td> | |
72 | <td align="center"><%= link_to_if_authorized l(:button_delete), {:controller => 'versions', :action => 'destroy', :id => version}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %></td> |
|
35 | <td align="center"><small><%= link_to_if_authorized l(:button_delete), {:controller => 'versions', :action => 'destroy', :id => version}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %></small></td> | |
73 | </td> |
|
36 | </td> | |
74 | </tr> |
|
37 | </tr> | |
75 | <% end; reset_cycle %> |
|
38 | <% end; reset_cycle %> | |
@@ -94,7 +57,7 | |||||
94 | <% end %> |
|
57 | <% end %> | |
95 | </td> |
|
58 | </td> | |
96 | <td align="center"> |
|
59 | <td align="center"> | |
97 |
|
|
60 | <small><%= link_to_if_authorized l(:button_delete), {:controller => 'issue_categories', :action => 'destroy', :id => @category}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %></small> | |
98 | </td> |
|
61 | </td> | |
99 | </tr> |
|
62 | </tr> | |
100 | <% end %> |
|
63 | <% end %> |
@@ -242,7 +242,7 text-decoration:none; | |||||
242 |
|
242 | |||
243 | form {display: inline;} |
|
243 | form {display: inline;} | |
244 | blockquote {padding-left: 6px; border-left: 2px solid #ccc;} |
|
244 | blockquote {padding-left: 6px; border-left: 2px solid #ccc;} | |
245 |
input, select {vertical-align: middle; margin-bottom: |
|
245 | input, select {vertical-align: middle; margin-top: 1px; margin-bottom: 1px;} | |
246 |
|
246 | |||
247 | input.button-small {font-size: 0.8em;} |
|
247 | input.button-small {font-size: 0.8em;} | |
248 | textarea.wiki-edit { width: 99.5%; } |
|
248 | textarea.wiki-edit { width: 99.5%; } |
General Comments 0
You need to be logged in to leave comments.
Login now