annotate app/controllers/.svn/text-base/users_controller.rb.svn-base @ 45:65d9e2cabaa3 luisf

Added tipoftheday to the config/settings in order to correct previous issues. Tip of the day is now working correctly. Added the heading strings to the locales files.
author luisf
date Tue, 23 Nov 2010 11:50:01 +0000
parents 94944d00e43c
children af80e5618e9b
rev   line source
Chris@0 1 # Redmine - project management software
Chris@0 2 # Copyright (C) 2006-2009 Jean-Philippe Lang
Chris@0 3 #
Chris@0 4 # This program is free software; you can redistribute it and/or
Chris@0 5 # modify it under the terms of the GNU General Public License
Chris@0 6 # as published by the Free Software Foundation; either version 2
Chris@0 7 # of the License, or (at your option) any later version.
Chris@0 8 #
Chris@0 9 # This program is distributed in the hope that it will be useful,
Chris@0 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@0 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@0 12 # GNU General Public License for more details.
Chris@0 13 #
Chris@0 14 # You should have received a copy of the GNU General Public License
Chris@0 15 # along with this program; if not, write to the Free Software
Chris@0 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@0 17
Chris@0 18 class UsersController < ApplicationController
Chris@0 19 layout 'admin'
Chris@0 20
Chris@0 21 before_filter :require_admin, :except => :show
Chris@0 22
Chris@0 23 helper :sort
Chris@0 24 include SortHelper
Chris@0 25 helper :custom_fields
Chris@0 26 include CustomFieldsHelper
Chris@0 27
Chris@0 28 def index
Chris@0 29 sort_init 'login', 'asc'
Chris@0 30 sort_update %w(login firstname lastname mail admin created_on last_login_on)
Chris@0 31
Chris@0 32 @status = params[:status] ? params[:status].to_i : 1
Chris@0 33 c = ARCondition.new(@status == 0 ? "status <> 0" : ["status = ?", @status])
Chris@0 34
Chris@0 35 unless params[:name].blank?
Chris@0 36 name = "%#{params[:name].strip.downcase}%"
Chris@0 37 c << ["LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ? OR LOWER(mail) LIKE ?", name, name, name, name]
Chris@0 38 end
Chris@0 39
Chris@0 40 @user_count = User.count(:conditions => c.conditions)
Chris@0 41 @user_pages = Paginator.new self, @user_count,
Chris@0 42 per_page_option,
Chris@0 43 params['page']
Chris@0 44 @users = User.find :all,:order => sort_clause,
Chris@0 45 :conditions => c.conditions,
Chris@0 46 :limit => @user_pages.items_per_page,
Chris@0 47 :offset => @user_pages.current.offset
Chris@0 48
Chris@0 49 render :layout => !request.xhr?
Chris@0 50 end
Chris@0 51
Chris@0 52 def show
Chris@0 53 @user = User.find(params[:id])
Chris@0 54
Chris@14 55 # show projects based on current user visibility
Chris@14 56 @memberships = @user.memberships.all(:conditions => Project.visible_by(User.current))
Chris@0 57
Chris@0 58 events = Redmine::Activity::Fetcher.new(User.current, :author => @user).events(nil, nil, :limit => 10)
Chris@0 59 @events_by_day = events.group_by(&:event_date)
Chris@0 60
Chris@0 61 unless User.current.admin?
Chris@0 62 if !@user.active? || (@user != User.current && @memberships.empty? && events.empty?)
Chris@0 63 render_404
Chris@0 64 return
Chris@0 65 end
Chris@0 66 end
Chris@0 67 render :layout => 'base'
Chris@0 68
Chris@0 69 rescue ActiveRecord::RecordNotFound
Chris@0 70 render_404
Chris@0 71 end
Chris@0 72
chris@37 73 def new
chris@37 74 @notification_options = User::MAIL_NOTIFICATION_OPTIONS
chris@37 75 @notification_option = Setting.default_notification_option
chris@37 76
chris@37 77 @user = User.new(:language => Setting.default_language)
chris@37 78 @auth_sources = AuthSource.find(:all)
chris@37 79 end
chris@37 80
chris@37 81 verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed }
chris@37 82 def create
chris@37 83 @notification_options = User::MAIL_NOTIFICATION_OPTIONS
chris@37 84 @notification_option = Setting.default_notification_option
chris@37 85
chris@37 86 @user = User.new(params[:user])
chris@37 87 @user.admin = params[:user][:admin] || false
chris@37 88 @user.login = params[:user][:login]
chris@37 89 @user.password, @user.password_confirmation = params[:password], params[:password_confirmation] unless @user.auth_source_id
chris@37 90
chris@37 91 # TODO: Similar to My#account
chris@37 92 @user.mail_notification = params[:notification_option] || 'only_my_events'
chris@37 93 @user.pref.attributes = params[:pref]
chris@37 94 @user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
chris@37 95
chris@37 96 if @user.save
chris@37 97 @user.pref.save
chris@37 98 @user.notified_project_ids = (params[:notification_option] == 'selected' ? params[:notified_project_ids] : [])
chris@37 99
chris@37 100 Mailer.deliver_account_information(@user, params[:password]) if params[:send_information]
chris@37 101 flash[:notice] = l(:notice_successful_create)
chris@37 102 redirect_to(params[:continue] ? {:controller => 'users', :action => 'new'} :
chris@37 103 {:controller => 'users', :action => 'edit', :id => @user})
chris@37 104 return
Chris@0 105 else
chris@37 106 @auth_sources = AuthSource.find(:all)
chris@37 107 @notification_option = @user.mail_notification
chris@37 108
chris@37 109 render :action => 'new'
Chris@0 110 end
Chris@0 111 end
Chris@0 112
Chris@0 113 def edit
Chris@0 114 @user = User.find(params[:id])
chris@37 115 @notification_options = @user.valid_notification_options
chris@37 116 @notification_option = @user.mail_notification
chris@37 117
Chris@0 118 @auth_sources = AuthSource.find(:all)
Chris@0 119 @membership ||= Member.new
chris@37 120 end
chris@37 121
chris@37 122 verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed }
chris@37 123 def update
chris@37 124 @user = User.find(params[:id])
chris@37 125 @notification_options = @user.valid_notification_options
chris@37 126 @notification_option = @user.mail_notification
chris@37 127
chris@37 128 @user.admin = params[:user][:admin] if params[:user][:admin]
chris@37 129 @user.login = params[:user][:login] if params[:user][:login]
chris@37 130 if params[:password].present? && (@user.auth_source_id.nil? || params[:user][:auth_source_id].blank?)
chris@37 131 @user.password, @user.password_confirmation = params[:password], params[:password_confirmation]
chris@37 132 end
chris@37 133 @user.group_ids = params[:user][:group_ids] if params[:user][:group_ids]
chris@37 134 @user.attributes = params[:user]
chris@37 135 # Was the account actived ? (do it before User#save clears the change)
chris@37 136 was_activated = (@user.status_change == [User::STATUS_REGISTERED, User::STATUS_ACTIVE])
chris@37 137 # TODO: Similar to My#account
chris@37 138 @user.mail_notification = params[:notification_option] || 'only_my_events'
chris@37 139 @user.pref.attributes = params[:pref]
chris@37 140 @user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
chris@37 141
chris@37 142 if @user.save
chris@37 143 @user.pref.save
chris@37 144 @user.notified_project_ids = (params[:notification_option] == 'selected' ? params[:notified_project_ids] : [])
chris@37 145
chris@37 146 if was_activated
chris@37 147 Mailer.deliver_account_activated(@user)
chris@37 148 elsif @user.active? && params[:send_information] && !params[:password].blank? && @user.auth_source_id.nil?
chris@37 149 Mailer.deliver_account_information(@user, params[:password])
chris@37 150 end
chris@37 151 flash[:notice] = l(:notice_successful_update)
chris@37 152 redirect_to :back
chris@37 153 else
chris@37 154 @auth_sources = AuthSource.find(:all)
chris@37 155 @membership ||= Member.new
chris@37 156
chris@37 157 render :action => :edit
chris@37 158 end
Chris@0 159 rescue ::ActionController::RedirectBackError
Chris@0 160 redirect_to :controller => 'users', :action => 'edit', :id => @user
Chris@0 161 end
chris@37 162
Chris@0 163 def edit_membership
Chris@0 164 @user = User.find(params[:id])
Chris@0 165 @membership = Member.edit_membership(params[:membership_id], params[:membership], @user)
Chris@0 166 @membership.save if request.post?
Chris@0 167 respond_to do |format|
Chris@14 168 if @membership.valid?
Chris@14 169 format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' }
Chris@14 170 format.js {
Chris@14 171 render(:update) {|page|
Chris@14 172 page.replace_html "tab-content-memberships", :partial => 'users/memberships'
Chris@14 173 page.visual_effect(:highlight, "member-#{@membership.id}")
Chris@14 174 }
Chris@14 175 }
Chris@14 176 else
Chris@14 177 format.js {
Chris@14 178 render(:update) {|page|
Chris@14 179 page.alert(l(:notice_failed_to_save_members, :errors => @membership.errors.full_messages.join(', ')))
Chris@14 180 }
Chris@14 181 }
Chris@14 182 end
Chris@14 183 end
Chris@0 184 end
Chris@0 185
Chris@0 186 def destroy_membership
Chris@0 187 @user = User.find(params[:id])
Chris@0 188 @membership = Member.find(params[:membership_id])
Chris@0 189 if request.post? && @membership.deletable?
Chris@0 190 @membership.destroy
Chris@0 191 end
Chris@0 192 respond_to do |format|
Chris@0 193 format.html { redirect_to :controller => 'users', :action => 'edit', :id => @user, :tab => 'memberships' }
Chris@0 194 format.js { render(:update) {|page| page.replace_html "tab-content-memberships", :partial => 'users/memberships'} }
Chris@0 195 end
Chris@0 196 end
Chris@0 197 end