]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3936 update footer pagination in order to be more "google" like
authorJulien Lancelot <julien.lancelot@gmail.com>
Thu, 22 Nov 2012 17:24:40 +0000 (18:24 +0100)
committerJulien Lancelot <julien.lancelot@gmail.com>
Thu, 22 Nov 2012 17:24:50 +0000 (18:24 +0100)
sonar-server/src/main/webapp/WEB-INF/app/views/rules_configuration/index.html.erb
sonar-server/src/main/webapp/WEB-INF/app/views/utils/_tfoot_pagination.html.erb

index 8ad6dda5d6a6c9e3d9a76c9e0d49d2492def91aa..9d3e2e7805e04e09044dc5a1e09296ec1d76015a 100644 (file)
         <th class="left"><%= message('name') -%> <span style="font-weight: normal">[<%= link_to_function(message('rules_configuration.expand'), "expand_rules()") %> / <%= link_to_function(message('rules_configuration.collapse'), "collapse_rules()") %>]</span></th>
     </tr>
 </thead>
+
+<%= render :partial => 'utils/tfoot_pagination', :locals => {:pagination => @pagination, :colspan => 2} %>
+
 <tbody>
 <% if @current_rules.empty? %>
 <tr><td colspan="3" class="even"><%= message('no_results') -%>.</td></tr>
 <% end %>
 </tbody>
 </table>
-<%= render :partial => 'utils/tfoot_pagination', :locals => {:pagination => @pagination, :colspan => 2} %>
 
 <script type="text/javascript">
     function replaceTextField(span_id, key) {
index 31766fe114eafd652426f00a9ab06357d952b860..f50dafc2aa16fc848cc4bac2eb30f9ec0daf18e1 100644 (file)
@@ -1,20 +1,41 @@
 <tfoot>
 <tr>
   <td colspan="<%= colspan || 1 -%>">
-    <% if pagination.count>0 %>
-    <%= message('x_results', :params => [pagination.count]) -%>
+    <% if pagination.count > 0 %>
+      <%= message('x_results', :params => [pagination.count]) -%>
     <% end %>
     <%
-       if pagination.pages>1
+       if pagination.pages > 1
+         max_pages = pagination.pages
+         current_page = pagination.page
+         start_page = 1
+         end_page = max_pages
+         if max_pages > 20
+           if current_page < 12
+             start_page = 1
+             end_page = 20
+           elsif current_page > max_pages-10
+             start_page = max_pages-20
+             end_page = max_pages
+           else
+             start_page = current_page-10
+             end_page = current_page+9
+           end
+         end
     %>
       |
-      <%= link_to_if pagination.previous?, message('paging_previous'), params.merge(:page => pagination.page-1) %>
-      <%= link_to_if pagination.next?, message('paging_next'), params.merge(:page => pagination.page+1) %>
-      |
-      <% for index in 1..pagination.pages %>
-        <%= link_to_if index!=pagination.page, index.to_s, params.merge(:page => index) %>
+      <% if max_pages > 20 && start_page > 1 %>
+      <%= link_to_if current_page != 1, message('paging_first'), params.merge(:page => 1) %>
       <% end %>
-    <%
+      <%= link_to_if pagination.previous?, message('paging_previous'), params.merge(:page => current_page-1) %>
+      <% for index in start_page..end_page %>
+        <%= link_to_if index != current_page, index.to_s, params.merge(:page => index) %>
+      <% end %>
+      <%= link_to_if pagination.next?, message('paging_next'), params.merge(:page => current_page+1) %>
+      <% if max_pages > 20 && end_page < max_pages %>
+      <%= link_to_if current_page != max_pages, message('paging_last'), params.merge(:page => max_pages) %>
+      <% end %>
+  <%
        end
     %>
   </td>