Some bugfixes for the image asset.

pull/10/head
Jens Pelzetter 2021-07-06 20:40:42 +02:00
parent c21fc6ec0f
commit 204c2ee39d
5 changed files with 61 additions and 7 deletions

View File

@ -89,11 +89,12 @@ public class ImageService {
imageReader = readers.next(); imageReader = readers.next();
} else { } else {
LOGGER.error( LOGGER.error(
"No image reader suitable image reader available"); "No suitable image reader available"
);
throw new UnexpectedErrorException(); throw new UnexpectedErrorException();
} }
imageReader.setInput(imageInputStream); imageReader.setInput(imageInputStream);
bufferedImage = imageReader.read(0); bufferedImage = imageReader.read(imageReader.getMinIndex());
imageFormat = imageReader.getFormatName(); imageFormat = imageReader.getFormatName();
} catch (IOException ex) { } catch (IOException ex) {
LOGGER.error("Failed to load image."); LOGGER.error("Failed to load image.");

View File

@ -35,7 +35,7 @@ import javax.inject.Named;
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a> * @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/ */
@RequestScoped @RequestScoped
@Named("CmsImageCreatStep") @Named("CmsImageCreateStep")
public class ImageCreateStep extends AbstractMvcAssetCreateStep<Image> { public class ImageCreateStep extends AbstractMvcAssetCreateStep<Image> {
@Inject @Inject

View File

@ -49,6 +49,7 @@ import javax.enterprise.context.RequestScoped;
import javax.inject.Inject; import javax.inject.Inject;
import javax.mvc.Controller; import javax.mvc.Controller;
import javax.mvc.Models; import javax.mvc.Models;
import javax.servlet.http.HttpServletRequest;
import javax.transaction.Transactional; import javax.transaction.Transactional;
import javax.ws.rs.Consumes; import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam; import javax.ws.rs.FormParam;
@ -56,6 +57,7 @@ import javax.ws.rs.GET;
import javax.ws.rs.POST; import javax.ws.rs.POST;
import javax.ws.rs.Path; import javax.ws.rs.Path;
import javax.ws.rs.PathParam; import javax.ws.rs.PathParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.MultivaluedMap;
@ -78,6 +80,9 @@ public class ImageEditStep extends AbstractMvcAssetEditStep {
ImageEditStep.class ImageEditStep.class
); );
@Context
private HttpServletRequest request;
@Inject @Inject
private AssetStepsDefaultMessagesBundle messageBundle; private AssetStepsDefaultMessagesBundle messageBundle;
@ -95,7 +100,7 @@ public class ImageEditStep extends AbstractMvcAssetEditStep {
@Inject @Inject
private IdentifierParser identifierParser; private IdentifierParser identifierParser;
@Inject @Inject
private AssetPermissionsChecker assetPermissionsChecker; private AssetPermissionsChecker assetPermissionsChecker;
@ -169,8 +174,19 @@ public class ImageEditStep extends AbstractMvcAssetEditStep {
editStepModel.setHeight(getImage().getHeight()); editStepModel.setHeight(getImage().getHeight());
editStepModel.setWidth(getImage().getWidth()); editStepModel.setWidth(getImage().getWidth());
editStepModel.setLegalMetadata(getImage().getLegalMetadata()); 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 { } else {
throw new AssetNotFoundException( throw new AssetNotFoundException(
assetUi.showAssetNotFound( assetUi.showAssetNotFound(
@ -320,8 +336,8 @@ public class ImageEditStep extends AbstractMvcAssetEditStep {
messageBundle.get("asset.edit.denied")); messageBundle.get("asset.edit.denied"));
} }
} }
@POST @POST
@Path("/legalmetadata") @Path("/legalmetadata")
@AuthorizationRequired @AuthorizationRequired
@Transactional(Transactional.TxType.REQUIRED) @Transactional(Transactional.TxType.REQUIRED)
@ -486,4 +502,21 @@ public class ImageEditStep extends AbstractMvcAssetEditStep {
return headers.getFirst("Content-Type"); 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();
}
}
} }

View File

@ -37,6 +37,8 @@ import javax.inject.Named;
@Named("CmsImageEditStepModel") @Named("CmsImageEditStepModel")
public class ImageEditStepModel { public class ImageEditStepModel {
private String baseUrl;
private Map<String, String> descriptionValues; private Map<String, String> descriptionValues;
private List<String> unusedDescriptionLocales; private List<String> unusedDescriptionLocales;
@ -55,6 +57,14 @@ public class ImageEditStepModel {
private LegalMetadata legalMetadata; private LegalMetadata legalMetadata;
public String getBaseUrl() {
return baseUrl;
}
protected void setBaseUrl(final String baseUrl) {
this.baseUrl = baseUrl;
}
public Map<String, String> getDescriptionValues() { public Map<String, String> getDescriptionValues() {
return Collections.unmodifiableMap(descriptionValues); return Collections.unmodifiableMap(descriptionValues);
} }

View File

@ -139,6 +139,16 @@
</c:choose> </c:choose>
<h3>#{CmsAssetsStepsDefaultMessagesBundle['image.editstep.legalmetadata.title']}</h3> <h3>#{CmsAssetsStepsDefaultMessagesBundle['image.editstep.legalmetadata.title']}</h3>
<librecms:assetPicker
actionUrl="#{actionBaseUrl}/legalmetadata"
assetType="#{CmsImageEditStepModel.legalMetadataType}"
assetPickerId="legalmetadata-picker"
baseUrl="#{CmsImageEditStepModel.baseUrl}"
contentSection="#{ContentSectionModel.sectionName}"
formParamName="legalMetadataIdentifier"
/>
<c:choose> <c:choose>
<c:when test="#{CmsImageEditStepModel.legalMetadata == null}"> <c:when test="#{CmsImageEditStepModel.legalMetadata == null}">
<div class="text-right"> <div class="text-right">