# HG changeset patch # User Chris Cannam # Date 1310564234 -3600 # Node ID b9f81065a8e10c24948cca84dee1554e3638165b # Parent a8e5a47c5596b36defaa56773e88605bfaec722b# Parent d7326bb4f6f0cda12bfdcf0fffed630c3208203e Merge from branch "feature_142" diff -r a8e5a47c5596 -r b9f81065a8e1 app/controllers/members_controller.rb --- a/app/controllers/members_controller.rb Wed Jul 13 14:37:04 2011 +0100 +++ b/app/controllers/members_controller.rb Wed Jul 13 14:37:14 2011 +0100 @@ -17,11 +17,22 @@ 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] + menu_item :members + before_filter :find_model_object, :except => [:index, :new, :autocomplete_for_member] + before_filter :find_project_from_association, :except => [:new, :index, :autocomplete_for_member] before_filter :find_project, :only => [:new, :autocomplete_for_member] + before_filter :find_project_by_project_id, :only => [:index] before_filter :authorize + def index + logger.debug('in index') + respond_to do |format| + format.html { + render :layout => false if request.xhr? + } + end + end + def new members = [] if params[:member] && request.post? @@ -50,11 +61,11 @@ respond_to do |format| if members.present? && members.all? {|m| m.valid? } - format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } + format.html { redirect_to :action => 'index', :project_id => @project } format.js { render(:update) {|page| - page.replace_html "tab-content-members", :partial => 'projects/settings/members' + page.replace_html "memberlist", :partial => 'editlist' page << 'hideOnLoad()' members.each {|member| page.visual_effect(:highlight, "member-#{member.id}") } } @@ -78,10 +89,10 @@ def edit if request.post? and @member.update_attributes(params[:member]) respond_to do |format| - format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } + format.html { redirect_to :action => 'index', :project_id => @project } format.js { render(:update) {|page| - page.replace_html "tab-content-members", :partial => 'projects/settings/members' + page.replace_html "memberlist", :partial => 'editlist' page << 'hideOnLoad()' page.visual_effect(:highlight, "member-#{@member.id}") } @@ -95,9 +106,9 @@ @member.destroy end respond_to do |format| - format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } + format.html { redirect_to :action => 'index', :project_id => @project } format.js { render(:update) {|page| - page.replace_html "tab-content-members", :partial => 'projects/settings/members' + page.replace_html "memberlist", :partial => 'editlist' page << 'hideOnLoad()' } } diff -r a8e5a47c5596 -r b9f81065a8e1 app/helpers/projects_helper.rb --- a/app/helpers/projects_helper.rb Wed Jul 13 14:37:04 2011 +0100 +++ b/app/helpers/projects_helper.rb Wed Jul 13 14:37:14 2011 +0100 @@ -25,7 +25,6 @@ tabs = [{:name => 'info', :action => :edit_project, :partial => 'projects/edit', :label => :label_information_plural}, {:name => 'overview', :action => :edit_project, :partial => 'projects/settings/overview', :label => :label_welcome_page}, {:name => 'modules', :action => :select_project_modules, :partial => 'projects/settings/modules', :label => :label_module_plural}, - {:name => 'members', :action => :manage_members, :partial => 'projects/settings/members', :label => :label_member_plural}, {:name => 'versions', :action => :manage_versions, :partial => 'projects/settings/versions', :label => :label_version_plural}, {:name => 'categories', :action => :manage_categories, :partial => 'projects/settings/issue_categories', :label => :label_issue_category_plural}, {:name => 'wiki', :action => :manage_wiki, :partial => 'projects/settings/wiki', :label => :label_wiki}, diff -r a8e5a47c5596 -r b9f81065a8e1 app/views/members/_editlist.rhtml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/members/_editlist.rhtml Wed Jul 13 14:37:14 2011 +0100 @@ -0,0 +1,77 @@ +<%= error_messages_for 'member' %> + +<% roles = Role.find_all_givable + members = @project.member_principals.find(:all, :include => [:roles, :principal]).sort %> + +<% if members.any? %> +
<%= l(:label_user) %> | +<%= l(:label_role_plural) %> | ++ |
---|---|---|
<%= link_to_user member.principal %> | +
+ <%=h member.roles.sort.collect(&:to_s).join(', ') %>
+ <% remote_form_for(:member, member, :url => {:controller => 'members', :action => 'edit', :id => member},
+ :method => :post, :html => { :id => "member-#{member.id}-roles-form", :class => 'hol' }) do |f| %>
+ <% roles.each do |role| %>
+ <%= 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;" %> + <% end %> + |
+ + <%= link_to_function l(:button_edit), "$('member-#{member.id}-roles').hide(); $('member-#{member.id}-roles-form').show(); return false;", :class => 'icon icon-edit' %> + <%= link_to_remote(l(:button_delete), { :url => {:controller => 'members', :action => 'destroy', :id => member}, + :method => :post, + :confirm => (!User.current.admin? && member.include?(User.current) ? l(:text_own_membership_delete_confirmation) : nil) + }, :title => l(:button_delete), + :class => 'icon icon-del') if member.deletable? %> + | +
<%= l(:label_no_data) %>
+<% end %> + +<% content_for :sidebar do %> +<% principals = Principal.active.find(:all, :limit => 100, :order => 'type, login, lastname ASC') - @project.principals %> + +<% if roles.any? && principals.any? %> + <% remote_form_for(:member, @member, :url => {:controller => 'members', :action => 'new', :id => @project}, :method => :post, + :loading => '$(\'member-add-submit\').disable();', + :complete => 'if($(\'member-add-submit\')) $(\'member-add-submit\').enable();') do |f| %> +<%= label_tag "principal_search", l(:label_principal_search) %><%= text_field_tag 'principal_search', nil %>
+ <%= observe_field(:principal_search, + :frequency => 0.5, + :update => :principals, + :url => { :controller => 'members', :action => 'autocomplete_for_member', :id => @project }, + :with => 'q') + %> + +<%= l(:label_set_role_plural) %>:
+ <% roles.each do |role| %> +<%= submit_tag l(:button_add), :id => 'member-add-submit' %>
+ <% end %> +<% end %> +<% end %> diff -r a8e5a47c5596 -r b9f81065a8e1 app/views/members/_list.rhtml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/members/_list.rhtml Wed Jul 13 14:37:14 2011 +0100 @@ -0,0 +1,26 @@ + +<% roles = Role.find_all_givable + members = @project.member_principals.find(:all, :include => [:roles, :principal]).sort %> + +<% if members.any? %> + +<%= l(:label_no_data) %>
+<% end %> +<%= l(:label_user) %> / <%= l(:label_group) %> | -<%= l(:label_role_plural) %> | -- <%= call_hook(:view_projects_settings_members_table_header, :project => @project) %> - |
---|---|---|
<%= link_to_user member.principal %> | -
- <%=h member.roles.sort.collect(&:to_s).join(', ') %>
- <% if authorize_for('members', 'edit') %>
- <% remote_form_for(:member, member, :url => {:controller => 'members', :action => 'edit', :id => member},
- :method => :post, :html => { :id => "member-#{member.id}-roles-form", :class => 'hol' }) do |f| %>
- <% roles.each do |role| %>
- <%= 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;" %> - <% end %> - <% end %> - |
- - <%= link_to_function l(:button_edit), "$('member-#{member.id}-roles').hide(); $('member-#{member.id}-roles-form').show(); return false;", :class => 'icon icon-edit' %> - <%= link_to_remote(l(:button_delete), { :url => {:controller => 'members', :action => 'destroy', :id => member}, - :method => :post, - :confirm => (!User.current.admin? && member.include?(User.current) ? l(:text_own_membership_delete_confirmation) : nil) - }, :title => l(:button_delete), - :class => 'icon icon-del') if member.deletable? %> - | - <%= call_hook(:view_projects_settings_members_table_row, { :project => @project, :member => member}) %> -
<%= l(:label_no_data) %>
-<% end %> -