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> -

foo

+<#macro "org.librecms.assets.AudioAsset" asset> +
AudioAsset
+ + +<#macro "org.librecms.assets.ExternalAudioAsset" asset> +
ExternalAudioAsset
+ + +<#macro "org.librecms.assets.ExternalVideoAsset" asset> +
ExternalVideoAsset
<#macro "org.librecms.assets.FileAsset" asset> @@ -9,6 +17,11 @@ <#--

A file asset

--> +<#macro "org.librecms.assets.Image" asset> +
Image
+ + + <#macro "org.librecms.assets.RelatedLink" asset> <#if asset.externalLink>
@@ -24,4 +37,8 @@ <#else> ${asset.title} - \ No newline at end of file + + +<#macro "org.librecms.assets.VideoAsset" asset> +
VideoAsset
+ 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 /> + + +
${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()))