From 84c2f9a858654ab75b691e5e36ee48a014446a21 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Sun, 6 Feb 2022 09:48:29 +0100 Subject: [PATCH] Some more bugfixes for the authoring steps of the event content type. --- .../contenttypes/event/MvcEventInfoStep.java | 152 ++++++++++++++++-- .../event/MvcEventInfoStepEventDateModel.java | 6 +- .../contenttypes/event/event-info-tmp.xhtml | 6 +- 3 files changed, 146 insertions(+), 18 deletions(-) diff --git a/ccm-cms/src/main/java/org/librecms/ui/contenttypes/event/MvcEventInfoStep.java b/ccm-cms/src/main/java/org/librecms/ui/contenttypes/event/MvcEventInfoStep.java index a3e7d069e..c7a7c9120 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contenttypes/event/MvcEventInfoStep.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contenttypes/event/MvcEventInfoStep.java @@ -25,12 +25,16 @@ import org.librecms.contenttypes.Event; import org.librecms.ui.contentsections.ContentSectionNotFoundException; import org.librecms.ui.contentsections.ItemPermissionChecker; import org.librecms.ui.contentsections.documents.AbstractMvcAuthoringStep; +import org.librecms.ui.contentsections.documents.CmsEditorUtil; import org.librecms.ui.contentsections.documents.DocumentNotFoundException; import org.librecms.ui.contentsections.documents.DocumentUi; import org.librecms.ui.contentsections.documents.MvcAuthoringStepDef; import org.librecms.ui.contentsections.documents.MvcAuthoringSteps; import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; @@ -771,7 +775,7 @@ public class MvcEventInfoStep extends AbstractMvcAuthoringStep { final Locale locale = new Locale(localeParam); getEvent().getEventType().removeValue(locale); itemRepo.save(getEvent()); - + return buildRedirectPathForStep(); } else { return documentUi.showAccessDenied( @@ -787,24 +791,148 @@ public class MvcEventInfoStep extends AbstractMvcAuthoringStep { DocumentNotFoundException { super.init(); - if (itemPermissionChecker.canEditItem(getEvent())) { - eventDateModel.setCanEdit( - itemPermissionChecker.canEditItem(getEvent()) + final boolean canEdit = itemPermissionChecker.canEditItem(getEvent()); + if (canEdit) { + + eventDateModel.setCanEdit(canEdit); + eventDateModel.setEventDateValues( + getEvent() + .getEventDate() + .getValues() + .entrySet() + .stream() + .collect( + Collectors.toMap( + entry -> entry.getKey().toString(), + Map.Entry::getValue + ) + ) + ); + eventDateModel.setVariants( + getEvent() + .getEventDate() + .getValues() + .entrySet() + .stream() + .map(CmsEditorUtil::buildVariantRow) + .collect(Collectors.toList()) + ); + final Set eventDateLocales = getEvent() + .getEventDate() + .getAvailableLocales(); + eventDateModel.setUnusedLocales( + globalizationHelper + .getAvailableLocales() + .stream() + .filter(locale -> !eventDateLocales.contains(locale)) + .map(Locale::toString) + .collect(Collectors.toList()) ); - locationModel.setCanEdit( - itemPermissionChecker.canEditItem(getEvent()) + locationModel.setCanEdit(canEdit); + locationModel.setLocationValues( + getEvent() + .getLocation() + .getValues() + .entrySet() + .stream() + .collect( + Collectors.toMap( + entry -> entry.getKey().toString(), + Map.Entry::getValue + ) + ) + ); + locationModel.setVariants( + getEvent() + .getEventDate() + .getValues() + .entrySet() + .stream() + .map(CmsEditorUtil::buildVariantRow) + .collect(Collectors.toList()) + ); + final Set locationLocales = getEvent() + .getLocation() + .getAvailableLocales(); + locationModel.setUnusedLocales( + globalizationHelper + .getAvailableLocales() + .stream() + .filter(locale -> !locationLocales.contains(locale)) + .map(Locale::toString) + .collect(Collectors.toList()) ); - mainContributorModel.setCanEdit( - itemPermissionChecker.canEditItem(getEvent()) + mainContributorModel.setCanEdit(canEdit); + mainContributorModel.setContributorValues( + getEvent() + .getMainContributor() + .getValues() + .entrySet() + .stream() + .collect( + Collectors.toMap( + entry -> entry.getKey().toString(), + Map.Entry::getValue + ) + ) + ); + mainContributorModel.setVariants( + getEvent() + .getMainContributor() + .getValues() + .entrySet() + .stream() + .map(CmsEditorUtil::buildVariantRow) + .collect(Collectors.toList()) + ); + final Set contributorLocales = getEvent() + .getMainContributor() + .getAvailableLocales(); + mainContributorModel.setUnusedLocales( + globalizationHelper + .getAvailableLocales() + .stream() + .filter(locale -> !contributorLocales.contains(locale)) + .map(Locale::toString) + .collect(Collectors.toList()) ); - eventTypeModel.setCanEdit( - itemPermissionChecker.canEditItem(getEvent()) + eventTypeModel.setCanEdit(canEdit); + eventTypeModel.setEventTypeValues( + getEvent() + .getEventType() + .getValues() + .entrySet() + .stream() + .collect( + Collectors.toMap( + entry -> entry.getKey().toString(), + Map.Entry::getValue + ) + ) + ); + eventTypeModel.setVariants( + getEvent() + .getEventType() + .getValues() + .entrySet() + .stream() + .map(CmsEditorUtil::buildVariantRow) + .collect(Collectors.toList()) + ); + final Set eventTypeLocales = getEvent() + .getEventType() + .getAvailableLocales(); + eventTypeModel.setUnusedLocales( + globalizationHelper + .getAvailableLocales() + .stream() + .filter(locale -> !eventTypeLocales.contains(locale)) + .map(Locale::toString) + .collect(Collectors.toList()) ); - - // toDo } } diff --git a/ccm-cms/src/main/java/org/librecms/ui/contenttypes/event/MvcEventInfoStepEventDateModel.java b/ccm-cms/src/main/java/org/librecms/ui/contenttypes/event/MvcEventInfoStepEventDateModel.java index 58890e4ca..8ca9fc415 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contenttypes/event/MvcEventInfoStepEventDateModel.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contenttypes/event/MvcEventInfoStepEventDateModel.java @@ -36,7 +36,7 @@ import javax.inject.Named; */ @RequestScoped @Named("CmsEventInfoStepEventDate") -class MvcEventInfoStepEventDateModel { +public class MvcEventInfoStepEventDateModel { private boolean canEdit; @@ -81,12 +81,12 @@ class MvcEventInfoStepEventDateModel { } public List getUnusedLocales() { - return Optional + return Optional .ofNullable(unusedLocales) .map(Collections::unmodifiableList) .orElse(Collections.emptyList()); } - + protected void setUnusedLocales(final List unusedLocales) { this.unusedLocales = Optional .ofNullable(unusedLocales) diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contenttypes/event/event-info-tmp.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contenttypes/event/event-info-tmp.xhtml index 23f57d074..ca46823f2 100644 --- a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contenttypes/event/event-info-tmp.xhtml +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contenttypes/event/event-info-tmp.xhtml @@ -28,7 +28,7 @@ variants="#{CmsEventInfoStepEventDate.variants}" viewPageUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@event-info/view" /> - + - + - +