From 8b7cc2d9707fdf20a2f1daddce24b90dddfef1b4 Mon Sep 17 00:00:00 2001
From: uhensler <none@none>
Date: Fri, 21 Apr 2017 16:23:06 +0200
Subject: [PATCH] OO-2706: Use the correct toolbar in LTI course node preview

---
 .../olat/course/nodes/BasicLTICourseNode.java |  6 +--
 .../nodes/basiclti/LTIEditController.java     | 40 +++++++++----------
 .../nodes/basiclti/LTIRunController.java      | 14 ++++---
 .../basiclti/_i18n/LocalStrings_de.properties |  2 +-
 4 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java b/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java
index 272cde9ef6e..98a5c3d097c 100644
--- a/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java
+++ b/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java
@@ -105,7 +105,7 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements
 	@Override
 	public TabbableController createEditController(UserRequest ureq, WindowControl wControl, BreadcrumbPanel stackPanel, ICourse course, UserCourseEnvironment euce) {
 		updateModuleConfigDefaults(false);
-		LTIEditController childTabCntrllr = new LTIEditController(getModuleConfiguration(), ureq, wControl, stackPanel, this, course, euce);
+		LTIEditController childTabCntrllr = new LTIEditController(getModuleConfiguration(), ureq, wControl, this, course, euce);
 		CourseNode chosenNode = course.getEditorTreeModel().getCourseNode(euce.getCourseEditorEnv().getCurrentCourseNodeId());
 		return new NodeEditController(ureq, wControl, course.getEditorTreeModel(), course, chosenNode, euce, childTabCntrllr);
 	}
@@ -267,7 +267,7 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements
 		ModuleConfiguration config = getModuleConfiguration();
 		Float scaleFactor = (Float) config.get(CONFIG_KEY_SCALEVALUE);
 		if(scaleFactor == null || scaleFactor.floatValue() < 0.0000001f) {
-			return new Float(1.0f);
+			return 1.0f;
 		}
 		return 1.0f * scaleFactor.floatValue();//LTI 1.1 return between 0.0 - 1.0
 	}
@@ -277,7 +277,7 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements
 		if (!hasScoreConfigured()) { 
 			throw new OLATRuntimeException(MSCourseNode.class, "getMaxScore not defined when hasScore set to false", null);
 		}
-		return new Float(0.0f);
+		return 0.0f;
 	}
 
 	@Override
diff --git a/src/main/java/org/olat/course/nodes/basiclti/LTIEditController.java b/src/main/java/org/olat/course/nodes/basiclti/LTIEditController.java
index f481741822c..2c1d2353c64 100644
--- a/src/main/java/org/olat/course/nodes/basiclti/LTIEditController.java
+++ b/src/main/java/org/olat/course/nodes/basiclti/LTIEditController.java
@@ -25,12 +25,11 @@
 
 package org.olat.course.nodes.basiclti;
 
-import org.olat.core.commons.fullWebApp.LayoutMain3ColsController;
+import org.olat.core.commons.fullWebApp.LayoutMain3ColsPreviewController;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.link.Link;
 import org.olat.core.gui.components.link.LinkFactory;
-import org.olat.core.gui.components.stack.BreadcrumbPanel;
 import org.olat.core.gui.components.tabbedpane.TabbedPane;
 import org.olat.core.gui.components.velocity.VelocityContainer;
 import org.olat.core.gui.control.Controller;
@@ -77,10 +76,8 @@ public class LTIEditController extends ActivateableTabbableDefaultController imp
 	private BasicLTICourseNode courseNode;
 	private ConditionEditController accessibilityCondContr;
 	private TabbedPane myTabbedPane;
-	private Controller previewLayoutCtr;
 	private Link previewButton;
-	private Controller previewLtiCtr;
-	private final BreadcrumbPanel stackPanel;
+	private LayoutMain3ColsPreviewController previewLayoutCtr;
 
 	/**
 	 * Constructor for tunneling editor controller 
@@ -91,13 +88,12 @@ public class LTIEditController extends ActivateableTabbableDefaultController imp
 	 * @param course
 	 */
 	public LTIEditController(ModuleConfiguration config, UserRequest ureq, WindowControl wControl, 
-			BreadcrumbPanel stackPanel, BasicLTICourseNode ltCourseNode, ICourse course, UserCourseEnvironment euce) {
+			BasicLTICourseNode ltCourseNode, ICourse course, UserCourseEnvironment euce) {
 		super(ureq, wControl);
 		
 		this.config = config;
 		this.courseNode = ltCourseNode;
 		this.editCourseEnv = course.getCourseEnvironment();
-		this.stackPanel = stackPanel;
 		
 		myContent = createVelocityContainer("edit");
 		previewButton = LinkFactory.createButtonSmall("command.preview", myContent, this);
@@ -124,28 +120,24 @@ public class LTIEditController extends ActivateableTabbableDefaultController imp
 		
 	}
 
-	/**config.set
+	/**
 	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.components.Component, org.olat.core.gui.control.Event)
 	 */
