2007-03-12 20:59:02 +03: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 22:11:03 +04:00
class MembersController < ApplicationController
2009-03-28 15:07:05 +03:00
before_filter :find_member , :except = > [ :new , :autocomplete_for_member_login ]
before_filter :find_project , :only = > [ :new , :autocomplete_for_member_login ]
2007-09-14 15:34:08 +04:00
before_filter :authorize
2006-06-28 22:11:03 +04:00
2007-09-14 15:34:08 +04:00
def new
2009-03-27 21:10:36 +03: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 15:34:08 +04:00
respond_to do | format |
2009-03-01 14:39:01 +03:00
format . html { redirect_to :controller = > 'projects' , :action = > 'settings' , :tab = > 'members' , :id = > @project }
2009-03-27 21:10:36 +03:00
format . js {
render ( :update ) { | page |
page . replace_html " tab-content-members " , :partial = > 'projects/settings/members'
members . each { | member | page . visual_effect ( :highlight , " member- #{ member . id } " ) }
}
}
2007-09-14 15:34:08 +04:00
end
end
2007-01-26 20:59:06 +03:00
def edit
2007-03-12 20:59:02 +03:00
if request . post? and @member . update_attributes ( params [ :member ] )
2007-05-05 19:21:18 +04:00
respond_to do | format |
format . html { redirect_to :controller = > 'projects' , :action = > 'settings' , :tab = > 'members' , :id = > @project }
2009-05-10 14:54:31 +04:00
format . js {
render ( :update ) { | page |
page . replace_html " tab-content-members " , :partial = > 'projects/settings/members'
page . visual_effect ( :highlight , " member- #{ @member . id } " )
}
}
2007-05-05 19:21:18 +04:00
end
2007-01-26 20:59:06 +03:00
end
end
2007-03-12 20:59:02 +03:00
2007-01-26 20:59:06 +03:00
def destroy
2007-03-12 20:59:02 +03:00
@member . destroy
2007-05-05 19:21:18 +04:00
respond_to do | format |
format . html { redirect_to :controller = > 'projects' , :action = > 'settings' , :tab = > 'members' , :id = > @project }
2007-09-14 15:34:08 +04:00
format . js { render ( :update ) { | page | page . replace_html " tab-content-members " , :partial = > 'projects/settings/members' } }
2007-05-05 19:21:18 +04:00
end
2007-03-12 20:59:02 +03:00
end
2009-03-28 15:07:05 +03:00
def autocomplete_for_member_login
@users = User . active . find ( :all , :conditions = > [ " LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ? " , " #{ params [ :user ] } % " , " #{ params [ :user ] } % " , " #{ params [ :user ] } % " ] ,
:limit = > 10 ,
:order = > 'login ASC' ) - @project . users
render :layout = > false
end
2007-03-12 20:59:02 +03:00
private
def find_project
2007-09-14 15:34:08 +04:00
@project = Project . find ( params [ :id ] )
rescue ActiveRecord :: RecordNotFound
render_404
end
def find_member
2007-03-12 20:59:02 +03:00
@member = Member . find ( params [ :id ] )
@project = @member . project
rescue ActiveRecord :: RecordNotFound
render_404
2007-01-28 03:00:21 +03:00
end
2006-06-28 22:11:03 +04:00
end