From aa8140a2dc3cb930fe97ef015881988fb77bdc44 Mon Sep 17 00:00:00 2001 From: fkiefer <none@none> Date: Wed, 8 Mar 2017 11:42:13 +0100 Subject: [PATCH] OO-2133 quick respond scorm highscore, adjust DB query --- .../highscore/ui/HighScoreRunController.java | 16 ++++++++------ .../nodes/scorm/ScormRunController.java | 22 +++++++++---------- .../manager/AssessmentEntryDAO.java | 5 ++++- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java b/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java index ad4c72985fc..5a38db2ad82 100644 --- a/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java +++ b/src/main/java/org/olat/course/highscore/ui/HighScoreRunController.java @@ -58,7 +58,6 @@ import org.olat.course.nodes.MSCourseNode; import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.modules.ModuleConfiguration; import org.olat.modules.assessment.AssessmentEntry; -import org.olat.modules.assessment.model.AssessmentEntryStatus; import org.olat.user.DisplayPortraitController; import org.olat.user.UserAvatarMapper; import org.olat.user.UserManager; @@ -131,7 +130,7 @@ public class HighScoreRunController extends FormBasicController{ return; } // guests will never see the highscore - if (ureq.getUserSession().getRoles().isGuestOnly()){ + if (ureq != null && ureq.getUserSession().getRoles().isGuestOnly()){ viewHighscore = false; return; } @@ -154,7 +153,7 @@ public class HighScoreRunController extends FormBasicController{ List<AssessmentEntry> assessEntries; if ("iqtest".equals(courseNode.getType())) { - assessEntries = assessmentManager.getAssessmentEntriesWithStatus(courseNode, AssessmentEntryStatus.done); + assessEntries = assessmentManager.getAssessmentEntriesWithStatus(courseNode, null); } else { assessEntries = assessmentManager.getAssessmentEntries(courseNode); } @@ -201,10 +200,13 @@ public class HighScoreRunController extends FormBasicController{ // add as listener to form layout for later dispatchinf of gui prefs changes this.flc.getFormItemComponent().addListener(this); // init showConfig from user prefs - Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); - Boolean showConfig = (Boolean) guiPrefs.get(HighScoreRunController.class, GUIPREF_KEY_HIGHSCORE + nodeID); - if (showConfig == null) { - showConfig = Boolean.TRUE; + Boolean showConfig = Boolean.TRUE; + if (ureq != null) { + Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); + showConfig = (Boolean) guiPrefs.get(HighScoreRunController.class, GUIPREF_KEY_HIGHSCORE + nodeID); + if (showConfig == null) { + showConfig = Boolean.TRUE; + } } // expose initial value to velocity this.flc.contextPut("showConfig", Boolean.valueOf(showConfig)); diff --git a/src/main/java/org/olat/course/nodes/scorm/ScormRunController.java b/src/main/java/org/olat/course/nodes/scorm/ScormRunController.java index 72e7923e536..800ff259afa 100644 --- a/src/main/java/org/olat/course/nodes/scorm/ScormRunController.java +++ b/src/main/java/org/olat/course/nodes/scorm/ScormRunController.java @@ -133,12 +133,6 @@ public class ScormRunController extends BasicController implements ScormAPICallb if(isAssessable) { assessableType = config.getStringValue(ScormEditController.CONFIG_ASSESSABLE_TYPE, ScormEditController.CONFIG_ASSESSABLE_TYPE_SCORE); - - HighScoreRunController highScoreCtr = new HighScoreRunController(ureq, getWindowControl(), userCourseEnv, scormNode); - if (highScoreCtr.isViewHighscore()) { - Component highScoreComponent = highScoreCtr.getInitialComponent(); - startPage.put("highScore", highScoreComponent); - } } // <OLATCE-289> @@ -156,7 +150,7 @@ public class ScormRunController extends BasicController implements ScormAPICallb // </OLATCE-289> main = new Panel("scormrunmain"); - doStartPage(); + doStartPage(ureq); putInitialPanel(main); boolean doSkip = config.getBooleanSafe(ScormEditController.CONFIG_SKIPLAUNCHPAGE, false); @@ -205,10 +199,10 @@ public class ScormRunController extends BasicController implements ScormAPICallb if (maxAttemptsReached()) { startPage.contextPut("maxAttemptsReached", Boolean.TRUE); } - doStartPage(); + doStartPage(ureq); } else { // </OLATCE-289> - doStartPage(); + doStartPage(ureq); fireEvent(ureq, event); } } else if (source == null) { // external source @@ -223,7 +217,7 @@ public class ScormRunController extends BasicController implements ScormAPICallb } } - private void doStartPage() { + private void doStartPage(UserRequest ureq) { // push title and learning objectives, only visible on intro page startPage.contextPut("menuTitle", scormNode.getShortTitle()); @@ -254,6 +248,12 @@ public class ScormRunController extends BasicController implements ScormAPICallb startPage.contextPut("comment", StringHelper.xssScan(comment)); } startPage.contextPut("attempts", scormNode.getUserAttempts(userCourseEnv)); + + HighScoreRunController highScoreCtr = new HighScoreRunController(ureq, getWindowControl(), userCourseEnv, scormNode); + if (highScoreCtr.isViewHighscore()) { + Component highScoreComponent = highScoreCtr.getInitialComponent(); + startPage.put("highScore", highScoreComponent); + } } startPage.contextPut("isassessable", Boolean.valueOf(isAssessable)); main.setContent(startPage); @@ -367,7 +367,7 @@ public class ScormRunController extends BasicController implements ScormAPICallb */ public void lmsFinish(String olatSahsId, Properties scoreProp, Properties lessonStatusProp) { if (config.getBooleanSafe(ScormEditController.CONFIG_CLOSE_ON_FINISH, false)) { - doStartPage(); + doStartPage(null); scormDispC.close(); } } diff --git a/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java b/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java index 8cd3cd7a071..608418f9987 100644 --- a/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java +++ b/src/main/java/org/olat/modules/assessment/manager/AssessmentEntryDAO.java @@ -239,7 +239,10 @@ public class AssessmentEntryDAO { sb.append("select data from assessmententry data ") .append(" inner join fetch data.identity ident") .append(" inner join fetch ident.user identuser") - .append(" where data.repositoryEntry.key=:repositoryEntryKey and data.subIdent=:subIdent"); + .append(" where data.repositoryEntry.key=:repositoryEntryKey") + .append(" and data.subIdent=:subIdent") + .append(" and data.userVisibility is true") + .append(" and data.score is not null"); if (status != null) { sb.append(" and data.status=:status"); -- GitLab