From 47e26b5878d4553e7d30646eeff5e264f6f9a0c6 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Wed, 16 Feb 2022 20:20:05 +0100 Subject: [PATCH] Several small things for the default and item lists. --- .../librecms/templates/index-page.html.ftl | 63 +++++++++++++++-- .../src/main/scss/_custom.scss | 4 ++ .../librecms/pages/models/ItemListModel.java | 67 +++++++++++++------ .../models/NewsListItemModelBuilder.java | 5 +- .../java/org/librecms/ui/PagesController.java | 2 +- .../org/librecms/ui/cms/page-details.xhtml | 2 +- .../org/librecms/CmsAdminMessages.properties | 2 +- .../librecms/CmsAdminMessages_de.properties | 2 +- 8 files changed, 115 insertions(+), 32 deletions(-) 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

-
    -
  • +
      + <#list CmsPagesItemListModel.getItems("newslist") as news> +
    • +

      +
      ${news.title}
      +
      ${news.releaseDateAsString}
      +

      +

      ${news.description}

      +
    • + + <#--
    • News 1
      2022-02-12
      @@ -82,7 +91,7 @@

      Quis officia cillum commodo velit. Ut cupidatat officia tempor veniam minim excepteur occaecat eu cillum labore. Incididunt exercitation officia enim minim et. Laborum culpa et velit consectetur sint labore proident quis reprehenderit occaecat mollit eu laboris labore. Dolor sit enim nostrud adipisicing esse culpa deserunt ipsum incididunt Lorem ipsum ipsum anim.

      -

    • + -->
@@ -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" />