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 4c5911ed0e3340e0a224e71f7f679d694159f9cb..aebe01ebcc10f43708b7df2fd100601b2d78b633 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 6abc7aaecd22064c7363f7566e95b22268402466..a8d1a842eec5e4e793278956f1cd68e69b6edd28 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 8e4d5063dd3debee3e058639bb438c464c55a83a..97c4fca5efb3d6b13ff2c7de730de0f8849cf0d0 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 c1d0bd5aa0fb094790ea89bfa09dba2e532aee8c..71916eba0610f9bf93b0b80553ca5c2a9decf952 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")