##// END OF EJS Templates
Upgraded to Rails 2.3.4 (#3597)...
Upgraded to Rails 2.3.4 (#3597) * Ran the Rails upgrade * Upgraded to Rails Engines 2.3.2 * Added a plugin to let Engines override application views. * Converted tests to use the new classes: ** ActionController::TestCase for functional ** ActiveSupport::TestCase for units * Converted ActiveRecord::Error message to a string. * ActiveRecord grouping returns an ordered hash which doesn't have #sort! * Updated the I18n storage_units format. * Added some default initializers from a fresh rails app * Changed the order of check_box_tags and hidden_field_tags. The hidden tag needs to appear first in Rails 2.3, otherwise it will override any value in the check_box_tag. * Removed the custom handler for when the cookie store is tampered with. Rails 2.3 removed the TamperedWithCookie exception and instead Rails will not load the data from it when it's been tampered with (e.g. no user login). * Fixed mail layouts, 2.3 has problems with implicit multipart emails that use layouts. Also removed some custom Redmine mailer code. * Fixed a bug that occurred in tests where the "required" span tag would be added to the :field_status translation. This resulted in an email string of: <li>Status<span class="required"> *</span><span class="required"> *</span> Instead of: <li>Status: New</li> git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2887 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r2570:dea072f50619
r2773:7b0cb6aba871
Show More
my_controller.rb
163 lines | 6.0 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Allow My Page blocks to be added to from a plugin (#2840)....
r2465 # Redmine - project management software
# Copyright (C) 2006-2009 Jean-Philippe Lang
Jean-Philippe Lang
- new controller "myController"...
r60 #
# 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.
class MyController < ApplicationController
before_filter :require_login
Jean-Philippe Lang
Moves @layout 'base'@ to ApplicationController....
r1726 helper :issues
Jean-Philippe Lang
User custom fields can now be set as editable so that users can edit them on 'My account'....
r2274 helper :custom_fields
Jean-Philippe Lang
Moves @layout 'base'@ to ApplicationController....
r1726
Jean-Philippe Lang
removed underscores in block names (problem with scriptaculous sortables)...
r239 BLOCKS = { 'issuesassignedtome' => :label_assigned_to_me_issues,
'issuesreportedbyme' => :label_reported_issues,
Jean-Philippe Lang
Added a new block available for my page: "Watched issues"...
r453 'issueswatched' => :label_watched_issues,
Jean-Philippe Lang
removed underscores in block names (problem with scriptaculous sortables)...
r239 'news' => :label_news_latest,
Jean-Philippe Lang
- new controller "myController"...
r60 'calendar' => :label_calendar,
Jean-Philippe Lang
Add a time tracking block for 'My page' (#615)....
r1245 'documents' => :label_document_plural,
'timelog' => :label_spent_time
Jean-Philippe Lang
Allow My Page blocks to be added to from a plugin (#2840)....
r2465 }.merge(Redmine::Views::MyPage::Block.additional_blocks).freeze
Jean-Philippe Lang
- new controller "myController"...
r60
Jean-Philippe Lang
removed underscores in block names (problem with scriptaculous sortables)...
r239 DEFAULT_LAYOUT = { 'left' => ['issuesassignedtome'],
'right' => ['issuesreportedbyme']
}.freeze
Jean-Philippe Lang
- new controller "myController"...
r60 verify :xhr => true,
:session => :page_layout,
:only => [:add_block, :remove_block, :order_blocks]
def index
page
render :action => 'page'
end
# Show user's page
def page
Jean-Philippe Lang
Anonymous users can now be allowed to create, edit, comment issues, comment news and post messages in the forums....
r906 @user = User.current
Jean-Philippe Lang
removed underscores in block names (problem with scriptaculous sortables)...
r239 @blocks = @user.pref[:my_page_layout] || DEFAULT_LAYOUT
Jean-Philippe Lang
- new controller "myController"...
r60 end
# Edit user's account
def account
Jean-Philippe Lang
More flexible mail notifications settings at user level. A user has now 3 options:...
r842 @user = User.current
Jean-Philippe Lang
"hide my email address" preference added, so that it's not displayed on account/show...
r61 @pref = @user.pref
Jean-Philippe Lang
More flexible mail notifications settings at user level. A user has now 3 options:...
r842 if request.post?
@user.attributes = params[:user]
@user.mail_notification = (params[:notification_option] == 'all')
@user.pref.attributes = params[:pref]
Jean-Philippe Lang
Added an option on 'My account' for users who don't want to be notified of changes that they make....
r886 @user.pref[:no_self_notified] = (params[:no_self_notified] == '1')
Jean-Philippe Lang
More flexible mail notifications settings at user level. A user has now 3 options:...
r842 if @user.save
@user.pref.save
@user.notified_project_ids = (params[:notification_option] == 'selected' ? params[:notified_project_ids] : [])
set_language_if_valid @user.language
flash[:notice] = l(:notice_account_updated)
redirect_to :action => 'account'
return
end
Jean-Philippe Lang
- new controller "myController"...
r60 end
Jean-Philippe Lang
More flexible mail notifications settings at user level. A user has now 3 options:...
r842 @notification_options = [[l(:label_user_mail_option_all), 'all'],
[l(:label_user_mail_option_none), 'none']]
# Only users that belong to more than 1 project can select projects for which they are notified
# Note that @user.membership.size would fail since AR ignores :include association option when doing a count
@notification_options.insert 1, [l(:label_user_mail_option_selected), 'selected'] if @user.memberships.length > 1
@notification_option = @user.mail_notification? ? 'all' : (@user.notified_projects_ids.empty? ? 'none' : 'selected')
Jean-Philippe Lang
- new controller "myController"...
r60 end
Jean-Philippe Lang
More flexible mail notifications settings at user level. A user has now 3 options:...
r842 # Manage user's password
def password
Jean-Philippe Lang
Anonymous users can now be allowed to create, edit, comment issues, comment news and post messages in the forums....
r906 @user = User.current
Jean-Philippe Lang
Applied the flash notices patch by Matt Jones (slightly edited)....
r597 flash[:error] = l(:notice_can_t_change_password) and redirect_to :action => 'account' and return if @user.auth_source_id
Jean-Philippe Lang
More flexible mail notifications settings at user level. A user has now 3 options:...
r842 if request.post?
if @user.check_password?(params[:password])
@user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation]
if @user.save
flash[:notice] = l(:notice_account_password_updated)
redirect_to :action => 'account'
end
Jean-Philippe Lang
- new controller "myController"...
r60 else
Jean-Philippe Lang
More flexible mail notifications settings at user level. A user has now 3 options:...
r842 flash[:error] = l(:notice_account_wrong_password)
Jean-Philippe Lang
- new controller "myController"...
r60 end
end
Jean-Philippe Lang
Added the ability to reset its own RSS access key on "My account"....
r666 end
# Create a new feeds key
def reset_rss_key
if request.post? && User.current.rss_token
User.current.rss_token.destroy
flash[:notice] = l(:notice_feeds_access_key_reseted)
end
redirect_to :action => 'account'
Jean-Philippe Lang
- new controller "myController"...
r60 end
# User's page layout configuration
def page_layout
Jean-Philippe Lang
Anonymous users can now be allowed to create, edit, comment issues, comment news and post messages in the forums....
r906 @user = User.current
Jean-Philippe Lang
fixed: crash on my/page_layout (trying to modify a frozen hash)...
r255 @blocks = @user.pref[:my_page_layout] || DEFAULT_LAYOUT.dup
Jean-Philippe Lang
- new controller "myController"...
r60 session[:page_layout] = @blocks
%w(top left right).each {|f| session[:page_layout][f] ||= [] }
@block_options = []
Jean-Philippe Lang
Set a default scope for 'My page' block names translations (#3057)....
r2570 BLOCKS.each {|k, v| @block_options << [l("my.blocks.#{v}", :default => [v, v.to_s.humanize]), k.dasherize]}
Jean-Philippe Lang
- new controller "myController"...
r60 end
# Add a block to user's page
# The block is added on top of the page
# params[:block] : id of the block to add
def add_block
Jean-Philippe Lang
Allow underscore in block partial name (#2840)....
r2464 block = params[:block].to_s.underscore
Jean-Philippe Lang
fixed: error when clicking "add" with no block selected on my/page_layout...
r258 render(:nothing => true) and return unless block && (BLOCKS.keys.include? block)
Jean-Philippe Lang
Anonymous users can now be allowed to create, edit, comment issues, comment news and post messages in the forums....
r906 @user = User.current
Jean-Philippe Lang
- new controller "myController"...
r60 # remove if already present in a group
%w(top left right).each {|f| (session[:page_layout][f] ||= []).delete block }
# add it on top
session[:page_layout]['top'].unshift block
render :partial => "block", :locals => {:user => @user, :block_name => block}
end
# Remove a block to user's page
# params[:block] : id of the block to remove
def remove_block
Jean-Philippe Lang
Allow underscore in block partial name (#2840)....
r2464 block = params[:block].to_s.underscore
Jean-Philippe Lang
- new controller "myController"...
r60 # remove block in all groups
%w(top left right).each {|f| (session[:page_layout][f] ||= []).delete block }
render :nothing => true
end
# Change blocks order on user's page
# params[:group] : group to order (top, left or right)
# params[:list-(top|left|right)] : array of block ids of the group
def order_blocks
group = params[:group]
Jean-Philippe Lang
Fixes that "My Page" personalization was not storing reordered blocks (#2971)....
r2545 if group.is_a?(String)
group_items = (params["list-#{group}"] || []).collect(&:underscore)
Jean-Philippe Lang
Allow underscore in block partial name (#2840)....
r2464 if group_items and group_items.is_a? Array
# remove group blocks if they are presents in other groups
%w(top left right).each {|f|
session[:page_layout][f] = (session[:page_layout][f] || []) - group_items
}
session[:page_layout][group] = group_items
end
Jean-Philippe Lang
- new controller "myController"...
r60 end
render :nothing => true
end
# Save user's page layout
def page_layout_save
Jean-Philippe Lang
Anonymous users can now be allowed to create, edit, comment issues, comment news and post messages in the forums....
r906 @user = User.current
Jean-Philippe Lang
- new controller "myController"...
r60 @user.pref[:my_page_layout] = session[:page_layout] if session[:page_layout]
@user.pref.save
session[:page_layout] = nil
redirect_to :action => 'page'
end
end