diff --git a/ccm-cms/src/main/java/org/librecms/assets/ImageService.java b/ccm-cms/src/main/java/org/librecms/assets/ImageService.java index eb177061e..a4956840f 100644 --- a/ccm-cms/src/main/java/org/librecms/assets/ImageService.java +++ b/ccm-cms/src/main/java/org/librecms/assets/ImageService.java @@ -89,11 +89,12 @@ public class ImageService { imageReader = readers.next(); } else { LOGGER.error( - "No image reader suitable image reader available"); + "No suitable image reader available" + ); throw new UnexpectedErrorException(); } imageReader.setInput(imageInputStream); - bufferedImage = imageReader.read(0); + bufferedImage = imageReader.read(imageReader.getMinIndex()); imageFormat = imageReader.getFormatName(); } catch (IOException ex) { LOGGER.error("Failed to load image."); diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ImageCreateStep.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ImageCreateStep.java index 4ebc3a880..4c8353857 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ImageCreateStep.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ImageCreateStep.java @@ -35,7 +35,7 @@ import javax.inject.Named; * @author Jens Pelzetter */ @RequestScoped -@Named("CmsImageCreatStep") +@Named("CmsImageCreateStep") public class ImageCreateStep extends AbstractMvcAssetCreateStep { @Inject diff --git a/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ImageEditStep.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ImageEditStep.java index 390ca9e7b..0d9bd8b10 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ImageEditStep.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ImageEditStep.java @@ -49,6 +49,7 @@ import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.mvc.Controller; import javax.mvc.Models; +import javax.servlet.http.HttpServletRequest; import javax.transaction.Transactional; import javax.ws.rs.Consumes; import javax.ws.rs.FormParam; @@ -56,6 +57,7 @@ import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; +import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; @@ -78,6 +80,9 @@ public class ImageEditStep extends AbstractMvcAssetEditStep { ImageEditStep.class ); + @Context + private HttpServletRequest request; + @Inject private AssetStepsDefaultMessagesBundle messageBundle; @@ -95,7 +100,7 @@ public class ImageEditStep extends AbstractMvcAssetEditStep { @Inject private IdentifierParser identifierParser; - + @Inject private AssetPermissionsChecker assetPermissionsChecker; @@ -169,8 +174,19 @@ public class ImageEditStep extends AbstractMvcAssetEditStep { editStepModel.setHeight(getImage().getHeight()); editStepModel.setWidth(getImage().getWidth()); - + editStepModel.setLegalMetadata(getImage().getLegalMetadata()); + + 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( @@ -320,8 +336,8 @@ public class ImageEditStep extends AbstractMvcAssetEditStep { messageBundle.get("asset.edit.denied")); } } - - @POST + + @POST @Path("/legalmetadata") @AuthorizationRequired @Transactional(Transactional.TxType.REQUIRED) @@ -486,4 +502,21 @@ public class ImageEditStep extends AbstractMvcAssetEditStep { return headers.getFirst("Content-Type"); } + 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/ImageEditStepModel.java b/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ImageEditStepModel.java index db3d23ebf..8469c3f55 100644 --- a/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ImageEditStepModel.java +++ b/ccm-cms/src/main/java/org/librecms/ui/contentsections/assets/ImageEditStepModel.java @@ -37,6 +37,8 @@ import javax.inject.Named; @Named("CmsImageEditStepModel") public class ImageEditStepModel { + private String baseUrl; + private Map descriptionValues; private List unusedDescriptionLocales; @@ -55,6 +57,14 @@ public class ImageEditStepModel { private LegalMetadata legalMetadata; + public String getBaseUrl() { + return baseUrl; + } + + protected void setBaseUrl(final String baseUrl) { + this.baseUrl = baseUrl; + } + public Map getDescriptionValues() { return Collections.unmodifiableMap(descriptionValues); } diff --git a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/assets/image/edit-image.xhtml b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/assets/image/edit-image.xhtml index 09940a2c3..6096ec2ac 100644 --- a/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/assets/image/edit-image.xhtml +++ b/ccm-cms/src/main/resources/WEB-INF/views/org/librecms/ui/contentsection/assets/image/edit-image.xhtml @@ -139,6 +139,16 @@

#{CmsAssetsStepsDefaultMessagesBundle['image.editstep.legalmetadata.title']}

+ +