Page parameter of item list is now aware of different lists
parent
81482c578f
commit
fb285f7a29
|
|
@ -60,6 +60,7 @@ import org.librecms.contentsection.privileges.ItemPrivileges;
|
|||
import com.arsdigita.kernel.KernelConfig;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -87,6 +88,8 @@ public class ItemListModel {
|
|||
|
||||
private static final int PAGE_SIZE_DEFAULT = 20;
|
||||
|
||||
private static final String PAGE_PARAM_NAME = "page";
|
||||
|
||||
@Inject
|
||||
private CategoryModel categoryModel;
|
||||
|
||||
|
|
@ -158,7 +161,8 @@ public class ItemListModel {
|
|||
)
|
||||
),
|
||||
getListOrderSetting(listName),
|
||||
getPageSizeSetting(listName)
|
||||
getPageSizeSetting(listName),
|
||||
getOffset(listName, getPageSizeSetting(listName))
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
@ -167,7 +171,8 @@ public class ItemListModel {
|
|||
final Class<? extends ContentItem> limitToType,
|
||||
final List<Category> categories,
|
||||
final List<String> listOrder,
|
||||
final int pageSize
|
||||
final int pageSize,
|
||||
final int offset
|
||||
) {
|
||||
final CriteriaBuilder criteriaBuilder = entityManager
|
||||
.getCriteriaBuilder();
|
||||
|
|
@ -212,7 +217,7 @@ public class ItemListModel {
|
|||
item, globalizationHelper.getNegotiatedLocale()
|
||||
)
|
||||
)
|
||||
.skip(getOffset(pageSize))
|
||||
.skip(offset)
|
||||
.limit(pageSize)
|
||||
.map(this::buildListItemModel)
|
||||
.collect(Collectors.toList());
|
||||
|
|
@ -362,16 +367,36 @@ public class ItemListModel {
|
|||
}
|
||||
}
|
||||
|
||||
private int getOffset(final int pageSize) {
|
||||
if (pageUrlModel.getQueryParameters().containsKey("page")) {
|
||||
final String value = pageUrlModel.getQueryParameters().get("page");
|
||||
if (value.matches("\\d*")) {
|
||||
final int page = Integer.valueOf(value);
|
||||
private int getOffset(final String listName, final int pageSize) {
|
||||
final String pageParamName = Stream
|
||||
.of(listName, PAGE_PARAM_NAME)
|
||||
.filter(token -> token != null && !token.isBlank())
|
||||
.collect(
|
||||
Collectors.joining(".")
|
||||
);
|
||||
|
||||
return page * pageSize;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
if (pageUrlModel.getQueryParameters().containsKey(pageParamName)) {
|
||||
return calculateOffset(pageParamName, pageSize);
|
||||
} else if (pageUrlModel.getQueryParameters().containsKey(PAGE_PARAM_NAME)) {
|
||||
return calculateOffset(PAGE_PARAM_NAME, pageSize);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private int calculateOffset(
|
||||
final String pageParamName,
|
||||
final int pageSize
|
||||
) {
|
||||
return parsePageParam(pageParamName) * pageSize;
|
||||
}
|
||||
|
||||
private int parsePageParam(final String pageParamName) {
|
||||
final String value = pageUrlModel
|
||||
.getQueryParameters()
|
||||
.get(pageParamName);
|
||||
if (value.matches("\\d+")) {
|
||||
return Integer.parseUnsignedInt(value);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -436,13 +461,12 @@ public class ItemListModel {
|
|||
final String listName,
|
||||
final String settingKey
|
||||
) {
|
||||
return List
|
||||
return Stream
|
||||
.of(
|
||||
ITEM_LIST_SETTINGS_PREFIX,
|
||||
listName,
|
||||
settingKey
|
||||
)
|
||||
.stream()
|
||||
.filter(token -> token != null && !token.isBlank())
|
||||
.collect(
|
||||
Collectors.joining(".")
|
||||
|
|
|
|||
Loading…
Reference in New Issue