+	@Override
 	public void event(UserRequest ureq, Component source, Event event) {
-		if (source == previewButton) { // those must be links
-			
-			removeAsListenerAndDispose(previewLtiCtr);
-			previewLtiCtr = new LTIRunController(getWindowControl(), config, ureq, courseNode, editCourseEnv);
-			listenTo(previewLtiCtr);
-			
-			// preview layout: only center column (col3) used
-			removeAsListenerAndDispose(previewLayoutCtr);
-
-			previewLayoutCtr = new LayoutMain3ColsController(ureq, getWindowControl(), previewLtiCtr);
+		if (source == previewButton) {
+			Controller runCtr = new LTIRunController(getWindowControl(), config, ureq, courseNode, editCourseEnv);
+			previewLayoutCtr = new LayoutMain3ColsPreviewController(ureq, getWindowControl(), null, runCtr.getInitialComponent(), null);
+			previewLayoutCtr.addDisposableChildController(runCtr);
+			previewLayoutCtr.activate();
 			listenTo(previewLayoutCtr);
-			this.stackPanel.pushController(translate("preview"), previewLayoutCtr);
 		}
 	}
 
 	/**
 	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event)
 	 */
+	@Override
 	public void event(UserRequest ureq, Controller source, Event event) {
 		if (source == accessibilityCondContr) {
 			if (event == Event.CHANGED_EVENT) {
@@ -167,6 +159,8 @@ public class LTIEditController extends ActivateableTabbableDefaultController imp
 			if (event == Event.DONE_EVENT) {
 				fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT);
 			}
+		} else if (source == previewLayoutCtr) {
+			removeAsListenerAndDispose(previewLayoutCtr);
 		}
 	}
 
@@ -174,9 +168,11 @@ public class LTIEditController extends ActivateableTabbableDefaultController imp
 		Boolean sf = courseNode.getModuleConfiguration().getBooleanSafe(MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD,false);
 		myTabbedPane.setEnabled(4, sf);
 	}
+	
 	/**
 	 * @see org.olat.core.gui.control.generic.tabbable.TabbableDefaultController#addTabs(org.olat.core.gui.components.TabbedPane)
 	 */
+	@Override
 	public void addTabs(TabbedPane tabbedPane) {
 		myTabbedPane = tabbedPane;
 		tabbedPane.addTab(translate(PANE_TAB_ACCESSIBILITY), accessibilityCondContr.getWrappedDefaultAccessConditionVC(translate("condition.accessibility.title")));
@@ -189,15 +185,17 @@ public class LTIEditController extends ActivateableTabbableDefaultController imp
 	 * 
 	 * @see org.olat.core.gui.control.DefaultController#doDispose(boolean)
 	 */
+	@Override
 	protected void doDispose() {
-    //
+		//
 	}
 
-
+	@Override
 	public String[] getPaneKeys() {
 		return paneKeys;
 	}
 
+	@Override
 	public TabbedPane getTabbedPane() {
 		return myTabbedPane;
 	}
diff --git a/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java b/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java
index 72f5814c828..9754398b2b9 100644
--- a/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java
+++ b/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java
@@ -83,14 +83,16 @@ public class LTIRunController extends BasicController {
 	
 	private Link startButton;
 	private final StackedPanel mainPanel;
-	private VelocityContainer run, startPage, acceptPage;
+	private VelocityContainer run;
+	private VelocityContainer startPage;
 	private BasicLTICourseNode courseNode;
 	private ModuleConfiguration config;
 	private final CourseEnvironment courseEnv;
 	private UserCourseEnvironment userCourseEnv;
 	private SortedProperties userData = new SortedProperties(); 
 	private SortedProperties customUserData = new SortedProperties(); 
-	private Link acceptLink, back;
+	private Link acceptLink;
+	private Link back;
 
 	private boolean fullScreen;
 	private ChiefController thebaseChief;
@@ -171,27 +173,27 @@ public class LTIRunController extends BasicController {
 	 *         not yet accepted or for other values
 	 */
 	private boolean checkHasDataExchangeAccepted(String hash) {
-		// 
+		boolean dataAccepted = false;
 		CoursePropertyManager propMgr = this.userCourseEnv.getCourseEnvironment().getCoursePropertyManager();
 		Property prop = propMgr.findCourseNodeProperty(this.courseNode, getIdentity(), null, PROP_NAME_DATA_EXCHANGE_ACCEPTED);
 		if (prop != null) {
 			// compare if value in property is the same as calculated today. If not, user as to accept again
 			String storedHash = prop.getStringValue();
 			if (storedHash != null && hash != null && storedHash.equals(hash)) {
-				return true;
+				dataAccepted = true;
 			} else {
 				// remove property, not valid anymore
 				propMgr.deleteProperty(prop);
 			}
 		}
-		return false;
+		return dataAccepted;
 	}
 
 	/**
 	 * Helper to initialize the ask-for-data-exchange screen
 	 */
 	private void doAskDataExchange() {
-		acceptPage = createVelocityContainer("accept");
+		VelocityContainer acceptPage = createVelocityContainer("accept");
 		acceptPage.contextPut("userData", userData);
 		acceptPage.contextPut("customUserData", customUserData);
 		acceptLink = LinkFactory.createButton("accept", acceptPage, this);
diff --git a/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_de.properties
index e62872f9548..31bef1f6c0c 100644
--- a/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_de.properties
@@ -43,7 +43,7 @@ participant.roles=Teilnehmer
 coach.roles=Betreuer
 author.roles=Besitzer
 roles.lti.learner=Lerner
-roles.lti.instructor=Instruktur
+roles.lti.instructor=Instruktor
 roles.lti.administrator=Administrator
 roles.lti.teachingAssistant=Assistent Lehrperson
 roles.lti.contentDeveloper=Inhaltersteller
-- 
GitLab