Skip to content

Commit 70e3f20

Browse files
committed
Enhance FullPaginationDecorator to handle custom css-tags defined through tag-attributes.
1 parent 1caf0be commit 70e3f20

File tree

3 files changed

+51
-21
lines changed

3 files changed

+51
-21
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>io.github.jpenren</groupId>
55
<artifactId>thymeleaf-spring-data-dialect</artifactId>
6-
<version>3.3.1</version>
6+
<version>3.4.0-SNAPSHOT</version>
77

88
<name>Thymeleaf Spring Data Dialect</name>
99
<description>Data pagination made easy with Thymeleaf and Spring Data</description>

src/main/java/org/thymeleaf/dialect/springdata/decorator/FullPaginationDecorator.java

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,28 @@
11
package org.thymeleaf.dialect.springdata.decorator;
22

3-
import java.util.Locale;
4-
53
import org.springframework.data.domain.Page;
64
import org.thymeleaf.context.ITemplateContext;
75
import org.thymeleaf.dialect.springdata.Keys;
6+
import org.thymeleaf.dialect.springdata.SpringDataDialect;
87
import org.thymeleaf.dialect.springdata.util.Messages;
98
import org.thymeleaf.dialect.springdata.util.PageUtils;
109
import org.thymeleaf.dialect.springdata.util.Strings;
1110
import org.thymeleaf.model.IProcessableElementTag;
1211

