Hi all!

I needed a link to "all records in one page" view in the navigation banner, 
while keeping all the rest as is (see the attached screenshot).

I've hacked displaytag to achieve that and it seems to be working for me, but 
I didn't check all possible cases.

I've attached the patch against displaytag 1.1.
-- 
Daniil V. Kolpakov
Software developer
CTXM SIA
www.ctxm.com

Attachment: displaytag-allpages-patch.png
Description: PNG image

diff -r --unified displaytag-1.1/displaytag/src/main/java/org/displaytag/pagination/PaginatedListSmartListHelper.java displaytag-1.1_all_pages_mod/displaytag/src/main/java/org/displaytag/pagination/PaginatedListSmartListHelper.java
--- displaytag-1.1/displaytag/src/main/java/org/displaytag/pagination/PaginatedListSmartListHelper.java	2006-03-09 23:31:08.000000000 +0200
+++ displaytag-1.1_all_pages_mod/displaytag/src/main/java/org/displaytag/pagination/PaginatedListSmartListHelper.java	2007-03-27 15:52:54.000000000 +0300
@@ -150,6 +150,10 @@
         {
             bannerFormat = this.properties.getPagingBannerOnePage();
         }
+        else if (pagination.isAll())
+        {
+            bannerFormat = this.properties.getPagingBannerAll();
+        }
         else if (pagination.isFirst())
         {
             bannerFormat = this.properties.getPagingBannerFirst();
diff -r --unified displaytag-1.1/displaytag/src/main/java/org/displaytag/pagination/Pagination.java displaytag-1.1_all_pages_mod/displaytag/src/main/java/org/displaytag/pagination/Pagination.java
--- displaytag-1.1/displaytag/src/main/java/org/displaytag/pagination/Pagination.java	2006-03-09 23:31:08.000000000 +0200
+++ displaytag-1.1_all_pages_mod/displaytag/src/main/java/org/displaytag/pagination/Pagination.java	2007-03-27 15:52:46.000000000 +0300
@@ -130,6 +130,15 @@
     }
 
     /**
+     * all pages selected?
+     * @return boolean
+     */
+    public boolean isAll()
+    {
+        return this.currentPage.intValue() == -1;
+    }
+
+    /**
      * Gets the number of the first page.
      * @return Integer number of the first page
      */
@@ -266,6 +275,7 @@
         // {4} last page url
         // {5} current page
         // {6} total pages
+        // {7} display-as-one-page url
         Object[] pageObjects = {
             numberedPageString,
             ((Href) this.href.clone()).addParameter(this.pageParam, getFirst()),
@@ -273,7 +283,9 @@
             ((Href) this.href.clone()).addParameter(this.pageParam, getNext()),
             ((Href) this.href.clone()).addParameter(this.pageParam, getLast()),
             this.currentPage,
-            this.isLast() ? this.currentPage : this.lastPage}; // this.lastPage is null if the last page is displayed
+            this.isLast() ? this.currentPage : this.lastPage,
+            ((Href) this.href.clone()).addParameter(this.pageParam, Integer.valueOf(-1))
+        }; // this.lastPage is null if the last page is displayed
 
         // return the full banner
         return MessageFormat.format(fullBanner, pageObjects);
