From 864d3ca94eb7503176394bad12d3f209249a668b Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Sat, 5 Jun 2021 19:24:00 +0200 Subject: [PATCH] Bugfixes for asset picker component. --- .../AbstractContactableEntityEditStep.java | 39 +++++++++++++++++-- .../ContactableEntityEditStepModel.java | 18 +++++++-- .../components/librecms/assetPicker.xhtml | 13 ++++--- .../assets/edit-contactable.xhtml | 3 +- .../content-sections/cms-assetpicker.ts | 26 ++++++++++--- 5 files changed, 81 insertions(+), 18 deletions(-) diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/AbstractContactableEntityEditStep.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/AbstractContactableEntityEditStep.java index e5d743114..dd5290071 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/AbstractContactableEntityEditStep.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/AbstractContactableEntityEditStep.java @@ -29,7 +29,6 @@ import org.librecms.assets.ContactEntryRepository; import org.librecms.assets.ContactableEntity; import org.librecms.assets.ContactableEntityManager; import org.librecms.assets.PostalAddress; -import org.librecms.contentsection.Asset; import org.librecms.contentsection.AssetRepository; import org.librecms.ui.contentsections.ContentSectionNotFoundException; @@ -39,11 +38,13 @@ import java.util.stream.Collectors; import javax.inject.Inject; import javax.mvc.Models; +import javax.servlet.http.HttpServletRequest; import javax.transaction.Transactional; import javax.ws.rs.FormParam; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; +import javax.ws.rs.core.Context; /** * @@ -73,6 +74,9 @@ public abstract class AbstractContactableEntityEditStep @Inject private GlobalizationHelper globalizationHelper; + @Context + private HttpServletRequest request; + @Inject private IdentifierParser identifierParser; @@ -110,6 +114,18 @@ public abstract class AbstractContactableEntityEditStep editStepModel.setPostalAddress( getContactableEntity().getPostalAddress() ); + + final StringBuilder baseUrlBuilder = new StringBuilder(); + editStepModel.setBaseUrl( + baseUrlBuilder + .append(request.getScheme()) + .append("://") + .append(request.getServerName()) + .append(addServerPortToBaseUrl()) + .append(addContextPathToBaseUrl()) + .toString() + ); + } else { throw new AssetNotFoundException( assetUi.showAssetNotFound( @@ -196,13 +212,13 @@ public abstract class AbstractContactableEntityEditStep return buildRedirectPathForStep(); } - + @POST @Path("/postaladdress") @AuthorizationRequired @Transactional(Transactional.TxType.REQUIRED) public String setPostalAddress( - @FormParam("postalAddressIdentifier") + @FormParam("postalAddressIdentifier") final String postalAddressIdentifier ) { final Identifier identifier = identifierParser @@ -303,4 +319,21 @@ public abstract class AbstractContactableEntityEditStep return model; } + private String addServerPortToBaseUrl() { + if (request.getServerPort() == 80 || request.getServerPort() == 443) { + return ""; + } else { + return String.format(":%d", request.getServerPort()); + } + } + + private String addContextPathToBaseUrl() { + if (request.getServletContext().getContextPath() == null + || request.getServletContext().getContextPath().isEmpty()) { + return "/"; + } else { + return request.getServletContext().getContextPath(); + } + } + } diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ContactableEntityEditStepModel.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ContactableEntityEditStepModel.java index 7e509cf10..ee3dbf71a 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ContactableEntityEditStepModel.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ContactableEntityEditStepModel.java @@ -33,6 +33,8 @@ import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.inject.Named; import javax.servlet.ServletContext; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.core.Context; /** * @@ -47,17 +49,27 @@ public class ContactableEntityEditStepModel { @Inject private ServletContext servletContext; - + private Map availableContactEntryKeys; + private String baseUrl; + private List contactEntries; private PostalAddress postalAddress; - + public String getContextPath() { return servletContext.getContextPath(); } + public String getBaseUrl() { + return baseUrl; + } + + protected void setBaseUrl(final String baseUrl) { + this.baseUrl = baseUrl; + } + public Map getAvailableContactEntryKeys() { return Collections.unmodifiableMap(availableContactEntryKeys); } @@ -83,7 +95,7 @@ public class ContactableEntityEditStepModel { public PostalAddress getPostalAddress() { return postalAddress; } - + public String getPostalAddressType() { return PostalAddress.class.getName(); } diff --git a/ccm-cms/src/main/resources/META-INF/resources/components/librecms/assetPicker.xhtml b/ccm-cms/src/main/resources/META-INF/resources/components/librecms/assetPicker.xhtml index 42a8aeaba..d4af66905 100644 --- a/ccm-cms/src/main/resources/META-INF/resources/components/librecms/assetPicker.xhtml +++ b/ccm-cms/src/main/resources/META-INF/resources/components/librecms/assetPicker.xhtml @@ -21,10 +21,6 @@ required="true" shortDescription="The current content section." type="String" /> - +
+ data-baseUrl="#{cc.attrs.baseUrl}" + data-contentsection="#{cc.attrs.contentSection}" + id="#{cc.attrs.assetPickerId}">