diff --git a/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/assets.html.ftl b/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/assets.html.ftl
index f9f8b1b40..6c9afd791 100644
--- a/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/assets.html.ftl
+++ b/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/assets.html.ftl
@@ -1,5 +1,13 @@
-<#macro foo>
-
@@ -24,4 +37,8 @@
<#else>
${asset.title}
#if>
-#macro>
\ No newline at end of file
+#macro>
+
+<#macro "org.librecms.assets.VideoAsset" asset>
+
VideoAsset
+#macro>
diff --git a/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/contentitems/org.librecms.contenttypes.Article.html.ftl b/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/contentitems/org.librecms.contenttypes.Article.html.ftl
index 6d2e6da2c..a9e3b83b9 100644
--- a/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/contentitems/org.librecms.contenttypes.Article.html.ftl
+++ b/ccm-cms-default-theme/src/main/resources/themes/librecms/templates/contentitems/org.librecms.contenttypes.Article.html.ftl
@@ -1,7 +1,16 @@
+<#import "../assets.html.ftl" as assets>
+
<#macro details>
${CmsPagesCategorizedItemModel.title}
${CmsPagesCategorizedItemModel.description}
+
+ <#list CmsPagesCategorizedItemModel.mediaLists as mediaList>
+ <#list mediaList.attachments as media>
+ <@.vars["assets"][media.asset.type] media.asset />
+ #list>
+ #list>
+
${CmsPagesArticleModel.text}
diff --git a/ccm-cms/src/main/java/org/librecms/CmsConstants.java b/ccm-cms/src/main/java/org/librecms/CmsConstants.java
index 1a3ff9ad1..1c6a28feb 100644
--- a/ccm-cms/src/main/java/org/librecms/CmsConstants.java
+++ b/ccm-cms/src/main/java/org/librecms/CmsConstants.java
@@ -61,6 +61,8 @@ public class CmsConstants {
public static final String FORM_ENCTYPE_MULTIPART = "multipart/form-data";
+ public static final String MEDIA_LIST_PREFIX = ".media-";
+
/**
* Constant string used as key for creating service package as a legacy
* application.
diff --git a/ccm-cms/src/main/java/org/librecms/pages/models/ContentItemModel.java b/ccm-cms/src/main/java/org/librecms/pages/models/ContentItemModel.java
index 90efb97e8..05eb4bc41 100644
--- a/ccm-cms/src/main/java/org/librecms/pages/models/ContentItemModel.java
+++ b/ccm-cms/src/main/java/org/librecms/pages/models/ContentItemModel.java
@@ -21,6 +21,7 @@ package org.librecms.pages.models;
import org.libreccm.categorization.CategoryRepository;
import org.libreccm.core.CcmObject;
import org.libreccm.l10n.GlobalizationHelper;
+import org.librecms.CmsConstants;
import org.librecms.contentsection.Asset;
import org.librecms.contentsection.AttachmentList;
import org.librecms.contentsection.ContentItem;
@@ -274,7 +275,7 @@ public class ContentItemModel {
.map(ContentItemModelData::getDescription)
.orElse("");
}
-
+
@Transactional(Transactional.TxType.REQUIRED)
public List
getAttachmentLists() {
init();
@@ -283,6 +284,14 @@ public class ContentItemModel {
.orElse(Collections.emptyList());
}
+ @Transactional(Transactional.TxType.REQUIRED)
+ public List getMediaLists() {
+ init();
+ return contentItem
+ .map(ContentItemModelData::getMediaLists)
+ .orElse(Collections.emptyList());
+ }
+
/**
* Gets the version of the current item (see {@link ContentItem#version}.
*
@@ -510,6 +519,24 @@ public class ContentItemModel {
item
.getAttachments()
.stream()
+ .filter(
+ list -> !list.getName().startsWith(
+ CmsConstants.MEDIA_LIST_PREFIX
+ )
+ )
+ .map(this::buildAttachmentListModel)
+ .sorted()
+ .collect(Collectors.toList())
+ );
+ data.setMediaLists(
+ item
+ .getAttachments()
+ .stream()
+ .filter(
+ list -> list.getName().startsWith(
+ CmsConstants.MEDIA_LIST_PREFIX
+ )
+ )
.map(this::buildAttachmentListModel)
.sorted()
.collect(Collectors.toList())
@@ -613,6 +640,8 @@ public class ContentItemModel {
private List attachmentLists;
+ private List mediaLists;
+
public long getObjectId() {
return objectId;
}
@@ -716,10 +745,19 @@ public class ContentItemModel {
}
public void setAttachmentLists(
- final List attachmentLists) {
+ final List attachmentLists
+ ) {
this.attachmentLists = new ArrayList<>(attachmentLists);
}
+ public List getMediaLists() {
+ return Collections.unmodifiableList(mediaLists);
+ }
+
+ public void setMediaLists(final List mediaLists) {
+ this.mediaLists = new ArrayList<>(mediaLists);
+ }
+
}
}
diff --git a/ccm-cms/src/main/java/org/librecms/pages/models/ImageModelBuilder.java b/ccm-cms/src/main/java/org/librecms/pages/models/ImageModelBuilder.java
index 9da299934..f60006c01 100644
--- a/ccm-cms/src/main/java/org/librecms/pages/models/ImageModelBuilder.java
+++ b/ccm-cms/src/main/java/org/librecms/pages/models/ImageModelBuilder.java
@@ -50,9 +50,12 @@ public class ImageModelBuilder
protected void addProperties(final Image image, final ImageModel model) {
super.addProperties(image, model);
model.setHeight(image.getHeight());
- model.setLegalMetadata(
- legalMetadataModelBuilder.buildAssetModel(image.getLegalMetadata())
- );
+ if (image.getLegalMetadata() != null) {
+ model.setLegalMetadata(
+ legalMetadataModelBuilder.buildAssetModel(
+ image.getLegalMetadata())
+ );
+ }
model.setWidth(image.getWidth());
}
diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/media/MediaStep.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/media/MediaStep.java
index 66b0866dc..eb79ab20b 100644
--- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/media/MediaStep.java
+++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/media/MediaStep.java
@@ -23,6 +23,7 @@ import org.libreccm.api.IdentifierParser;
import org.libreccm.l10n.GlobalizationHelper;
import org.libreccm.security.PermissionChecker;
import org.libreccm.ui.BaseUrl;
+import org.librecms.CmsConstants;
import org.librecms.assets.AssetTypesManager;
import org.librecms.contentsection.Asset;
import org.librecms.contentsection.AssetManager;
@@ -63,6 +64,8 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Context;
+import static org.librecms.CmsConstants.MEDIA_LIST_PREFIX;
+
/**
*
* @author Jens Pelzetter
@@ -83,8 +86,6 @@ public class MediaStep extends AbstractMvcAuthoringStep {
*/
static final String PATH_FRAGMENT = "media";
- protected static final String MEDIA_LIST_PREFIX = ".media-";
-
/**
* {@link AssetManager} instance of managing {@link Asset}s.
*/
@@ -186,7 +187,11 @@ public class MediaStep extends AbstractMvcAuthoringStep {
getDocument()
.getAttachments()
.stream()
- .filter(list -> list.getName().startsWith(MEDIA_LIST_PREFIX))
+ .filter(
+ list -> list.getName().startsWith(
+ CmsConstants.MEDIA_LIST_PREFIX
+ )
+ )
.map(this::buildMediaListDto)
.collect(Collectors.toList())
);
diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/media/MediaStepService.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/media/MediaStepService.java
index 0b15ee0c7..32f15cd44 100644
--- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/media/MediaStepService.java
+++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/media/MediaStepService.java
@@ -18,6 +18,7 @@
*/
package org.librecms.ui.contentsections.documents.media;
+import org.librecms.CmsConstants;
import org.librecms.contentsection.AttachmentList;
import org.librecms.contentsection.AttachmentListRepository;
import org.librecms.contentsection.ContentItem;
@@ -102,7 +103,10 @@ public class MediaStepService {
.getAttachments()
.stream()
.filter(
- list -> list.getName().startsWith(MediaStep.MEDIA_LIST_PREFIX))
+ list -> list.getName().startsWith(
+ CmsConstants.MEDIA_LIST_PREFIX
+ )
+ )
.collect(Collectors.toList());
final List attachmentListsOrder = order
.getMediaListsOrder();
@@ -147,7 +151,7 @@ public class MediaStepService {
.stream()
.filter(
list -> list.getName().startsWith(
- MediaStep.MEDIA_LIST_PREFIX
+ CmsConstants.MEDIA_LIST_PREFIX
)
)
.filter(list -> attachmentsOrder.getKey().equals(list.getUuid()))