Bugfixes for MediaStep

pull/10/head
Jens Pelzetter 2021-08-07 15:51:05 +02:00
parent e3970246c3
commit eb1f0b1cba
5 changed files with 59 additions and 35 deletions

View File

@ -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<Asset> 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<? extends Asset> 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<? extends Asset> assetType = toAssetTypeClass(
type
);
final List<Asset> result = assetRepo
.findByTypeAndContentSection(assetType, contentSection);
assets.addAll(result);
}
assets.sort(
(asset1, asset2) -> asset1.getDisplayName().compareTo(
asset2.getDisplayName()
)
);
} else {
final Class<? extends Asset> assetType = toAssetTypeClass(type);
final Class<? extends Asset> 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<? extends Asset> typeClass
= (Class<? extends Asset>) clazz;
= (Class<? extends Asset>) 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<AssetPropertiesProvider> instance
= assetPropertiesProviders
= assetPropertiesProviders
.select(literal);
final JsonObjectBuilder objBuilder = Json.createObjectBuilder();

View File

@ -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())
);

View File

@ -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<AttachmentList> attachmentLists = document.getAttachments();
final List<AttachmentList> attachmentLists = document
.getAttachments()
.stream()
.filter(
list -> list.getName().startsWith(MediaStep.MEDIA_LIST_PREFIX))
.collect(Collectors.toList());
final List<String> 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(

View File

@ -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<AttachmentList> attachmentLists = document.getAttachments();
final List<AttachmentList> attachmentLists = document
.getAttachments()
.stream()
.filter(list -> !list.getName().startsWith("."))
.collect(Collectors.toList());
final List<String> 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(

View File

@ -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, {