From 36fc7beb2fe21beaf56b640b97e3079c7399a48f Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sat, 15 Nov 2014 11:20:47 +0000 Subject: [PATCH] Moved new project member to its own action MemberController#new. git-svn-id: http://svn.redmine.org/redmine/trunk@13600 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/members_controller.rb | 10 ++++-- app/helpers/members_helper.rb | 7 ++-- app/views/members/_new_form.html.erb | 16 ++++++++++ app/views/members/_new_modal.html.erb | 9 ++++++ app/views/members/create.js.erb | 3 +- app/views/members/new.html.erb | 6 ++++ app/views/members/new.js.erb | 2 ++ .../principal_memberships/_new_form.html.erb | 2 +- app/views/projects/settings/_members.html.erb | 32 ++----------------- lib/redmine.rb | 2 +- public/stylesheets/application.css | 26 +++++++++------ test/functional/members_controller_test.rb | 11 +++++++ 12 files changed, 79 insertions(+), 47 deletions(-) create mode 100644 app/views/members/_new_form.html.erb create mode 100644 app/views/members/_new_modal.html.erb create mode 100644 app/views/members/new.html.erb create mode 100644 app/views/members/new.js.erb diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index ca5002af8..111cabc3d 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -17,9 +17,9 @@ class MembersController < ApplicationController model_object Member - before_filter :find_model_object, :except => [:index, :create, :autocomplete] - before_filter :find_project_from_association, :except => [:index, :create, :autocomplete] - before_filter :find_project_by_project_id, :only => [:index, :create, :autocomplete] + before_filter :find_model_object, :except => [:index, :new, :create, :autocomplete] + before_filter :find_project_from_association, :except => [:index, :new, :create, :autocomplete] + before_filter :find_project_by_project_id, :only => [:index, :new, :create, :autocomplete] before_filter :authorize accept_api_auth :index, :show, :create, :update, :destroy @@ -46,6 +46,10 @@ class MembersController < ApplicationController end end + def new + @member = Member.new + end + def create members = [] if params[:membership] diff --git a/app/helpers/members_helper.rb b/app/helpers/members_helper.rb index 36f823569..9036c6db0 100644 --- a/app/helpers/members_helper.rb +++ b/app/helpers/members_helper.rb @@ -19,12 +19,15 @@ module MembersHelper def render_principals_for_new_members(project) - scope = Principal.visible.sorted.not_member_of(project).like(params[:q]) + scope = Principal.active.visible.sorted.not_member_of(project).like(params[:q]) principal_count = scope.count principal_pages = Redmine::Pagination::Paginator.new principal_count, 100, params['page'] principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).to_a - s = content_tag('div', principals_check_box_tags('membership[user_ids][]', principals), :id => 'principals') + s = content_tag('div', + content_tag('div', principals_check_box_tags('membership[user_ids][]', principals), :id => 'principals'), + :class => 'objects-selection' + ) links = pagination_links_full(principal_pages, principal_count, :per_page_links => false) {|text, parameters, options| link_to text, autocomplete_project_memberships_path(project, parameters.merge(:q => params[:q], :format => 'js')), :remote => true diff --git a/app/views/members/_new_form.html.erb b/app/views/members/_new_form.html.erb new file mode 100644 index 000000000..9140da7c4 --- /dev/null +++ b/app/views/members/_new_form.html.erb @@ -0,0 +1,16 @@ +
+ <%= label_tag("principal_search", l(:label_principal_search)) %> +

<%= text_field_tag('principal_search', nil) %>

+ <%= javascript_tag "observeSearchfield('principal_search', null, '#{ escape_javascript autocomplete_project_memberships_path(@project, :format => 'js') }')" %> +
+ <%= render_principals_for_new_members(@project) %> +
+
+
+ <%= l(:label_role_plural) %> <%= toggle_checkboxes_link('.roles-selection input') %> +
+ <% Role.givable.all.each do |role| %> + + <% end %> +
+
diff --git a/app/views/members/_new_modal.html.erb b/app/views/members/_new_modal.html.erb new file mode 100644 index 000000000..0338a953c --- /dev/null +++ b/app/views/members/_new_modal.html.erb @@ -0,0 +1,9 @@ +

<%= l(:label_member_new) %>

+ +<%= form_for @member, :as => :membership, :url => project_memberships_path(@project), :remote => true, :method => :post do |f| %> + <%= render :partial => 'new_form' %> +

+ <%= submit_tag l(:button_add), :id => 'member-add-submit' %> + <%= submit_tag l(:button_cancel), :name => nil, :onclick => "hideModal(this);", :type => 'button' %> +

+<% end %> diff --git a/app/views/members/create.js.erb b/app/views/members/create.js.erb index 11c468a76..d716743ef 100644 --- a/app/views/members/create.js.erb +++ b/app/views/members/create.js.erb @@ -2,10 +2,11 @@ $('#tab-content-members').html('<%= escape_javascript(render :partial => 'projec hideOnLoad(); <% if @members.present? && @members.all? {|m| m.valid? } %> + hideModal(); <% @members.each do |member| %> $("#member-<%= member.id %>").effect("highlight"); <% end %> -<% else %> +<% elsif @members.present? %> <% errors = @members.collect {|m| m.errors.full_messages}.flatten.uniq.join(', ') %> alert('<%= raw(escape_javascript(l(:notice_failed_to_save_members, :errors => errors))) %>'); <% end %> diff --git a/app/views/members/new.html.erb b/app/views/members/new.html.erb new file mode 100644 index 000000000..97dd380c7 --- /dev/null +++ b/app/views/members/new.html.erb @@ -0,0 +1,6 @@ +

<%= l(:label_member_new) %>

+ +<%= form_for @member, :as => :membership, :url => project_memberships_path(@project), :method => :post do |f| %> + <%= render :partial => 'new_form' %> +

<%= submit_tag l(:button_add), :name => nil %>

+<% end %> diff --git a/app/views/members/new.js.erb b/app/views/members/new.js.erb new file mode 100644 index 000000000..2d60e296a --- /dev/null +++ b/app/views/members/new.js.erb @@ -0,0 +1,2 @@ +$('#ajax-modal').html('<%= escape_javascript(render :partial => 'members/new_modal') %>'); +showModal('ajax-modal', '700px'); diff --git a/app/views/principal_memberships/_new_form.html.erb b/app/views/principal_memberships/_new_form.html.erb index 2a0d50dbc..c49d84993 100644 --- a/app/views/principal_memberships/_new_form.html.erb +++ b/app/views/principal_memberships/_new_form.html.erb @@ -1,6 +1,6 @@
<%= l(:label_project_plural) %> <%= toggle_checkboxes_link('.projects-selection input:enabled') %> -
+
<%= render_project_nested_lists(@projects) do |p| %>