module AlphabeticalPaginate::ViewHelpers
Public Instance Methods
alphabetical_paginate(options = {})
click to toggle source
# File lib/alphabetical_paginate/view_helpers.rb, line 4 def alphabetical_paginate(options = {}) output = "" links = "" output += javascript_include_tag 'alphabetical_paginate' if options[:js] == true options[:scope] ||= main_app if options[:paginate_all] range = options[:language].letters_range if options[:others] range += ["*"] end if options[:enumerate] && options[:numbers] range = (0..9).to_a.map{|x| x.to_s} + range elsif options[:numbers] range = ["0-9"] + range end range.unshift "All" if (options[:include_all] && !range.include?("All")) range.each do |l| link_letter = l if options[:slugged_link] && (l =~ options[:language].letters_regexp || l == "All") link_letter = options[:language].slugged_letters[l] end letter_options = { letter: link_letter } if !options[:all_as_link] && (l == "All") letter_options[:letter] = nil end url = options[:scope].url_for(letter_options) value = options[:language].output_letter(l) if l == options[:currentField] links += content_tag(:li, link_to(value, "#", "data-letter" => l), :class => "active") elsif options[:db_mode] or options[:availableLetters].include? l links += content_tag(:li, link_to(value, url, "data-letter" => l)) else links += content_tag(:li, link_to(value, url, "data-letter" => l), :class => "disabled") end end else options[:availableLetters].sort! options[:availableLetters] = options[:availableLetters][1..-1] + ["*"] if options[:availableLetters][0] == "*" #Ensure that "All" is always at the front of the array if options[:include_all] options[:availableLetters].delete("All") if options[:availableLetters].include?("All") options[:availableLetters].unshift("All") end options[:availableLetters] -= (1..9).to_a.map{|x| x.to_s} if !options[:numbers] options[:availableLetters] -= ["*"] if !options[:others] options[:availableLetters].each do |l| link_letter = l if options[:slugged_link] && (l =~ options[:language].letters_regexp || l == "All") link_letter = options[:language].slugged_letters[l] end letter_options = { letter: link_letter } if !options[:all_as_link] && (l == "All") letter_options[:letter] = nil end url = options[:scope].url_for(letter_options) value = options[:language].output_letter(l) links += content_tag(:li, link_to(value, url, "data-letter" => l), :class => ("active" if l == options[:currentField] )) end end element = options[:bootstrap3] ? 'ul' : 'div' if options[:pagination_class] != "none" pagination = "<#{element} class='pagination %s alpha' style='height:35px;'>" % options[:pagination_class] else pagination = "<#{element} class='pagination alpha' style='height:35px;'>" end pagination += (options[:bootstrap3] ? "" : "<ul>") + links + (options[:bootstrap3] ? "" : "</ul>") + "</#{element}>" output += pagination output.html_safe end