mose/rails-i18nterface

View on GitHub
app/views/rails_i18nterface/translate/_pagination.html.erb

Summary

Maintainability
Test Coverage
<%
  n_pages = total_entries/per_page + (total_entries % per_page > 0 ? 1 : 0)
  current_page = (params[:page] || 1).to_i
%>

<% if n_pages > 1 %>
<div class="clearfix">
    <ul class="paging">
        <% if n_pages > 18 %>
            <% if current_page < 8 %>
                <% (1..8).each do |page_number| %>
                <% if current_page == page_number %>
                  <li class="selected">
                      <%= link_to(page_number, params.merge(:page => page_number), :title => "Page #{page_number}" ) %>
                  </li>
                <% else %>
                  <li><%= link_to(page_number, params.merge(:page => page_number), :title => "Page #{page_number}") %></li>
                <% end %>
          <% end %>
          <li class="gap">...</li>
          <li>
              <%= link_to(n_pages, params.merge(:page => n_pages), :title => "Page #{n_pages}" ) %>
          </li>
            <% elsif current_page > n_pages - 8 %>
                <li>
              <%= link_to(1, params.merge(:page => 1), :title => "Page 1" ) %>
          </li>
          <li class="gap">...</li>
                <% ((n_pages - 8)..n_pages).each do |page_number| %>
                <% if current_page == page_number %>
                  <li class="selected">
                      <%= link_to(page_number, params.merge(:page => page_number), :title => "Page #{page_number}" ) %>
                  </li>
                <% else %>
                  <li><%= link_to(page_number, params.merge(:page => page_number), :title => "Page #{page_number}") %></li>
                <% end %>
          <% end %>
            <% else %>
          <li>
              <%= link_to(1, params.merge(:page => 1), :title => "Page 1" ) %>
          </li>
          <li class="gap">...</li>
          <% ((current_page - 4)..(current_page + 4)).each do |page_number| %>
                <% if current_page == page_number %>
                  <li class="selected">
                      <%= link_to(page_number, params.merge(:page => page_number), :title => "Page #{page_number}" ) %>
                  </li>
                <% else %>
                  <li><%= link_to(page_number, params.merge(:page => page_number), :title => "Page #{page_number}") %></li>
                <% end %>
          <% end %>
          <li class="gap">...</li>
          <li>
              <%= link_to(n_pages, params.merge(:page => n_pages), :title => "Page #{n_pages}" ) %>
          </li>
            <% end %>
        <% else %>
          <% (1..n_pages).each do |page_number| %>
            <% if current_page == page_number %>
              <li class="selected">
                  <%= link_to(page_number, @filter_params.to_h.merge(:page => page_number), :title => "Page #{page_number}" ) %>
              </li>
            <% else %>
              <li><%= link_to(page_number, @filter_params.to_h.merge(:page => page_number), :title => "Page #{page_number}") %></li>
            <% end %>
          <% end %>
      <% end %>
    </ul>
</div>
<% end %>