| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  | # redMine - project management software | 
					
						
							|  |  |  | # Copyright (C) 2006  Jean-Philippe Lang | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # 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. | 
					
						
							|  |  |  | #  | 
					
						
							|  |  |  | # 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. | 
					
						
							|  |  |  | #  | 
					
						
							|  |  |  | # 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-28 18:11:03 +00:00
										 |  |  | class MembersController < ApplicationController | 
					
						
							| 
									
										
										
										
											2010-03-17 15:41:58 +00:00
										 |  |  |   model_object Member | 
					
						
							|  |  |  |   before_filter :find_model_object, :except => [:new, :autocomplete_for_member] | 
					
						
							| 
									
										
										
										
											2010-03-16 15:17:47 +00:00
										 |  |  |   before_filter :find_project_from_association, :except => [:new, :autocomplete_for_member] | 
					
						
							| 
									
										
										
										
											2009-09-12 08:36:46 +00:00
										 |  |  |   before_filter :find_project, :only => [:new, :autocomplete_for_member] | 
					
						
							| 
									
										
										
										
											2007-09-14 11:34:08 +00:00
										 |  |  |   before_filter :authorize | 
					
						
							| 
									
										
										
										
											2006-06-28 18:11:03 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-14 11:34:08 +00:00
										 |  |  |   def new | 
					
						
							| 
									
										
										
										
											2009-03-27 18:10:36 +00:00
										 |  |  |     members = [] | 
					
						
							|  |  |  |     if params[:member] && request.post? | 
					
						
							|  |  |  |       attrs = params[:member].dup | 
					
						
							|  |  |  |       if (user_ids = attrs.delete(:user_ids)) | 
					
						
							|  |  |  |         user_ids.each do |user_id| | 
					
						
							|  |  |  |           members << Member.new(attrs.merge(:user_id => user_id)) | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       else | 
					
						
							|  |  |  |         members << Member.new(attrs) | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |       @project.members << members | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2007-09-14 11:34:08 +00:00
										 |  |  |     respond_to do |format| | 
					
						
							| 
									
										
										
										
											2010-05-24 20:21:16 +00:00
										 |  |  |       if members.present? && members.all? {|m| m.valid? } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         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' | 
					
						
							| 
									
										
										
										
											2010-06-19 19:51:43 +00:00
										 |  |  |             page << 'hideOnLoad()' | 
					
						
							| 
									
										
										
										
											2010-05-24 20:21:16 +00:00
										 |  |  |             members.each {|member| page.visual_effect(:highlight, "member-#{member.id}") } | 
					
						
							|  |  |  |           } | 
					
						
							| 
									
										
										
										
											2009-03-27 18:10:36 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-05-24 20:21:16 +00:00
										 |  |  |       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(', '))) | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2007-09-14 11:34:08 +00:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  |    | 
					
						
							| 
									
										
										
										
											2007-01-26 17:59:06 +00:00
										 |  |  |   def edit | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |     if request.post? and @member.update_attributes(params[:member]) | 
					
						
							| 
									
										
										
										
											2007-05-05 15:21:18 +00:00
										 |  |  |   	 respond_to do |format| | 
					
						
							|  |  |  |         format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } | 
					
						
							| 
									
										
										
										
											2009-05-10 10:54:31 +00:00
										 |  |  |         format.js {  | 
					
						
							|  |  |  |           render(:update) {|page|  | 
					
						
							|  |  |  |             page.replace_html "tab-content-members", :partial => 'projects/settings/members' | 
					
						
							| 
									
										
										
										
											2010-06-19 19:51:43 +00:00
										 |  |  |             page << 'hideOnLoad()' | 
					
						
							| 
									
										
										
										
											2009-05-10 10:54:31 +00:00
										 |  |  |             page.visual_effect(:highlight, "member-#{@member.id}") | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2007-05-05 15:21:18 +00:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2007-01-26 17:59:06 +00:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-01-26 17:59:06 +00:00
										 |  |  |   def destroy | 
					
						
							| 
									
										
										
										
											2009-09-12 08:36:46 +00:00
										 |  |  |     if request.post? && @member.deletable? | 
					
						
							|  |  |  |       @member.destroy | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |     respond_to do |format| | 
					
						
							| 
									
										
										
										
											2007-05-05 15:21:18 +00:00
										 |  |  |       format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } | 
					
						
							| 
									
										
										
										
											2010-06-19 19:51:43 +00:00
										 |  |  |       format.js { render(:update) {|page| | 
					
						
							|  |  |  |           page.replace_html "tab-content-members", :partial => 'projects/settings/members' | 
					
						
							|  |  |  |           page << 'hideOnLoad()' | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2007-05-05 15:21:18 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2009-03-28 12:07:05 +00:00
										 |  |  |    | 
					
						
							| 
									
										
										
										
											2009-09-12 08:36:46 +00:00
										 |  |  |   def autocomplete_for_member | 
					
						
							|  |  |  |     @principals = Principal.active.like(params[:q]).find(:all, :limit => 100) - @project.principals | 
					
						
							| 
									
										
										
										
											2009-03-28 12:07:05 +00:00
										 |  |  |     render :layout => false | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2007-03-12 17:59:02 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-28 18:11:03 +00:00
										 |  |  | end |