[#6898] Replace SortHelper patch with a plain helper
This commit is contained in:
96
app/helpers/rate_helper.rb
Normal file
96
app/helpers/rate_helper.rb
Normal file
@@ -0,0 +1,96 @@
|
||||
module RateHelper
|
||||
# Allows more parameters than the standard sort_header_tag
|
||||
def rate_sort_header_tag(column, options = {})
|
||||
caption = options.delete(:caption) || titleize(ActiveSupport::Inflector::humanize(column))
|
||||
default_order = options.delete(:default_order) || 'asc'
|
||||
options[:title]= l(:label_sort_by, "\"#{caption}\"") unless options[:title]
|
||||
content_tag('th',
|
||||
rate_sort_link(column,
|
||||
caption,
|
||||
default_order,
|
||||
{ :method => options[:method], :update => options[:update], :user_id => options[:user_id] }),
|
||||
options)
|
||||
end
|
||||
|
||||
# Allows more parameters than the standard sort_link and is hard coded to use
|
||||
# the RatesController and to have an :method and :update options
|
||||
def rate_sort_link(column, caption, default_order, options = { })
|
||||
# 0.8.x compatibility
|
||||
if SortHelper.const_defined? 'SortCriteria'
|
||||
rate_sort_link_trunk_version(column, caption, default_order, options)
|
||||
else
|
||||
rate_sort_link_08_version(column, caption, default_order, options)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
# Trunk version of sort_link. Was modified in r2571 of Redmine
|
||||
def rate_sort_link_trunk_version(column, caption, default_order, options = { })
|
||||
css, order = nil, default_order
|
||||
|
||||
if column.to_s == @sort_criteria.first_key
|
||||
if @sort_criteria.first_asc?
|
||||
css = 'sort asc'
|
||||
order = 'desc'
|
||||
else
|
||||
css = 'sort desc'
|
||||
order = 'asc'
|
||||
end
|
||||
end
|
||||
caption = column.to_s.humanize unless caption
|
||||
|
||||
sort_options = { :sort => @sort_criteria.add(column.to_s, order).to_param }
|
||||
# don't reuse params if filters are present
|
||||
url_options = params.has_key?(:set_filter) ? sort_options : params.merge(sort_options)
|
||||
|
||||
# Add project_id to url_options
|
||||
url_options = url_options.merge(:project_id => params[:project_id]) if params.has_key?(:project_id)
|
||||
|
||||
##### Hard code url to the Rates index
|
||||
url_options[:controller] = 'rates'
|
||||
url_options[:action] = 'index'
|
||||
url_options[:user_id] ||= options[:user_id]
|
||||
#####
|
||||
|
||||
|
||||
link_to_remote(caption,
|
||||
{:update => options[:update] || "content", :url => url_options, :method => options[:method] || :post},
|
||||
{:href => url_for(url_options),
|
||||
:class => css})
|
||||
end
|
||||
|
||||
private
|
||||
# 0.8.x branch of sort_link.
|
||||
def rate_sort_link_08_version(column, caption, default_order, options = { })
|
||||
key, order = session[@sort_name][:key], session[@sort_name][:order]
|
||||
if key == column
|
||||
if order.downcase == 'asc'
|
||||
icon = 'sort_asc.png'
|
||||
order = 'desc'
|
||||
else
|
||||
icon = 'sort_desc.png'
|
||||
order = 'asc'
|
||||
end
|
||||
else
|
||||
icon = nil
|
||||
order = default_order
|
||||
end
|
||||
caption = titleize(ActiveSupport::Inflector::humanize(column)) unless caption
|
||||
|
||||
sort_options = { :sort_key => column, :sort_order => order }
|
||||
# don't reuse params if filters are present
|
||||
url_options = params.has_key?(:set_filter) ? sort_options : params.merge(sort_options)
|
||||
|
||||
##### Hard code url to the Rates index
|
||||
url_options[:controller] = 'rates'
|
||||
url_options[:action] = 'index'
|
||||
url_options[:user_id] ||= options[:user_id]
|
||||
#####
|
||||
|
||||
link_to_remote(caption,
|
||||
{:update => options[:update] || "content", :url => url_options, :method => options[:method] || :post},
|
||||
{:href => url_for(url_options)}) +
|
||||
(icon ? nbsp(2) + image_tag(icon) : '')
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user