Mercurial > hg > soundsoftware-site
comparison app/controllers/users_controller.rb @ 37:94944d00e43c
* Update to SVN trunk rev 4411
author | Chris Cannam <chris.cannam@soundsoftware.ac.uk> |
---|---|
date | Fri, 19 Nov 2010 13:24:41 +0000 |
parents | 40f7cfd4df19 |
children | bbb139d5ca95 af80e5618e9b |
comparison
equal
deleted
inserted
replaced
22:40f7cfd4df19 | 37:94944d00e43c |
---|---|
49 render :layout => !request.xhr? | 49 render :layout => !request.xhr? |
50 end | 50 end |
51 | 51 |
52 def show | 52 def show |
53 @user = User.find(params[:id]) | 53 @user = User.find(params[:id]) |
54 @custom_values = @user.custom_values | |
55 | 54 |
56 # show projects based on current user visibility | 55 # show projects based on current user visibility |
57 @memberships = @user.memberships.all(:conditions => Project.visible_by(User.current)) | 56 @memberships = @user.memberships.all(:conditions => Project.visible_by(User.current)) |
58 | 57 |
59 events = Redmine::Activity::Fetcher.new(User.current, :author => @user).events(nil, nil, :limit => 10) | 58 events = Redmine::Activity::Fetcher.new(User.current, :author => @user).events(nil, nil, :limit => 10) |
69 | 68 |
70 rescue ActiveRecord::RecordNotFound | 69 rescue ActiveRecord::RecordNotFound |
71 render_404 | 70 render_404 |
72 end | 71 end |
73 | 72 |
74 def add | 73 def new |
75 if request.get? | 74 @notification_options = User::MAIL_NOTIFICATION_OPTIONS |
76 @user = User.new(:language => Setting.default_language) | 75 @notification_option = Setting.default_notification_option |
76 | |
77 @user = User.new(:language => Setting.default_language) | |
78 @auth_sources = AuthSource.find(:all) | |
79 end | |
80 | |
81 verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed } | |
82 def create | |
83 @notification_options = User::MAIL_NOTIFICATION_OPTIONS | |
84 @notification_option = Setting.default_notification_option | |
85 | |
86 @user = User.new(params[:user]) | |
87 @user.admin = params[:user][:admin] || false | |
88 @user.login = params[:user][:login] | |
89 @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless @user.auth_source_id | |
90 | |
91 # TODO: Similar to My#account | |
92 @user.mail_notification = params[:notification_option] || 'only_my_events' | |
93 @user.pref.attributes = params[:pref] | |
94 @user.pref[:no_self_notified] = (params[:no_self_notified] == '1') | |
95 | |
96 if @user.save | |
97 @user.pref.save | |
98 @user.notified_project_ids = (params[:notification_option] == 'selected' ? params[:notified_project_ids] : []) | |
99 | |
100 Mailer.deliver_account_information(@user, params[:password]) if params[:send_information] | |
101 flash[:notice] = l(:notice_successful_create) | |
102 redirect_to(params[:continue] ? {:controller => 'users', :action => 'new'} : | |
103 {:controller => 'users', :action => 'edit', :id => @user}) | |
104 return | |
77 else | 105 else |
78 @user = User.new(params[:user]) | 106 @auth_sources = AuthSource.find(:all) |
79 @user.admin = params[:user][:admin] || false | 107 @notification_option = @user.mail_notification |
80 @user.login = params[:user][:login] | 108 |
81 @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless @user.auth_source_id | 109 render :action => 'new' |
82 if @user.save | |
83 Mailer.deliver_account_information(@user, params[:password]) if params[:send_information] | |
84 flash[:notice] = l(:notice_successful_create) | |
85 redirect_to(params[:continue] ? {:controller => 'users', :action => 'add'} : | |
86 {:controller => 'users', :action => 'edit', :id => @user}) | |
87 return | |
88 end | |
89 end | 110 end |
90 @auth_sources = AuthSource.find(:all) | |
91 end | 111 end |
92 | 112 |
93 def edit | 113 def edit |
94 @user = User.find(params[:id]) | 114 @user = User.find(params[:id]) |
95 if request.post? | 115 @notification_options = @user.valid_notification_options |
96 @user.admin = params[:user][:admin] if params[:user][:admin] | 116 @notification_option = @user.mail_notification |
97 @user.login = params[:user][:login] if params[:user][:login] | 117 |
98 if params[:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?) | |
99 @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] | |
100 end | |
101 @user.group_ids = params[:user][:group_ids] if params[:user][:group_ids] | |
102 @user.attributes = params[:user] | |
103 # Was the account actived ? (do it before User#save clears the change) | |
104 was_activated = (@user.status_change == [User::STATUS_REGISTERED, User::STATUS_ACTIVE]) | |
105 if @user.save | |
106 if was_activated | |
107 Mailer.deliver_account_activated(@user) | |
108 elsif @user.active? && params[:send_information] && !params[:password].blank? && @user.auth_source_id.nil? | |
109 Mailer.deliver_account_information(@user, params[:password]) | |
110 end | |
111 flash[:notice] = l(:notice_successful_update) | |
112 redirect_to :back | |
113 end | |
114 end | |
115 @auth_sources = AuthSource.find(:all) | 118 @auth_sources = AuthSource.find(:all) |
116 @membership ||= Member.new | 119 @membership ||= Member.new |
120 end | |
121 | |
122 verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed } | |
123 def update | |
124 @user = User.find(params[:id]) | |
125 @notification_options = @user.valid_notification_options | |
126 @notification_option = @user.mail_notification | |
127 | |
128 @user.admin = params[:user][:admin] if params[:user][:admin] | |
129 @user.login = params[:user][:login] if params[:user][:login] | |
130 if params[:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?) | |
131 @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] | |
132 end | |
133 @user.group_ids = params[:user][:group_ids] if params[:user][:group_ids] | |
134 @user.attributes = params[:user] | |
135 # Was the account actived ? (do it before User#save clears the change) | |
136 was_activated = (@user.status_change == [User::STATUS_REGISTERED, User::STATUS_ACTIVE]) | |
137 # TODO: Similar to My#account | |
138 @user.mail_notification = params[:notification_option] || 'only_my_events' | |
139 @user.pref.attributes = params[:pref] | |
140 @user.pref[:no_self_notified] = (params[:no_self_notified] == '1') | |
141 | |
142 if @user.save | |
143 @user.pref.save | |
144 @user.notified_project_ids = (params[:notification_option] == 'selected' ? params[:notified_project_ids] : []) | |
145 | |
146 if was_activated | |
147 Mailer.deliver_account_activated(@user) | |
148 elsif @user.active? && params[:send_information] && !params[:password].blank? && @user.auth_source_id.nil? | |
149 Mailer.deliver_account_information(@user, params[:password]) | |
150 end | |
151 flash[:notice] = l(:notice_successful_update) | |
152 redirect_to :back | |
153 else | |
154 @auth_sources = AuthSource.find(:all) | |
155 @membership ||= Member.new | |
156 | |
157 render :action => :edit | |
158 end | |
117 rescue ::ActionController::RedirectBackError | 159 rescue ::ActionController::RedirectBackError |
118 redirect_to :controller => 'users', :action => 'edit', :id => @user | 160 redirect_to :controller => 'users', :action => 'edit', :id => @user |
119 end | 161 end |
120 | 162 |
121 def edit_membership | 163 def edit_membership |
122 @user = User.find(params[:id]) | 164 @user = User.find(params[:id]) |
123 @membership = Member.edit_membership(params[:membership_id], params[:membership], @user) | 165 @membership = Member.edit_membership(params[:membership_id], params[:membership], @user) |
124 @membership.save if request.post? | 166 @membership.save if request.post? |
125 respond_to do |format| | 167 respond_to do |format| |