From 575d2077e8cbb50d814d65ed9f9786e8280954c6 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Wed, 8 Jan 2020 08:42:05 +0100
Subject: [PATCH] OO-4453: fix substring of url in single page

---
 .../generic/iframe/IFrameDisplayController.java    | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java
index be725331260..e5aa092d2cf 100644
--- a/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java
+++ b/src/main/java/org/olat/core/gui/control/generic/iframe/IFrameDisplayController.java
@@ -336,28 +336,25 @@ public class IFrameDisplayController extends BasicController implements GenericE
 		setPageDownload(isPageDownloadAllowed(currentUri));
 	}
 	
-	private boolean isPageDownloadAllowed(String uri) {
+	private boolean isPageDownloadAllowed(final String uri) {
 		if(!allowDownload || !StringHelper.containsNonWhitespace(uri)) {
 			return false;
 		}
 		// remove any URL parameters
 		String uriLc = uri.toLowerCase();
-		int qmarkPos = uriLc.indexOf("?");
+		int qmarkPos = uriLc.indexOf('?');
 		if (qmarkPos != -1) {
 			// e.g. index.html?olatraw=true
 			uriLc = uriLc.substring(0, qmarkPos);
 		}
 		// remove any anchor references
-		int hTagPos = uri.indexOf("#");
+		int hTagPos = uriLc.indexOf('#');
 		if (hTagPos != -1) {
 			// e.g. index.html#checkThisOut
 			uriLc = uriLc.substring(0, hTagPos);
 		}
 		// HTML pages are rendered inline, everything else is regarded as "downloadable"
-		if(uriLc.endsWith(".html") || uriLc.endsWith(".htm") || uriLc.endsWith(".xhtml")) {
-			return false;
-		}
-		return true;
+		return !uriLc.endsWith(".html") && !uriLc.endsWith(".htm") && !uriLc.endsWith(".xhtml");
 	}
 	
 	private void setPageDownload(boolean allow) {
@@ -385,8 +382,7 @@ public class IFrameDisplayController extends BasicController implements GenericE
 			if (NEW_URI_EVENT.equals(event.getCommand())) {
 				// This event gets triggered from the iframe content by calling a js function outside 
 				// Get new uri from JS method and fire to parents
-				String newUri = ureq.getModuleURI();
-				newUri = ureq.getHttpReq().getParameter("uri");
+				String newUri = ureq.getHttpReq().getParameter("uri");
 				int baseUriPos = newUri.indexOf(baseURI);
 				if (baseUriPos != -1) {
 					int newUriPos =  baseUriPos + baseURI.length();
-- 
GitLab