Mercurial > hg > soundsoftware-site
comparison app/controllers/.svn/text-base/members_controller.rb.svn-base @ 0:513646585e45
* Import Redmine trunk SVN rev 3859
author | Chris Cannam |
---|---|
date | Fri, 23 Jul 2010 15:52:44 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:513646585e45 |
---|---|
1 # redMine - project management software | |
2 # Copyright (C) 2006 Jean-Philippe Lang | |
3 # | |
4 # This program is free software; you can redistribute it and/or | |
5 # modify it under the terms of the GNU General Public License | |
6 # as published by the Free Software Foundation; either version 2 | |
7 # of the License, or (at your option) any later version. | |
8 # | |
9 # This program is distributed in the hope that it will be useful, | |
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 # GNU General Public License for more details. | |
13 # | |
14 # You should have received a copy of the GNU General Public License | |
15 # along with this program; if not, write to the Free Software | |
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
17 | |
18 class MembersController < ApplicationController | |
19 model_object Member | |
20 before_filter :find_model_object, :except => [:new, :autocomplete_for_member] | |
21 before_filter :find_project_from_association, :except => [:new, :autocomplete_for_member] | |
22 before_filter :find_project, :only => [:new, :autocomplete_for_member] | |
23 before_filter :authorize | |
24 | |
25 def new | |
26 members = [] | |
27 if params[:member] && request.post? | |
28 attrs = params[:member].dup | |
29 if (user_ids = attrs.delete(:user_ids)) | |
30 user_ids.each do |user_id| | |
31 members << Member.new(attrs.merge(:user_id => user_id)) | |
32 end | |
33 else | |
34 members << Member.new(attrs) | |
35 end | |
36 @project.members << members | |
37 end | |
38 respond_to do |format| | |
39 if members.present? && members.all? {|m| m.valid? } | |
40 | |
41 format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } | |
42 | |
43 format.js { | |
44 render(:update) {|page| | |
45 page.replace_html "tab-content-members", :partial => 'projects/settings/members' | |
46 page << 'hideOnLoad()' | |
47 members.each {|member| page.visual_effect(:highlight, "member-#{member.id}") } | |
48 } | |
49 } | |
50 else | |
51 | |
52 format.js { | |
53 render(:update) {|page| | |
54 errors = members.collect {|m| | |
55 m.errors.full_messages | |
56 }.flatten.uniq | |
57 | |
58 page.alert(l(:notice_failed_to_save_members, :errors => errors.join(', '))) | |
59 } | |
60 } | |
61 | |
62 end | |
63 end | |
64 end | |
65 | |
66 def edit | |
67 if request.post? and @member.update_attributes(params[:member]) | |
68 respond_to do |format| | |
69 format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } | |
70 format.js { | |
71 render(:update) {|page| | |
72 page.replace_html "tab-content-members", :partial => 'projects/settings/members' | |
73 page << 'hideOnLoad()' | |
74 page.visual_effect(:highlight, "member-#{@member.id}") | |
75 } | |
76 } | |
77 end | |
78 end | |
79 end | |
80 | |
81 def destroy | |
82 if request.post? && @member.deletable? | |
83 @member.destroy | |
84 end | |
85 respond_to do |format| | |
86 format.html { redirect_to :controller => 'projects', :action => 'settings', :tab => 'members', :id => @project } | |
87 format.js { render(:update) {|page| | |
88 page.replace_html "tab-content-members", :partial => 'projects/settings/members' | |
89 page << 'hideOnLoad()' | |
90 } | |
91 } | |
92 end | |
93 end | |
94 | |
95 def autocomplete_for_member | |
96 @principals = Principal.active.like(params[:q]).find(:all, :limit => 100) - @project.principals | |
97 render :layout => false | |
98 end | |
99 | |
100 end |