From 7d670d725d70a8109b45a2108964f0b6d4ea7c89 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Thu, 3 Mar 2022 20:50:01 +0100 Subject: [PATCH] Item Display --- .../themes/librecms/templates/debug.html.ftl | 21 ++++++ .../librecms/templates/default.html.ftl | 67 +++++++++++++------ .../librecms/templates/index-page.html.ftl | 8 ++- .../org/librecms/pages/PagesController.java | 23 ++++--- .../AbstractContentItemListItemModel.java | 4 ++ ...stractContentItemListItemModelBuilder.java | 6 +- .../librecms/pages/models/PageUrlModel.java | 19 +++++- 7 files changed, 111 insertions(+), 37 deletions(-) create mode 100644 ccm-cms-default-theme/src/main/resources/themes/librecms/templates/debug.html.ftl diff --git a/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/debug.html.ftl b/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/debug.html.ftl new file mode 100644 index 000000000..a8c0dbf69 --- /dev/null +++ b/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/debug.html.ftl @@ -0,0 +1,21 @@ + + + + + + Default Template + + +
+

This theme works.

+
+
application
+
${application}
+
themeUrl
+
${themeUrl}
+
view
+
${view!""}
+
+
+ + \ No newline at end of file diff --git a/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/default.html.ftl b/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/default.html.ftl index a8c0dbf69..b584c3797 100644 --- a/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/default.html.ftl +++ b/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/default.html.ftl @@ -1,21 +1,48 @@ - - - - - - Default Template - - -
-

This theme works.

-
-
application
-
${application}
-
themeUrl
-
${themeUrl}
-
view
-
${view!""}
-
+<#import "./main.html.ftl" as main> +<#-- <#import "./contentitems/${CmsPagesContentItemTypeModel.itemClass}.html.ftl" as contentitem> --> + +<@main.librecms> +
+
+
+ <#if CmsPagesContentItemTypeModel.itemClass != ""> + <#assign itemTemplate = .getOptionalTemplate("./contentitems/${CmsPagesContentItemTypeModel.itemClass}.html.ftl")> + <#if itemTemplate.exists> + <#import "./contentitems/${CmsPagesContentItemTypeModel.itemClass}.html.ftl" as contentitem> + <#else> + <#import "./contentitems/default.html.ftl" as contentitem> + + <@contentitem.details /> + +
+
+ +

Notes

+
    +
  • +

    + A side note with some text +

    +

    + Occaecat sit eu ipsum irure. Enim consectetur aute anim proident sint dolor sint ea ex eu adipisicing et. Veniam laborum mollit velit incididunt aliquip do esse officia eu ea nostrud nulla. +

    +
  • +
+

More information

+

+ Consequat occaecat eu ullamco amet id tempor. +

+
    +
  • +

    Anim ex ut reprehenderit in enim id proident duis pariatur est anim do.

    + A related link +
  • +
  • +

    Quis minim deserunt incididunt ea voluptate laboris fugiat elit nulla.

    + Some download link +
  • +
+
- - \ No newline at end of file +
+ \ No newline at end of file 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 df9a06edc..bfa8e780a 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 @@ -65,11 +65,13 @@ <#list CmsPagesItemListModel.getItems("newslist")>

News

-
    +
      <#items as news>
    • -
      ${news.title}
      + <#--
      ${news.getReleaseDate('yyyy-MM-dd')}
      -->
      ${news.getReleaseDate('dd. MMM yyyy')}

      @@ -80,7 +82,7 @@
<#list CmsPagesItemListModel.getItems("eventlist")> -
+

Upcoming events

    <#items as event> diff --git a/ccm-cms/src/main/java/org/librecms/pages/PagesController.java b/ccm-cms/src/main/java/org/librecms/pages/PagesController.java index e485705b8..26decc332 100644 --- a/ccm-cms/src/main/java/org/librecms/pages/PagesController.java +++ b/ccm-cms/src/main/java/org/librecms/pages/PagesController.java @@ -245,7 +245,7 @@ public class PagesController { final Category category = getCategory(domain, pages, "/"); final Versions versions = generateFromPreviewParam(preview); final String language = determineLanguage(category, versions); - + initPageUrlModel(uriInfo); final String indexPage = String.format( @@ -278,7 +278,7 @@ public class PagesController { final String language = determineLanguage(category, versions); initPageUrlModel(uriInfo); - + final String itemPage = String.format( "/%s.%s.html%s", itemName, @@ -308,7 +308,7 @@ public class PagesController { final Category category = getCategory(domain, pages, "/"); final Versions versions = generateFromPreviewParam(preview); final String language = determineLanguage(category, itemName, versions); - + initPageUrlModel(uriInfo); final String itemPage = String.format( @@ -416,7 +416,7 @@ public class PagesController { final Category category = getCategory(domain, pages, page); final Versions versions = generateFromPreviewParam(preview); final String language = determineLanguage(category, versions); - + initPageUrlModel(uriInfo); final String redirectTo; @@ -472,7 +472,7 @@ public class PagesController { final Category category = getCategory(domain, pages, page); final Versions versions = generateFromPreviewParam(preview); final String language = determineLanguage(category, versions); - + initPageUrlModel(uriInfo); final String redirectTo; @@ -561,9 +561,16 @@ public class PagesController { categoryModel.init(pages.getCategoryDomain(), category, version); final Page page = pageManager.findPageForCategory(category); pagePropertiesModel.setProperties(page.getProperties()); - return themesMvc.getMvcTemplate( - uriInfo, "pages", page.getDisplayName() - ); + if (itemName.equals("index") || itemName.isBlank()) { + return themesMvc.getMvcTemplate( + uriInfo, "pages", page.getDisplayName() + ); + } else { + return themesMvc.getMvcTemplate( + uriInfo, "pages", "item-page" + ); + } + } private void initSiteInfoModel( diff --git a/ccm-cms/src/main/java/org/librecms/pages/models/AbstractContentItemListItemModel.java b/ccm-cms/src/main/java/org/librecms/pages/models/AbstractContentItemListItemModel.java index 64b7c612b..e4ca2c550 100644 --- a/ccm-cms/src/main/java/org/librecms/pages/models/AbstractContentItemListItemModel.java +++ b/ccm-cms/src/main/java/org/librecms/pages/models/AbstractContentItemListItemModel.java @@ -92,6 +92,10 @@ public abstract class AbstractContentItemListItemModel { this.description = description; } + public String getLang() { + return locale.toString(); + } + /** * Returns the type of the content item. In most cases implementations * should return the fully qualified name of the content item class here. diff --git a/ccm-cms/src/main/java/org/librecms/pages/models/AbstractContentItemListItemModelBuilder.java b/ccm-cms/src/main/java/org/librecms/pages/models/AbstractContentItemListItemModelBuilder.java index 35cda60d1..0d4494de8 100644 --- a/ccm-cms/src/main/java/org/librecms/pages/models/AbstractContentItemListItemModelBuilder.java +++ b/ccm-cms/src/main/java/org/librecms/pages/models/AbstractContentItemListItemModelBuilder.java @@ -46,11 +46,7 @@ public abstract class AbstractContentItemListItemModelBuilderJens Pelzetter @@ -93,4 +94,20 @@ public class PageUrlModel { this.queryParameters = new HashMap<>(queryParameters); } + public String getQueryString() { + return queryParameters + .entrySet() + .stream() + .map( + entry -> String.format( + "%s=%s", + entry.getKey(), + entry.getValue() + ) + ) + .collect( + Collectors.joining("&", "?", "") + ); + } + }