# Methods added to this helper will be available to all templates in the application. module ApplicationHelper delegate :current_user, :logged_in?, :can_upload_patches?, :can_edit_patch?, :can_update_patch?, :to => :controller def listing(list, header_partial_name, data_partial_name, user_options={}) options = {:id => 'listing', :columns => 0}.merge(user_options) output = < EOD output << render(:partial => header_partial_name) list.each do |i| output << render(:partial => data_partial_name, :locals => {:row => i}) end if list.size == 0 output << "" else # Pager row if options[:pagination_action] and options[:paginator] if options[:paginator].current.first? first_page_link = 'First page' previous_page_link = 'Previous page' else first_page_link = link_to_remote('First page', :url => {:action => options[:pagination_action], :page => 1, }, :update => options[:id]) previous_page_link = link_to_remote('Previous page', :url => {:action => options[:pagination_action], :page => options[:paginator].current.number-1, }, :update => options[:id]) end if options[:paginator].current.last? next_page_link = 'Next page' last_page_link = 'Last page' else next_page_link = link_to_remote('Next page', :url => {:action => options[:pagination_action], :page => options[:paginator].current.number+1, }, :update => options[:id]) last_page_link = link_to_remote('Last page', :url => {:action => options[:pagination_action], :page => options[:paginator].page_count, }, :update => options[:id]) end output << < EOD end end output << "
No data to display
#{next_page_link} | #{last_page_link}#{first_page_link} | #{previous_page_link}
" output end def url_for_icon(icon_name) "#{TANGO_ICONS_BASE_URL}/#{icon_name.to_s.sub(/\.png$/, '')}.png" end def icon(icon_name, options={}) image_tag(url_for_icon(icon_name), options) end def round(number, user_options={}) options = {:decimals => 2}.merge(user_options) (number * 10 ** options[:decimals]).truncate.to_f / 100 end def program_select(object, method, user_options={}, user_html_options={}) options = {:initial_option => :none, :final_option => :none}.merge(user_options) html_options = {}.merge(user_html_options) initial_option = case options[:initial_option] when :none, nil [] when :dont_care [["Don't care", '']] when Array options[:initial_option] else raise ArgumentError, "Don't understand '#{options[:initial_option]}' as initial option" end final_option = case options[:final_option] when :none, nil [] when Array options[:final_option] end options.delete(:initial_option) # Private option select object, method, initial_option + Program.find(:all, :order => 'name').map {|p| [p.name, p.id]} + final_option, options, html_options end def user_select(object, method, user_options={}) options = {}.merge(user_options) select(object, method, [["Don't care", ""]] + User.find(:all).map {|u| [u.login, u.id]}, options) end end