]> git.openstreetmap.org Git - rails.git/blobdiff - lib/classic_pagination/pagination_helper.rb
Separate pagination item computation and output
[rails.git] / lib / classic_pagination / pagination_helper.rb
index c691360e09f103207bac0e54e83ac5d0db638f15..72d16fc983cdbfd80b28201f1ce9b239c1b3b939 100644 (file)
@@ -131,63 +131,38 @@ module ActionView
         html
       end
 
-      # Same as above, but
-      # - with bootstrap classes
-      # - no list wrapper
-      # - invoked block returns the page url
-      def pagination_links_bootstrap(paginator, options)
+      def pagination_items(paginator, options)
         options = DEFAULT_OPTIONS.merge(options)
         link_to_current_page = options[:link_to_current_page]
         always_show_anchors = options[:always_show_anchors]
 
         current_page = paginator.current_page
         window_pages = current_page.window(options[:window_size]).pages
-        return unless link_to_current_page || window_pages.length > 1
 
         first = paginator.first
         last = paginator.last
 
-        html = ""
+        items = []
 
         if always_show_anchors && !(wp_first = window_pages[0]).first?
-          html << bootstrap_page_item_link(first.number.to_s, yield(first.number))
-          html << bootstrap_page_item_disabled("...") if wp_first.number - first.number > 1
+          items.push [first.number.to_s, first.number]
+          items.push ["...", "disabled"] if wp_first.number - first.number > 1
         end
 
         window_pages.each do |page|
-          html << if current_page == page && !link_to_current_page
-                    bootstrap_page_item_active(page.number.to_s)
-                  else
-                    bootstrap_page_item_link(page.number.to_s, yield(page.number))
-                  end
+          if current_page == page && !link_to_current_page
+            items.push [page.number.to_s, "active"]
+          else
+            items.push [page.number.to_s, page.number]
+          end
         end
 
         if always_show_anchors && !(wp_last = window_pages[-1]).last?
-          html << bootstrap_page_item_disabled("...") if last.number - wp_last.number > 1
-          html << bootstrap_page_item_link(last.number.to_s, yield(last.number))
+          items.push ["...", "disabled"] if last.number - wp_last.number > 1
+          items.push [last.number.to_s, last.number]
         end
 
-        html
-      end
-      
-      private
-
-      def bootstrap_page_item_disabled(body)
-        content_tag "li", :class => "page-item disabled" do
-          content_tag "span", body, :class => "page-link"
-        end
-      end
-
-      def bootstrap_page_item_active(body)
-        content_tag "li", :class => "page-item active", :'aria-current' => "page" do
-          content_tag "span", body, :class => "page-link"
-        end
-      end
-
-      def bootstrap_page_item_link(body, url)
-        content_tag "li", :class => "page-item" do
-          link_to body, url, :class => "page-link"
-        end
+        items
       end
     end
   end