12+
import java.util.Locale;
13+
import java.util.Map;
14+
1315
public final class FullPaginationDecorator implements PaginationDecorator {
1416
private static final String DEFAULT_CLASS = "pagination";
1517
private static final String BUNDLE_NAME = FullPaginationDecorator.class.getSimpleName();
1618
private static final int DEFAULT_PAGE_SPLIT = 7;
19+
private static final String CSS_ATTR_PREFIX = SpringDataDialect.PREFIX + ":" + DEFAULT_CLASS + "-";
20+
21+
// define custom CSS tags
22+
private String cssPageItem = "page-item";
23+
private String cssPageLink = "page-link";
24+
private String cssDisabled = "disabled";
25+
private String cssActive = "active";
1726

1827
public String getIdentifier() {
1928
return "full";
@@ -23,6 +32,8 @@ public String decorate(final IProcessableElementTag tag, final ITemplateContext
2332

2433
Page<?> page = PageUtils.findPage(context);
2534

35+
configureCss(tag.getAttributeMap());
36+
2637
// laquo
2738
String firstPage = PageUtils.createPageUrl(context, 0);
2839
Locale locale = context.getLocale();
@@ -93,27 +104,27 @@ private String createPageLinks(final Page<?> page, final ITemplateContext contex
93104
}
94105

95106
private String getLaquo(Locale locale) {
96-
return Messages.getMessage(BUNDLE_NAME, "laquo", locale);
107+
return Messages.getMessage(BUNDLE_NAME, "laquo", locale, cssPageItem, cssPageLink, cssDisabled);
97108
}
98109

99110
private String getLaquo(String firstPage, Locale locale) {
100-
return Messages.getMessage(BUNDLE_NAME, "laquo.link", locale, firstPage);
111+
return Messages.getMessage(BUNDLE_NAME, "laquo.link", locale, firstPage, cssPageItem, cssPageLink);
101112
}
102113

103114
private String getRaquo(Locale locale) {
104-
return Messages.getMessage(BUNDLE_NAME, "raquo", locale);
115+
return Messages.getMessage(BUNDLE_NAME, "raquo", locale, cssPageItem, cssPageLink, cssDisabled);
105116
}
106117

107118
private String getRaquo(String lastPage, Locale locale) {
108-
return Messages.getMessage(BUNDLE_NAME, "raquo.link", locale, lastPage);
119+
return Messages.getMessage(BUNDLE_NAME, "raquo.link", locale, lastPage, cssPageItem, cssPageLink);
109120
}
110121

111122
private String getLink(int pageNumber, Locale locale) {
112-
return Messages.getMessage(BUNDLE_NAME, "link.active", locale, pageNumber);
123+
return Messages.getMessage(BUNDLE_NAME, "link.active", locale, pageNumber, cssActive, cssPageLink);
113124
}
114125

115126
private String getLink(int pageNumber, String url, Locale locale) {
116-
return Messages.getMessage(BUNDLE_NAME, "link", locale, url, pageNumber);
127+
return Messages.getMessage(BUNDLE_NAME, "link", locale, url, pageNumber, cssPageItem, cssPageLink);
117128
}
118129

119130
private String getPreviousPageLink(Page<?> page, final ITemplateContext context) {
@@ -122,7 +133,7 @@ private String getPreviousPageLink(Page<?> page, final ITemplateContext context)
122133
int previousPage = page.getNumber()-1;
123134
String link = PageUtils.createPageUrl(context, previousPage);
124135

125-
return Messages.getMessage(BUNDLE_NAME, msgKey, locale, link);
136+
return Messages.getMessage(BUNDLE_NAME, msgKey, locale, link, cssPageItem, cssPageLink, cssDisabled);
126137
}
127138

128139
private String getNextPageLink(Page<?> page, final ITemplateContext context) {
@@ -131,7 +142,26 @@ private String getNextPageLink(Page<?> page, final ITemplateContext context) {
131142
int nextPage = page.getNumber() + 1;
132143
String link = PageUtils.createPageUrl(context, nextPage);
133144

134-
return Messages.getMessage(BUNDLE_NAME, msgKey, locale, link);
145+
return Messages.getMessage(BUNDLE_NAME, msgKey, locale, link, cssPageItem, cssPageLink, cssDisabled);
146+
}
147+
148+
private void configureCss(Map<String,String> attributeMap) {
149+
150+
if (attributeMap.get(CSS_ATTR_PREFIX + "page-item") != null) {
151+
this.cssPageItem = attributeMap.get(CSS_ATTR_PREFIX + "page-item");
152+
}
153+
154+
if (attributeMap.get(CSS_ATTR_PREFIX + "page-link") != null) {
155+
this.cssPageLink = attributeMap.get(CSS_ATTR_PREFIX + "page-link");
156+
}
157+
158+
if (attributeMap.get(CSS_ATTR_PREFIX + "disabled") != null) {
159+
this.cssDisabled = attributeMap.get(CSS_ATTR_PREFIX + "disabled");
160+
}
161+
162+
if (attributeMap.get(CSS_ATTR_PREFIX + "active") != null) {
163+
this.cssActive = attributeMap.get(CSS_ATTR_PREFIX + "active");
164+
}
135165
}
136166

137167
}
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
#pagination {0}=class, {1}=firstPage, {2}=previousPage, {3}=links, {4}=nextPage, {5}=latestPage
22
pagination=<ul class="{0}">{1}{2}{3}{4}{5}</ul>
3-
laquo=<li class="disabled page-item"><span class="page-link"><span aria-hidden="true">&laquo;</span></span></li>
4-
laquo.link=<li class="page-item"><a href="{0}"class="page-link" aria-label="Erste Seite"><span aria-hidden="true">&laquo;</span></a></li>
5-
previous.page=<li class="disabled page-item"><span class="page-link"><span aria-hidden="true">&lsaquo;</span></span></li>
6-
previous.page.link=<li class="page-item"><a href="{0}"class="page-link" aria-label="Vorherige Seite"><span aria-hidden="true">&lsaquo;</span></a></li>
7-
link=<li class="page-item"><a class="page-link" href="{0}">{1}</a></li>
8-
link.active=<li class="active"><span class="page-link">{0}<span class="sr-only">(strom)</span></span></li>
9-
next.page=<li class="disabled page-item"><span class="page-link"><span aria-hidden="true">&rsaquo;</span></span></li>
10-
next.page.link=<li class="page-item"><a href="{0}"class="page-link" aria-label="Nächste Seite"><span aria-hidden="true">&rsaquo;</span></a></li>
11-
raquo=<li class="disabled page-item"><span class="page-link"><span aria-hidden="true">&raquo;</span></span></li>
12-
raquo.link=<li class="page-item"><a href="{0}"class="page-link" aria-label="Letzte Seite"><span aria-hidden="true">&raquo;</span></a></li>
3+
laquo=<li class="{2} {0}"><span class="{1}"><span aria-hidden="true">&laquo;</span></span></li>
4+
laquo.link=<li class="{1}"><a href="{0}"class="{2}" aria-label="Erste Seite"><span aria-hidden="true">&laquo;</span></a></li>
5+
previous.page=<li class="{3} {1}"><span class="{2}"><span aria-hidden="true">&lsaquo;</span></span></li>
6+
previous.page.link=<li class="{1}"><a href="{0}"class="{2}" aria-label="Vorherige Seite"><span aria-hidden="true">&lsaquo;</span></a></li>
7+
link=<li class="{2}"><a class="{3}" href="{0}">{1}</a></li>
8+
link.active=<li class="{1}"><span class="{2}">{0}<span class="sr-only">(strom)</span></span></li>
9+
next.page=<li class="{3} {1}"><span class="{2}"><span aria-hidden="true">&rsaquo;</span></span></li>
10+
next.page.link=<li class="{1}"><a href="{0}"class="{2}" aria-label="N�chste Seite"><span aria-hidden="true">&rsaquo;</span></a></li>
11+
raquo=<li class="{2} {0}"><span class="{1}"><span aria-hidden="true">&raquo;</span></span></li>
12+
raquo.link=<li class="{1}"><a href="{0}"class="{2}" aria-label="Letzte Seite"><span aria-hidden="true">&raquo;</span></a></li>

0 commit comments

Comments
 (0)