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
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

