module AlphabeticalPaginate::ViewHelpers

Public Instance Methods

alphabetical_paginate(params) click to toggle source
# File lib/alphabetical_paginate_uk/view_helpers.rb, line 4
def alphabetical_paginate params
  output = ""
  links = ""

  output += javascript_include_tag 'alphabetical_paginate' if params[:js]
  
  if params[:paginate_all]
    range = params[:language].letters_range
    if params[:others]
      range += ["a-z"]
    end
    if params[:enumerate] && params[:numbers]
      range = (0..9).to_a.map{|x| x.to_s} + range
    elsif params[:numbers]
      range = ["0-9"] + range
    end
    range.unshift "All" if params[:include_all]
    range.each do |l|
      value = params[:language].output_letter(l)
      if l == params[:currentField]
        links += '<li class="active"><a href="#" data-letter="' + l + '">' + value + "</a></li>"
      elsif params[:db_mode] or params[:availableLetters].include? l
        links += '<li><a href="?letter=' + l + '" data-letter="' + l + '">' + value + "</a></li>"
      else
        links += '<li class="disabled"><a href="?letter=' + l + '" data-letter="' + l + '">' + value + "</a></li>"
      end
    end
  else
    params[:availableLetters].sort!
    params[:availableLetters] = params[:availableLetters][1..-1] + ["a-z"] if params[:availableLetters][0] == "a-z"
    params[:availableLetters].unshift "All" if params[:include_all]
    params[:availableLetters] -= (1..9).to_a.map{|x| x.to_s} if !params[:numbers]
    params[:availableLetters] -= ["a-z"] if !params[:others]
    
    params[:availableLetters].each do |l|
      value = params[:language].output_letter(l)
      if l == params[:currentField]
        links += '<li class="active"><a href="?letter=' + l + '" data-letter="' + l + '">' + value + '</a></li>'
      else
        links += '<li><a href="?letter=' + l + '" data-letter="' + l + '">' + value + "</a></li>"
      end
    end
  end
  

  element = params[:bootstrap3] ? 'ul' : 'div'
  if params[:pagination_class] != "none"
    pagination = "<#{element} class='pagination %s alpha'>" % params[:pagination_class]
  else
    pagination = "<#{element} class='pagination alpha'>"
  end
  pagination +=
    (params[:bootstrap3] ? "" : "<ul>") +
    links +
    (params[:bootstrap3] ? "" : "</ul>") +
    (params[:bootstrap3] ? "" : "</div>")

  output += pagination
  output.html_safe
end