diff --git a/goobi-viewer-core/src/main/java/io/goobi/viewer/api/rest/v1/monitoring/MonitoringResource.java b/goobi-viewer-core/src/main/java/io/goobi/viewer/api/rest/v1/monitoring/MonitoringResource.java index 393bed47e16..a11d8cd8f25 100644 --- a/goobi-viewer-core/src/main/java/io/goobi/viewer/api/rest/v1/monitoring/MonitoringResource.java +++ b/goobi-viewer-core/src/main/java/io/goobi/viewer/api/rest/v1/monitoring/MonitoringResource.java @@ -25,16 +25,6 @@ import java.util.HashMap; import java.util.Map; -import jakarta.inject.Inject; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.ws.rs.GET; -import jakarta.ws.rs.Path; -import jakarta.ws.rs.Produces; -import jakarta.ws.rs.container.ContainerRequestContext; -import jakarta.ws.rs.core.Context; -import jakarta.ws.rs.core.MediaType; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -48,13 +38,20 @@ import io.goobi.viewer.api.rest.v1.ApiUrls; import io.goobi.viewer.controller.DataManager; import io.goobi.viewer.controller.JsonTools; -import io.goobi.viewer.controller.NetTools; import io.goobi.viewer.controller.mq.MessageQueueManager; import io.goobi.viewer.exceptions.DAOException; -import io.goobi.viewer.exceptions.HTTPException; import io.goobi.viewer.modules.IModule; import io.goobi.viewer.solr.SolrTools; import io.swagger.v3.oas.annotations.Operation; +import jakarta.inject.Inject; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.container.ContainerRequestContext; +import jakarta.ws.rs.core.Context; +import jakarta.ws.rs.core.MediaType; @Path(ApiUrls.MONITORING) public class MonitoringResource { @@ -103,15 +100,6 @@ public MonitoringStatus checkServices() { logger.warn("DB monitoring check failed."); } - // Check image delivery - try { - NetTools.getWebContentGET( - DataManager.getInstance().getConfiguration().getRestApiUrl() + "records/-/files/footer/-/full/100,/0/default.jpg"); - } catch (HTTPException | IOException e) { - ret.getMonitoring().put(MonitoringStatus.KEY_IMAGES, MonitoringStatus.STATUS_ERROR); - logger.warn("Image delivery monitoring check failed."); - } - // Check message queue status if (messageBroker != null) { if (DataManager.getInstance().getConfiguration().isStartInternalMessageBroker()) { diff --git a/goobi-viewer-core/src/main/java/io/goobi/viewer/model/iiif/presentation/v3/builder/AbstractBuilder.java b/goobi-viewer-core/src/main/java/io/goobi/viewer/model/iiif/presentation/v3/builder/AbstractBuilder.java index 110c02e4445..704e41ad18a 100644 --- a/goobi-viewer-core/src/main/java/io/goobi/viewer/model/iiif/presentation/v3/builder/AbstractBuilder.java +++ b/goobi-viewer-core/src/main/java/io/goobi/viewer/model/iiif/presentation/v3/builder/AbstractBuilder.java @@ -40,8 +40,10 @@ import static io.goobi.viewer.api.rest.v2.ApiUrls.RECORDS_SECTIONS; import static io.goobi.viewer.api.rest.v2.ApiUrls.RECORDS_SECTIONS_RANGE; +import java.io.UnsupportedEncodingException; import java.net.URI; import java.net.URISyntaxException; +import java.net.URLEncoder; import java.nio.file.Paths; import java.util.List; import java.util.Locale; @@ -52,8 +54,6 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; -import jakarta.ws.rs.core.UriBuilder; - import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -100,6 +100,7 @@ import io.goobi.viewer.model.viewer.StructElement; import io.goobi.viewer.solr.SolrConstants; import io.goobi.viewer.solr.SolrTools; +import jakarta.ws.rs.core.UriBuilder; /** *

@@ -867,4 +868,13 @@ private Optional readURIFromSolr(String pi) throws URISyntaxException, Pres } } + protected String escapeURI(String uri) { + try { + // logger.trace("Encoding param: {}", replacement); //NOSONAR Debug + return URLEncoder.encode(uri, StringTools.DEFAULT_ENCODING); + } catch (UnsupportedEncodingException e) { + return uri; + } + } + } diff --git a/goobi-viewer-core/src/main/java/io/goobi/viewer/model/iiif/presentation/v3/builder/ManifestBuilder.java b/goobi-viewer-core/src/main/java/io/goobi/viewer/model/iiif/presentation/v3/builder/ManifestBuilder.java index abc933abb48..bd260f23f83 100644 --- a/goobi-viewer-core/src/main/java/io/goobi/viewer/model/iiif/presentation/v3/builder/ManifestBuilder.java +++ b/goobi-viewer-core/src/main/java/io/goobi/viewer/model/iiif/presentation/v3/builder/ManifestBuilder.java @@ -42,9 +42,6 @@ import java.util.List; import java.util.Optional; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.ws.rs.core.UriBuilder; - import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -84,6 +81,8 @@ import io.goobi.viewer.model.viewer.StructElement; import io.goobi.viewer.model.viewer.pageloader.AbstractPageLoader; import io.goobi.viewer.model.viewer.pageloader.IPageLoader; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.ws.rs.core.UriBuilder; /** *

@@ -457,14 +456,16 @@ private void addRelatedResources(AbstractPresentationModelElement3 manifest, Str } if (DataManager.getInstance().getConfiguration().isVisibleIIIFRenderingPDF()) { - URI uri = urls.path(RECORDS_FILES_IMAGE, RECORDS_FILES_IMAGE_PDF).params(ele.getPi(), page.getFileName()).buildURI(); + URI uri = urls.path(RECORDS_FILES_IMAGE, RECORDS_FILES_IMAGE_PDF).params(ele.getPi(), escapeURI(page.getFileName())).buildURI(); LinkingProperty pdf = new LinkingProperty(LinkingTarget.PDF, createLabel(DataManager.getInstance().getConfiguration().getLabelIIIFRenderingPDF())); manifest.addRendering(pdf.getResource(uri)); } if (DataManager.getInstance().getConfiguration().isVisibleIIIFRenderingAlto() && page.isAltoAvailable()) { - URI uri = urls.path(RECORDS_FILES, RECORDS_FILES_ALTO).params(ele.getPi(), Path.of(page.getAltoFileName()).getFileName()).buildURI(); + URI uri = urls.path(RECORDS_FILES, RECORDS_FILES_ALTO) + .params(ele.getPi(), Path.of(escapeURI(page.getAltoFileName())).getFileName()) + .buildURI(); LinkingProperty alto = new LinkingProperty(LinkingTarget.ALTO, createLabel(DataManager.getInstance().getConfiguration().getLabelIIIFRenderingAlto())); manifest.addSeeAlso(alto.getResource(uri)); @@ -472,7 +473,8 @@ private void addRelatedResources(AbstractPresentationModelElement3 manifest, Str if (DataManager.getInstance().getConfiguration().isVisibleIIIFRenderingPlaintext() && page.isFulltextAvailable()) { URI uri = urls.path(RECORDS_FILES, RECORDS_FILES_PLAINTEXT) - .params(ele.getPi(), Path.of(Optional.ofNullable(page.getFulltextFileName()).orElse(page.getAltoFileName())).getFileName()) + .params(ele.getPi(), + Path.of(Optional.ofNullable(page.getFulltextFileName()).orElse(escapeURI(page.getAltoFileName()))).getFileName()) .buildURI(); LinkingProperty text = new LinkingProperty(LinkingTarget.PLAINTEXT, createLabel(DataManager.getInstance().getConfiguration().getLabelIIIFRenderingPlaintext())); diff --git a/goobi-viewer-core/src/main/resources/META-INF/resources/resources/includes/object/image.xhtml b/goobi-viewer-core/src/main/resources/META-INF/resources/resources/includes/object/image.xhtml index 7f6828c9ecc..7eba32b0bc6 100644 --- a/goobi-viewer-core/src/main/resources/META-INF/resources/resources/includes/object/image.xhtml +++ b/goobi-viewer-core/src/main/resources/META-INF/resources/resources/includes/object/image.xhtml @@ -294,7 +294,6 @@ .subscribe(imageId => { const pageOrder = imageIdToOrderMap.get(imageId); if(pageOrder != undefined) { - console.log("onCurrentImageChange", imageId, pageOrder) setCurrentImageOrder({"order": pageOrder}); } }); @@ -302,7 +301,6 @@ //js updates viewImage.sequence.onCurrentImageChange.subscribe (imageId => { const pageNo = imageIdToOrderMap.get(imageId); - console.log("onCurrentImageChange2", imageId, pageNo) if(pageNo != undefined) { setBrowserLocation(pageNo); @@ -313,7 +311,6 @@ changeImageOrder.subscribe(pageNo => { if(pageNo != undefined ) { const id = sources.iiif.getId(imageSources[Number(pageNo)]); - console.log("changeImageOrder", pageNo, id); if(id != undefined) { viewImage.sequence.setCurrentImage(id, true); } diff --git a/goobi-viewer-core/src/main/resources/META-INF/resources/resources/javascript/dev/modules/viewer/viewerJS.normdata.js b/goobi-viewer-core/src/main/resources/META-INF/resources/resources/javascript/dev/modules/viewer/viewerJS.normdata.js index 7e29233608a..4cf75513525 100644 --- a/goobi-viewer-core/src/main/resources/META-INF/resources/resources/javascript/dev/modules/viewer/viewerJS.normdata.js +++ b/goobi-viewer-core/src/main/resources/META-INF/resources/resources/javascript/dev/modules/viewer/viewerJS.normdata.js @@ -90,7 +90,7 @@ var viewerJS = ( function( viewer ) { // first level click - $( _defaults.linkSelector ).on( 'click', function(event) { + $("body").on( 'click', _defaults.linkSelector, function(event) { _$this = $( this ); _$this.off( 'focus' ); diff --git a/goobi-viewer-core/src/main/resources/META-INF/resources/resources/javascript/dist/viewer.min.js b/goobi-viewer-core/src/main/resources/META-INF/resources/resources/javascript/dist/viewer.min.js index 022162902d0..3a729d9085a 100644 --- a/goobi-viewer-core/src/main/resources/META-INF/resources/resources/javascript/dist/viewer.min.js +++ b/goobi-viewer-core/src/main/resources/META-INF/resources/resources/javascript/dist/viewer.min.js @@ -7251,7 +7251,7 @@ var viewerJS = ( function( viewer ) { // first level click - $( _defaults.linkSelector ).on( 'click', function(event) { + $("body").on( 'click', _defaults.linkSelector, function(event) { _$this = $( this ); _$this.off( 'focus' ); diff --git a/goobi-viewer-core/src/main/resources/META-INF/resources/viewObject.xhtml b/goobi-viewer-core/src/main/resources/META-INF/resources/viewObject.xhtml index 470b2e68073..8b357afa460 100644 --- a/goobi-viewer-core/src/main/resources/META-INF/resources/viewObject.xhtml +++ b/goobi-viewer-core/src/main/resources/META-INF/resources/viewObject.xhtml @@ -160,7 +160,6 @@ -