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 f2af5b253..64b7c612b 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 @@ -18,6 +18,8 @@ */ package org.librecms.pages.models; +import java.util.Locale; + /** * A simplified representation of a content item for use in a list of content * items.Base class for other more specific models. @@ -26,6 +28,12 @@ package org.librecms.pages.models; */ public abstract class AbstractContentItemListItemModel { + /** + * The locale negotiated with the user agent. Useful for example for + * formatting date. Only for internal use. + */ + private Locale locale; + private String uuid; private String displayName; @@ -35,6 +43,14 @@ public abstract class AbstractContentItemListItemModel { private String title; private String description; + + protected Locale getLocale() { + return locale; + } + + protected void setLocale(final Locale locale) { + this.locale = locale; + } public String getUuid() { return uuid; 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 39c58ae8f..35cda60d1 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 @@ -39,6 +39,8 @@ public abstract class AbstractContentItemListItemModelBuilder getItems( final String listName ) { - return Collections.unmodifiableList( + final List items + = Collections.unmodifiableList( buildList( buildLimitToType(getLimitToTypeSetting(listName)), collectCategories( @@ -208,6 +209,8 @@ public class ItemListModel { getOffset(listName, getPageSizeSetting(listName)) ) ); + + return items; } private List buildList( diff --git a/ccm-cms/src/main/java/org/librecms/pages/models/NewsListItemModel.java b/ccm-cms/src/main/java/org/librecms/pages/models/NewsListItemModel.java index b61ddac57..ecf84bb3f 100644 --- a/ccm-cms/src/main/java/org/librecms/pages/models/NewsListItemModel.java +++ b/ccm-cms/src/main/java/org/librecms/pages/models/NewsListItemModel.java @@ -36,6 +36,22 @@ public class NewsListItemModel extends AbstractContentItemListItemModel { return releaseDate; } + /** + * Returns the release date of the news represeted by this model formatted + * using the provided pattern. The pattern MUST be a valid pattern for + * {@link DateTimeFormatter#ofPattern(java.lang.String) }. + * + * @param pattern The pattern to use for formatting the release date. + * + * @return The formatted release date. + */ + public String getReleaseDate(final String pattern) { + return DateTimeFormatter + .ofPattern(pattern, getLocale()) + .withZone(ZoneId.systemDefault()) + .format(releaseDate); + } + public String getReleaseDateAsString() { return DateTimeFormatter.ISO_DATE_TIME .withZone(ZoneId.systemDefault()) 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 2f478b5c7..b3e91c4e7 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 @@ -18,6 +18,7 @@ */ package org.librecms.pages.models; +import org.libreccm.l10n.GlobalizationHelper; import org.librecms.contenttypes.News; import java.time.LocalDateTime;