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