diff -r --unified displaytag-1.1/displaytag/src/main/java/org/displaytag/pagination/SmartListHelper.java displaytag-1.1_all_pages_mod/displaytag/src/main/java/org/displaytag/pagination/SmartListHelper.java
--- displaytag-1.1/displaytag/src/main/java/org/displaytag/pagination/SmartListHelper.java	2006-03-09 23:31:08.000000000 +0200
+++ displaytag-1.1_all_pages_mod/displaytag/src/main/java/org/displaytag/pagination/SmartListHelper.java	2007-03-27 16:26:02.000000000 +0300
@@ -157,6 +157,9 @@
      */
     protected int getFirstIndexForPage(int pageNumber)
     {
+        if(pageNumber == -1) {
+            return 0;
+        }
         if (this.partialList)
         {
             return 0;
@@ -174,6 +177,9 @@
      */
     protected int getLastIndexForPage(int pageNumber)
     {
+        if(pageNumber == -1) {
+            return this.fullListSize - 1;
+        }
         if (this.partialList)
         {
             // return the min of pageSize or list size on the off chance they gave us more data than pageSize allows
@@ -231,7 +237,7 @@
                 new Object[]{new Integer(pageNumber), new Integer(this.pageCount)}));
         }
 
-        if (pageNumber < 1)
+        if (pageNumber < 1 && pageNumber != -1)
         {
             // invalid page: better don't throw an exception, since this could easily happen
             // (list changed, user bookmarked the page)
@@ -355,6 +361,10 @@
         {
             bannerFormat = this.properties.getPagingBannerOnePage();
         }
+        else if (pagination.isAll())
+        {
+            bannerFormat = this.properties.getPagingBannerAll();
+        }
         else if (pagination.isFirst())
         {
             bannerFormat = this.properties.getPagingBannerFirst();
diff -r --unified displaytag-1.1/displaytag/src/main/java/org/displaytag/properties/TableProperties.java displaytag-1.1_all_pages_mod/displaytag/src/main/java/org/displaytag/properties/TableProperties.java
--- displaytag-1.1/displaytag/src/main/java/org/displaytag/properties/TableProperties.java	2006-03-09 23:31:08.000000000 +0200
+++ displaytag-1.1_all_pages_mod/displaytag/src/main/java/org/displaytag/properties/TableProperties.java	2007-03-27 15:24:24.000000000 +0300
@@ -181,6 +181,11 @@
     public static final String PROPERTY_STRING_PAGING_BANNER_FULL = "paging.banner.full"; //$NON-NLS-1$
 
     /**
+     * property <code>paging.banner.all</code>.
+     */
+    public static final String PROPERTY_STRING_PAGING_BANNER_ALL = "paging.banner.all"; //$NON-NLS-1$
+
+    /**
      * property <code>paging.banner.page.link</code>.
      */
     public static final String PROPERTY_STRING_PAGING_PAGE_LINK = "paging.banner.page.link"; //$NON-NLS-1$
@@ -787,6 +792,15 @@
     }
 
     /**
+     * Getter for the <code>PROPERTY_STRING_PAGING_BANNER_ALL</code> property.
+     * @return String
+     */
+    public String getPagingBannerAll()
+    {
+        return getProperty(PROPERTY_STRING_PAGING_BANNER_ALL);
+    }
+
+    /**
      * Getter for the <code>PROPERTY_STRING_PAGING_PAGE_LINK</code> property.
      * @return String
      */
diff -r --unified displaytag-1.1/displaytag/src/main/java/org/displaytag/tags/TableTag.java displaytag-1.1_all_pages_mod/displaytag/src/main/java/org/displaytag/tags/TableTag.java
--- displaytag-1.1/displaytag/src/main/java/org/displaytag/tags/TableTag.java	2006-03-09 23:31:09.000000000 +0200
+++ displaytag-1.1_all_pages_mod/displaytag/src/main/java/org/displaytag/tags/TableTag.java	2007-03-27 12:33:48.000000000 +0300
@@ -1001,16 +1001,22 @@
             if (this.pagesize > 0)
             {
                 int fullSize = ((Collection) this.list).size();
-                start = (this.pageNumber - 1) * this.pagesize;
 
-                // invalid page requested, go back to last page
-                if (start > fullSize)
-                {
-                    int div = fullSize / this.pagesize;
-                    start = (fullSize % this.pagesize == 0) ? div : div + 1;
-                }
+                if(this.pageNumber == -1) {
+                    start = offset;
+                    end = fullSize;
+                } else {
+                    start = (this.pageNumber - 1) * this.pagesize;
+
+                    // invalid page requested, go back to last page
+                    if (start > fullSize)
+                    {
+                        int div = fullSize / this.pagesize;
+                        start = (fullSize % this.pagesize == 0) ? div : div + 1;
+                    }
 
-                end = start + this.pagesize;
+                    end = start + this.pagesize;
+                }
             }
 
             // rowNumber starts from 1
diff -r --unified displaytag-1.1/displaytag/src/main/resources/org/displaytag/properties/displaytag.properties displaytag-1.1_all_pages_mod/displaytag/src/main/resources/org/displaytag/properties/displaytag.properties
--- displaytag-1.1/displaytag/src/main/resources/org/displaytag/properties/displaytag.properties	2006-03-09 23:31:11.000000000 +0200
+++ displaytag-1.1_all_pages_mod/displaytag/src/main/resources/org/displaytag/properties/displaytag.properties	2007-03-27 15:55:10.000000000 +0300
@@ -79,9 +79,10 @@
 paging.banner.all_items_found=<span class="pagebanner">{0} {1} found, displaying all {2}.</span>
 paging.banner.some_items_found=<span class="pagebanner">{0} {1} found, displaying {2} to {3}.</span>
 
-paging.banner.full=<span class="pagelinks">[<a href="{1}">First</a>/<a href="{2}">Prev</a>] {0} [<a href="{3}">Next</a>/<a href="{4}">Last</a>]</span>
-paging.banner.first=<span class="pagelinks">[First/Prev] {0} [<a href="{3}">Next</a>/<a href="{4}">Last</a>]</span>
-paging.banner.last=<span class="pagelinks">[<a href="{1}">First</a>/<a href="{2}">Prev</a>] {0} [Next/Last]</span>
+paging.banner.full=<span class="pagelinks">[<a href="{1}">First</a>/<a href="{2}">Prev</a>] {0}, <a href="{7}">All</a> [<a href="{3}">Next</a>/<a href="{4}">Last</a>]</span>
+paging.banner.all=<span class="pagelinks">[<a href="{1}">First</a>/Prev] {0}, All [Next/<a href="{4}">Last</a>]</span>
+paging.banner.first=<span class="pagelinks">[First/Prev] {0}, <a href="{7}">All</a> [<a href="{3}">Next</a>/<a href="{4}">Last</a>]</span>
+paging.banner.last=<span class="pagelinks">[<a href="{1}">First</a>/<a href="{2}">Prev</a>] {0}, <a href="{7}">All</a> [Next/Last]</span>
 paging.banner.onepage=<span class="pagelinks">{0}</span>
 
 paging.banner.page.selected=<strong>{0}</strong>
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
displaytag-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/displaytag-user

Reply via email to