From 3bebf84831036dad6b7eb06a433de230fa820d5b Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 15 Oct 2012 10:39:57 +0200
Subject: [PATCH] OO-321: only show 1 button group next/previous if there isn't
 any scorm content to show

---
 .../gui/render/velocity/VelocityRenderDecorator.java   | 10 ++++++++++
 .../java/org/olat/modules/scorm/OLATApiAdapter.java    |  4 +++-
 .../modules/scorm/ScormAPIandDisplayController.java    |  1 +
 .../java/org/olat/modules/scorm/_content/display.html  |  4 ++--
 4 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java b/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java
index 4c5911ed0e3..aebe01ebcc1 100644
--- a/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java
+++ b/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java
@@ -560,6 +560,16 @@ public class VelocityRenderDecorator {
 		Component source = renderer.findComponent(componentName);
 		return (source != null);
 	}
+	
+	/**
+	 * @param componentName
+	 * @return true if the component with name componentName is a child of the current container and if this
+	 * component is visible
+	 */
+	public boolean visible(String componentName) {
+		Component source = renderer.findComponent(componentName);
+		return (source != null && source.isVisible());
+	}
 
 	/**
 	 * returns an object from the context of velocity
diff --git a/src/main/java/org/olat/modules/scorm/OLATApiAdapter.java b/src/main/java/org/olat/modules/scorm/OLATApiAdapter.java
index 6abc7aaecd2..a8d1a842eec 100644
--- a/src/main/java/org/olat/modules/scorm/OLATApiAdapter.java
+++ b/src/main/java/org/olat/modules/scorm/OLATApiAdapter.java
@@ -96,7 +96,9 @@ public	class OLATApiAdapter extends LogDelegator implements ch.ethz.pfplms.scorm
 	}
 	
 	public void addAPIListener(ScormAPICallback apiCallback) {
-		apiCallbacks.add(apiCallback);
+		if(apiCallback != null) {
+			apiCallbacks.add(apiCallback);
+		}
 	}
 
 	/**
diff --git a/src/main/java/org/olat/modules/scorm/ScormAPIandDisplayController.java b/src/main/java/org/olat/modules/scorm/ScormAPIandDisplayController.java
index 8e4d5063dd3..97c4fca5efb 100644
--- a/src/main/java/org/olat/modules/scorm/ScormAPIandDisplayController.java
+++ b/src/main/java/org/olat/modules/scorm/ScormAPIandDisplayController.java
@@ -319,6 +319,7 @@ public class ScormAPIandDisplayController extends MainLayoutBasicController {
 
 		if (te.getCommand().equals(MenuTree.COMMAND_TREENODE_EXPANDED)) {
 			iframectr.getInitialComponent().setVisible(false);
+			myContent.setDirty(true);//update the view
 		} else {
 			iframectr.getInitialComponent().setVisible(true);
 			String scormId = String.valueOf(treeModel.lookupScormNodeId(tn));
diff --git a/src/main/java/org/olat/modules/scorm/_content/display.html b/src/main/java/org/olat/modules/scorm/_content/display.html
index c1d0bd5aa0f..71916eba061 100644
--- a/src/main/java/org/olat/modules/scorm/_content/display.html
+++ b/src/main/java/org/olat/modules/scorm/_content/display.html
@@ -18,7 +18,7 @@
 		//todo:gs:c On some sco's the first attempt to call the RTE fails, sending a dummy call is a workaroud for this
 		passApiCall("initcall","empty","empty");
 	</script>
-	
+
 	#if($showNavButtons)
 	<div class="o_scorm_navigation" >
 		$r.render("previousScoTop")
@@ -28,7 +28,7 @@
 	<div class="o_scorm_content">
 		$r.render("contentpackage")
 	</div>
-	#if($showNavButtons)
+	#if($showNavButtons && $r.visible("contentpackage"))
 	<div class="o_scorm_navigation" >
 		$r.render("previousScoBottom")
 		$r.render("nextScoBottom")
-- 
GitLab