diff --git a/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/index-page.html.ftl b/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/index-page.html.ftl index 2de6e2522..28fec6cbb 100644 --- a/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/index-page.html.ftl +++ b/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/index-page.html.ftl @@ -64,8 +64,17 @@

News

-
@@ -110,8 +119,18 @@
- <#--

Item List

+

Item List

Item List size: ${CmsPagesItemListModel.listSize}

+
+
Item List size:
+
${CmsPagesItemListModel.listSize}
+
Page size
+
${CmsPagesItemListModel.pageSize}
+
Page
+
${CmsPagesItemListModel.page}
+
Offset
+
${CmsPagesItemListModel.offset}
+
--> + +
+ +

News List

+

News List size: ${CmsPagesItemListModel.getListSize("newslist")}

+
+
Item List size:
+
${CmsPagesItemListModel.getListSize("newslist")}
+
Page size
+
${CmsPagesItemListModel.getPageSize("newslist")}
+
Page
+
${CmsPagesItemListModel.getPage("newslist")}
+
Offset
+
${CmsPagesItemListModel.getOffset("newslist")}
+
+ \ No newline at end of file diff --git a/ccm-cms-default-theme/src/main/scss/_custom.scss b/ccm-cms-default-theme/src/main/scss/_custom.scss index 0516708fd..fea343d9f 100644 --- a/ccm-cms-default-theme/src/main/scss/_custom.scss +++ b/ccm-cms-default-theme/src/main/scss/_custom.scss @@ -2,4 +2,8 @@ $primary: #0A9793; a.navbar-brand { max-width: 15%; +} + +.item-description { + white-space: pre; } \ No newline at end of file diff --git a/ccm-cms/src/main/java/org/librecms/pages/models/ItemListModel.java b/ccm-cms/src/main/java/org/librecms/pages/models/ItemListModel.java index f30c827a6..c9de261ee 100644 --- a/ccm-cms/src/main/java/org/librecms/pages/models/ItemListModel.java +++ b/ccm-cms/src/main/java/org/librecms/pages/models/ItemListModel.java @@ -131,7 +131,50 @@ public class ItemListModel { @Transactional(Transactional.TxType.REQUIRED) public int getListSize() { - return getItems().size(); + return getListSize(""); + } + + @Transactional(Transactional.TxType.REQUIRED) + public int getListSize(final String listName) { + return getItems(listName).size(); + } + + public int getPageSize() { + return getPageSize(""); + } + + public int getPageSize(final String listName) { + return getPageSizeSetting(listName); + } + + public int getOffset() { + return getOffset(""); + } + + public int getOffset(final String listName) { + return getOffset(listName, getPageSize(listName)); + } + + public int getPage() { + return getPage(""); + } + + public int getPage(final String listName) { + final String pageParamName = Stream + .of(listName, PAGE_PARAM_NAME) + .filter(token -> token != null && !token.isBlank()) + .collect( + Collectors.joining(".") + ); + + if (pageUrlModel.getQueryParameters().containsKey(pageParamName)) { + return parsePageParam(pageParamName); + } else if (pageUrlModel.getQueryParameters() + .containsKey(PAGE_PARAM_NAME)) { + return parsePageParam(pageParamName); + } else { + return 0; + } } @Transactional(Transactional.TxType.REQUIRED) @@ -368,27 +411,7 @@ public class ItemListModel { } 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(".") - ); - - 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; + return getPage(listName) * pageSize; } private int parsePageParam(final String pageParamName) { diff --git a/ccm-cms/src/main/java/org/librecms/pages/models/NewsListItemModelBuilder.java b/ccm-cms/src/main/java/org/librecms/pages/models/NewsListItemModelBuilder.java index f16346c99..2f478b5c7 100644 --- a/ccm-cms/src/main/java/org/librecms/pages/models/NewsListItemModelBuilder.java +++ b/ccm-cms/src/main/java/org/librecms/pages/models/NewsListItemModelBuilder.java @@ -21,6 +21,7 @@ package org.librecms.pages.models; import org.librecms.contenttypes.News; import java.time.LocalDateTime; +import java.time.ZoneId; import javax.enterprise.context.RequestScoped; @@ -48,7 +49,9 @@ public class NewsListItemModelBuilder ) { super.addProperties(news, model); model.setReleaseDate( - LocalDateTime.from(news.getReleaseDate().toInstant()) + LocalDateTime.from( + news.getReleaseDate().toInstant().atZone(ZoneId.systemDefault()) + ) ); } diff --git a/ccm-cms/src/main/java/org/librecms/ui/PagesController.java b/ccm-cms/src/main/java/org/librecms/ui/PagesController.java index 61f500282..e3d7e741f 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/PagesController.java +++ b/ccm-cms/src/main/java/org/librecms/ui/PagesController.java @@ -515,7 +515,7 @@ public class PagesController { return showPageDetails(pagesInstance, categoryParam); } - if (!propertyKey.matches("^([a-z0-9-_]*)$")) { + if (!propertyKey.matches("^([a-zA-Z0-9-_\\.]*)$")) { models.put("propertyKeyInvalid", true); return showPageDetails(pagesInstance, categoryParam); } diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/cms/page-details.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/cms/page-details.xhtml index 8fe2df6a2..7c703d971 100644 --- a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/cms/page-details.xhtml +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/cms/page-details.xhtml @@ -155,7 +155,7 @@ class="form-control" id="property-key" name="propertyKey" - pattern="^([a-zA-Z0-9-_]*)$" + pattern="^([a-zA-Z0-9-_\.]*)$" required="true" type="text" />