From eb1f0b1cbaf30881a5ffc5da8b94349a46814e5b Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Sat, 7 Aug 2021 15:51:05 +0200 Subject: [PATCH] Bugfixes for MediaStep --- .../librecms/contentsection/rs/Assets.java | 40 +++++++++++++------ .../documents/media/MediaStep.java | 4 +- .../documents/media/MediaStepService.java | 13 +++++- .../relatedinfo/RelatedInfoStepService.java | 24 ++++------- .../content-sections/cms-media-lists.ts | 13 +++++- 5 files changed, 59 insertions(+), 35 deletions(-) diff --git a/ccm-cms/src/main/java/org/librecms/contentsection/rs/Assets.java b/ccm-cms/src/main/java/org/librecms/contentsection/rs/Assets.java index 2663d7349..ef5f0c255 100644 --- a/ccm-cms/src/main/java/org/librecms/contentsection/rs/Assets.java +++ b/ccm-cms/src/main/java/org/librecms/contentsection/rs/Assets.java @@ -36,6 +36,7 @@ import org.librecms.contentsection.FolderRepository; import org.librecms.contentsection.FolderType; import java.io.StringWriter; +import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.Optional; @@ -117,7 +118,7 @@ public class Assets { public String findAssets( @PathParam("content-section") final String section, @QueryParam("query") @DefaultValue("") final String query, - @QueryParam("type") final String type) { + @QueryParam("type") final String typeParam) { final ContentSection contentSection = sectionRepo .findByLabel(section) @@ -126,23 +127,36 @@ public class Assets { final List assets; if ((query == null || query.trim().isEmpty()) - && (type == null || type.trim().isEmpty())) { + && (typeParam == null || typeParam.trim().isEmpty())) { assets = assetRepo.findByContentSection(contentSection); } else if ((query != null && !query.trim().isEmpty()) - && (type == null || type.trim().isEmpty())) { + && (typeParam == null || typeParam.trim().isEmpty())) { assets = assetRepo.findByTitleAndContentSection(query, contentSection); - } else if ((query == null || query.trim().isEmpty()) - && (type != null && !type.trim().isEmpty())) { - final Class assetType = toAssetTypeClass(type); - assets = assetRepo.findByTypeAndContentSection(assetType, - contentSection); + } else if ((query == null || query.isBlank()) + && (typeParam != null && !typeParam.isBlank())) { + final String[] types = typeParam.split(","); + assets = new ArrayList<>(); + for (final String type : types) { + final Class assetType = toAssetTypeClass( + type + ); + final List result = assetRepo + .findByTypeAndContentSection(assetType, contentSection); + assets.addAll(result); + } + assets.sort( + (asset1, asset2) -> asset1.getDisplayName().compareTo( + asset2.getDisplayName() + ) + ); } else { - final Class assetType = toAssetTypeClass(type); + final Class assetType = toAssetTypeClass(typeParam); assets = assetRepo.findByTitleAndTypeAndContentSection( query, assetType, - contentSection); + contentSection + ); } final JsonArrayBuilder arrayBuilder = Json.createArrayBuilder(); @@ -259,7 +273,7 @@ public class Assets { if (Asset.class.isAssignableFrom(clazz)) { @SuppressWarnings("unchecked") final Class typeClass - = (Class) clazz; + = (Class) clazz; return typeClass; } else { throw new IllegalArgumentException(String.format( @@ -312,11 +326,11 @@ public class Assets { private JsonObject getAssetProperties(final Asset asset) { final ProvidesPropertiesForAssetTypeLiteral literal - = new ProvidesPropertiesForAssetTypeLiteral( + = new ProvidesPropertiesForAssetTypeLiteral( asset.getClass()); final Instance instance - = assetPropertiesProviders + = assetPropertiesProviders .select(literal); final JsonObjectBuilder objBuilder = Json.createObjectBuilder(); 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 fbdfafe72..c05ca0598 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 @@ -83,7 +83,7 @@ public class MediaStep extends AbstractMvcAuthoringStep { */ static final String PATH_FRAGMENT = "media"; - private static final String MEDIA_LIST_PREFIX = ".media-"; + protected static final String MEDIA_LIST_PREFIX = ".media-"; /** * {@link AssetManager} instance of managing {@link Asset}s. @@ -186,7 +186,7 @@ public class MediaStep extends AbstractMvcAuthoringStep { getDocument() .getAttachments() .stream() - .filter(list -> !list.getName().startsWith(MEDIA_LIST_PREFIX)) + .filter(list -> list.getName().startsWith(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 110e1a40b..0b15ee0c7 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 @@ -30,6 +30,7 @@ import org.librecms.ui.contentsections.documents.MvcAuthoringSteps; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; @@ -97,7 +98,12 @@ public class MediaStepService { ) ); - final List attachmentLists = document.getAttachments(); + final List attachmentLists = document + .getAttachments() + .stream() + .filter( + list -> list.getName().startsWith(MediaStep.MEDIA_LIST_PREFIX)) + .collect(Collectors.toList()); final List attachmentListsOrder = order .getMediaListsOrder(); @@ -139,6 +145,11 @@ public class MediaStepService { final AttachmentList attachmentList = document .getAttachments() .stream() + .filter( + list -> list.getName().startsWith( + MediaStep.MEDIA_LIST_PREFIX + ) + ) .filter(list -> attachmentsOrder.getKey().equals(list.getUuid())) .findAny() .orElseThrow( diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStepService.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStepService.java index 77b42a77d..3c34e5e42 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStepService.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/documents/relatedinfo/RelatedInfoStepService.java @@ -18,34 +18,19 @@ */ package org.librecms.ui.contentsections.documents.relatedinfo; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.libreccm.l10n.GlobalizationHelper; -import org.libreccm.security.PermissionChecker; -import org.librecms.contentsection.AssetManager; -import org.librecms.contentsection.AssetRepository; import org.librecms.contentsection.AttachmentList; import org.librecms.contentsection.AttachmentListRepository; import org.librecms.contentsection.ContentItem; -import org.librecms.contentsection.ContentItemL10NManager; -import org.librecms.contentsection.ContentItemManager; import org.librecms.contentsection.ContentItemRepository; import org.librecms.contentsection.ContentSection; -import org.librecms.contentsection.ContentTypeRepository; -import org.librecms.contentsection.FolderManager; -import org.librecms.contentsection.FolderRepository; import org.librecms.contentsection.ItemAttachment; import org.librecms.contentsection.ItemAttachmentManager; -import org.librecms.ui.contentsections.AssetFolderTree; -import org.librecms.ui.contentsections.AssetPermissionsModel; -import org.librecms.ui.contentsections.AssetPermissionsModelProvider; import org.librecms.ui.contentsections.ContentSectionsUi; -import org.librecms.ui.contentsections.DocumentFolderTree; -import org.librecms.ui.contentsections.DocumentPermissions; import org.librecms.ui.contentsections.documents.MvcAuthoringSteps; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; @@ -115,7 +100,11 @@ public class RelatedInfoStepService { ) ); - final List attachmentLists = document.getAttachments(); + final List attachmentLists = document + .getAttachments() + .stream() + .filter(list -> !list.getName().startsWith(".")) + .collect(Collectors.toList()); final List attachmentListsOrder = order .getAttachmentListsOrder(); @@ -157,6 +146,7 @@ public class RelatedInfoStepService { final AttachmentList attachmentList = document .getAttachments() .stream() + .filter(list -> !list.getName().startsWith(".")) .filter(list -> attachmentsOrder.getKey().equals(list.getUuid())) .findAny() .orElseThrow( diff --git a/ccm-cms/src/main/typescript/content-sections/cms-media-lists.ts b/ccm-cms/src/main/typescript/content-sections/cms-media-lists.ts index 84b408738..e13d6e985 100644 --- a/ccm-cms/src/main/typescript/content-sections/cms-media-lists.ts +++ b/ccm-cms/src/main/typescript/content-sections/cms-media-lists.ts @@ -22,7 +22,7 @@ let mediaSortables: { } = {}; document.addEventListener("DOMContentLoaded", function (event) { - const mediaLists = document.querySelector(".cms.media-lists"); + const mediaLists = document.querySelector(".cms-media-lists"); if (mediaLists) { mediaListSortable = initMediaLists(mediaLists as HTMLElement); @@ -71,6 +71,7 @@ function initMedias(medias: HTMLElement): Sortable { } function enableSaveButton(event: SortableEvent) { + console.log("Enabling save buttons..."); const saveOrderButtons = document.querySelectorAll( ".media-save-order-button" ); @@ -120,18 +121,24 @@ function moveMedia(event: SortableEvent) { } function saveOrder() { + console.log("Creating mediaOrder object..."); + console.dir(mediaListSortable); + console.dir(movedMedia); + console.dir(mediaSortables); const mediaOrder: MediaStepMediaOrder = { mediaListsOrder: mediaListSortable.toArray(), mediaOrder: {}, movedMedia }; + console.dir(mediaOrder.mediaOrder); + for (let key in mediaSortables) { mediaOrder.mediaOrder[key] = mediaSortables[key].toArray(); } - // console.dir(mediaOrder); + console.dir(mediaOrder); const cmsMedia = document.querySelector(".cms-media-lists"); if (!cmsMedia) { showGeneralError(); @@ -145,6 +152,7 @@ function saveOrder() { ); } + console.log("spinner on"); const saveOrderButtons = document.querySelectorAll(".media-save-order-button"); for (let i = 0; i < saveOrderButtons.length; i++) { const saveOrderButton: HTMLButtonElement = saveOrderButtons[ @@ -157,6 +165,7 @@ function saveOrder() { spinner?.classList.toggle("d-none"); } + console.log("fetch POST"); const headers = new Headers(); headers.append("Content-Type", "application/json"); fetch(baseUrl, {