##// END OF EJS Templates
REST API for project memberships (#7420)....
REST API for project memberships (#7420). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8798 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r8678:c5665276b7a4
r8678:c5665276b7a4
Show More
members_controller.rb
142 lines | 4.5 KiB | text/x-ruby | RubyLexer
/ app / controllers / members_controller.rb
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/members_controller.rb....
r6776 # Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/members_controller.rb....
r6776 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/members_controller.rb....
r6776 #
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Jean-Philippe Lang
Initial commit...
r2 class MembersController < ApplicationController
Eric Davis
Refactor: Change the different find_object filters to share a common method....
r3483 model_object Member
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 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]
Jean-Philippe Lang
Added project module concept....
r714 before_filter :authorize
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 accept_api_auth :index, :show, :create, :update, :destroy
def index
@offset, @limit = api_offset_and_limit
@member_count = @project.member_principals.count
@member_pages = Paginator.new self, @member_count, @limit, params['page']
@offset ||= @member_pages.current.offset
@members = @project.member_principals.all(
:order => "#{Member.table_name}.id",
:limit => @limit,
:offset => @offset
)
respond_to do |format|
format.html { head 406 }
format.api
end
end
def show
respond_to do |format|
format.html { head 406 }
format.api
end
end
Jean-Philippe Lang
Initial commit...
r2
Jean-Philippe Lang
Resourcified project memberships....
r8669 def create
Jean-Philippe Lang
Ability to add multiple project members in a single action (#1556)....
r2546 members = []
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 if params[:membership] && params[:membership][:user_ids]
Jean-Philippe Lang
Resourcified project memberships....
r8669 attrs = params[:membership].dup
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 user_ids = attrs.delete(:user_ids)
user_ids.each do |user_id|
members << Member.new(attrs.merge(:user_id => user_id))
Jean-Philippe Lang
Ability to add multiple project members in a single action (#1556)....
r2546 end
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 else
members << Member.new(params[:membership])
Jean-Philippe Lang
Ability to add multiple project members in a single action (#1556)....
r2546 end
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 @project.members << members
Jean-Philippe Lang
Added project module concept....
r714 respond_to do |format|
Eric Davis
Add error messages to MembersController#new so a user is informed of missing data....
r3635 if members.present? && members.all? {|m| m.valid? }
format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/members_controller.rb....
r6776 format.js {
render(:update) {|page|
Eric Davis
Add error messages to MembersController#new so a user is informed of missing data....
r3635 page.replace_html "tab-content-members", :partial => 'projects/settings/members'
Eric Davis
Hide the role forms when editing or adding Project members. #5452...
r3670 page << 'hideOnLoad()'
Eric Davis
Add error messages to MembersController#new so a user is informed of missing data....
r3635 members.each {|member| page.visual_effect(:highlight, "member-#{member.id}") }
}
Jean-Philippe Lang
Ability to add multiple project members in a single action (#1556)....
r2546 }
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 format.api {
@member = members.first
render :action => 'show', :status => :created, :location => membership_url(@member)
}
Eric Davis
Add error messages to MembersController#new so a user is informed of missing data....
r3635 else
format.js {
render(:update) {|page|
errors = members.collect {|m|
m.errors.full_messages
}.flatten.uniq
page.alert(l(:notice_failed_to_save_members, :errors => errors.join(', ')))
}
}
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 format.api { render_validation_errors(members.first) }
Eric Davis
Add error messages to MembersController#new so a user is informed of missing data....
r3635 end
Jean-Philippe Lang
Added project module concept....
r714 end
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/members_controller.rb....
r6776
Jean-Philippe Lang
Resourcified project memberships....
r8669 def update
if params[:membership]
@member.role_ids = params[:membership][:role_ids]
end
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 saved = @member.save
respond_to do |format|
format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
format.js {
render(:update) {|page|
page.replace_html "tab-content-members", :partial => 'projects/settings/members'
page << 'hideOnLoad()'
page.visual_effect(:highlight, "member-#{@member.id}")
Jean-Philippe Lang
Allows multiple roles on the same project (#706). Prerequisite for user groups feature....
r2627 }
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 }
format.api {
if saved
head :ok
else
render_validation_errors(@member)
end
}
Jean-Philippe Lang
* project settings split in 4 tabs...
r178 end
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
Jean-Philippe Lang
* project settings split in 4 tabs...
r178 def destroy
Jean-Philippe Lang
Resourcified project memberships....
r8669 if request.delete? && @member.deletable?
Jean-Philippe Lang
User groups branch merged....
r2755 @member.destroy
end
respond_to do |format|
Jean-Philippe Lang
Members management in project settings is now AJAXified...
r505 format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project }
Eric Davis
Hide the role forms when editing or adding Project members. #5452...
r3670 format.js { render(:update) {|page|
page.replace_html "tab-content-members", :partial => 'projects/settings/members'
page << 'hideOnLoad()'
}
}
Jean-Philippe Lang
REST API for project memberships (#7420)....
r8678 format.api {
if @member.destroyed?
head :ok
else
head :unprocessable_entity
end
}
Jean-Philippe Lang
Members management in project settings is now AJAXified...
r505 end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/members_controller.rb....
r6776
Jean-Philippe Lang
Resourcified project memberships....
r8669 def autocomplete
Jean-Philippe Lang
User groups branch merged....
r2755 @principals = Principal.active.like(params[:q]).find(:all, :limit => 100) - @project.principals
Jean-Philippe Lang
Adds a user search field with autocompleter on project members screen....
r2549 render :layout => false
end
Jean-Philippe Lang
added svn:eol-style native property on /app files...
r330
Jean-Philippe Lang
Initial commit...
r2 end