use of org.olat.course.DisposedCourseRestartController in project openolat by klemens.
the class IQRunController method event.
/**
* @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)
*/
public void event(UserRequest ureq, Component source, Event event) {
if (source == startButton && startButton.isEnabled() && startButton.isVisible()) {
long courseResId = userCourseEnv.getCourseEnvironment().getCourseResourceableId().longValue();
String courseNodeIdent = courseNode.getIdent();
removeAsListenerAndDispose(displayController);
OLATResourceable ores = OresHelper.createOLATResourceableTypeWithoutCheck("test");
ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
WindowControl bwControl = addToHistory(ureq, ores, null);
Controller returnController = iqManager.createIQDisplayController(modConfig, secCallback, ureq, bwControl, courseResId, courseNodeIdent, this);
/*
* either returnController is a MessageController or it is a IQDisplayController
* this should not serve as pattern to be copy&pasted.
* FIXME:2008-11-21:pb INTRODUCED because of read/write QTI Lock solution for scalability II, 6.1.x Release
*/
if (returnController instanceof IQDisplayController) {
displayController = (IQDisplayController) returnController;
listenTo(displayController);
if (displayController.isClosed()) {
// do nothing
} else if (displayController.isReady()) {
// in case displayController was unable to initialize, a message was set by displayController
// this is the case if no more attempts or security check was unsuccessfull
displayContainerController = new LayoutMain3ColsController(ureq, getWindowControl(), displayController);
// autodispose
listenTo(displayContainerController);
// need to wrap a course restart controller again, because IQDisplay
// runs on top of GUIStack
ICourse course = CourseFactory.loadCourse(courseResId);
RepositoryEntry courseRepositoryEntry = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
// empty panel set as "menu" and "tool"
Panel empty = new Panel("empty");
Controller courseCloser = new DisposedCourseRestartController(ureq, getWindowControl(), courseRepositoryEntry);
Controller disposedRestartController = new LayoutMain3ColsController(ureq, getWindowControl(), empty, courseCloser.getInitialComponent(), "disposed course whily in iqRun" + courseResId);
displayContainerController.setDisposedMessageController(disposedRestartController);
final boolean fullWindow = modConfig.getBooleanSafe(IQEditController.CONFIG_FULLWINDOW, true);
if (fullWindow) {
displayContainerController.setAsFullscreen(ureq);
}
displayContainerController.activate();
if (modConfig.get(IQEditController.CONFIG_KEY_TYPE).equals(AssessmentInstance.QMD_ENTRY_TYPE_ASSESS)) {
assessmentStopped = false;
singleUserEventCenter.registerFor(this, getIdentity(), assessmentInstanceOres);
singleUserEventCenter.fireEventToListenersOf(new AssessmentEvent(AssessmentEvent.TYPE.STARTED, ureq.getUserSession()), assessmentEventOres);
}
}
// endif isReady
} else {
// -> qti file was locked -> show info message
// user must click again on course node to activate
mainPanel.pushContent(returnController.getInitialComponent());
}
} else if (source == showResultsButton) {
AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
Long assessmentID = am.getAssessmentID(courseNode, ureq.getIdentity());
if (assessmentID == null) {
// fallback solution: if the assessmentID is not available via AssessmentManager than try to get it via IQManager
long callingResId = userCourseEnv.getCourseEnvironment().getCourseResourceableId().longValue();
String callingResDetail = courseNode.getIdent();
assessmentID = iqManager.getLastAssessmentID(ureq.getIdentity(), callingResId, callingResDetail);
}
if (assessmentID != null && !assessmentID.equals("")) {
Document doc = iqManager.getResultsReportingFromFile(ureq.getIdentity(), type, assessmentID);
// StringBuilder resultsHTML = LocalizedXSLTransformer.getInstance(ureq.getLocale()).renderResults(doc);
String summaryConfig = (String) modConfig.get(IQEditController.CONFIG_KEY_SUMMARY);
int summaryType = AssessmentInstance.SUMMARY_NONE;
try {
summaryType = AssessmentInstance.getSummaryType(summaryConfig);
} catch (Exception e) {
// cannot change AssessmentInstance: fallback if the the configuration is inherited from a QTI 2.1 configuration
if (StringHelper.containsNonWhitespace(summaryConfig)) {
summaryType = AssessmentInstance.SUMMARY_DETAILED;
}
logError("", e);
}
String resultsHTML = iqManager.transformResultsReporting(doc, ureq.getLocale(), summaryType);
myContent.contextPut("displayreporting", resultsHTML);
myContent.contextPut("resreporting", resultsHTML);
myContent.contextPut("showResults", Boolean.TRUE);
}
} else if (source == hideResultsButton) {
myContent.contextPut("showResults", Boolean.FALSE);
} else if ("show".equals(event.getCommand())) {
saveOpenPanel(ureq, ureq.getParameter("panel"), true);
} else if ("hide".equals(event.getCommand())) {
saveOpenPanel(ureq, ureq.getParameter("panel"), false);
}
}
use of org.olat.course.DisposedCourseRestartController in project OpenOLAT by OpenOLAT.
the class IQRunController method event.
/**
* @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)
*/
public void event(UserRequest ureq, Component source, Event event) {
if (source == startButton && startButton.isEnabled() && startButton.isVisible()) {
long courseResId = userCourseEnv.getCourseEnvironment().getCourseResourceableId().longValue();
String courseNodeIdent = courseNode.getIdent();
removeAsListenerAndDispose(displayController);
OLATResourceable ores = OresHelper.createOLATResourceableTypeWithoutCheck("test");
ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
WindowControl bwControl = addToHistory(ureq, ores, null);
Controller returnController = iqManager.createIQDisplayController(modConfig, secCallback, ureq, bwControl, courseResId, courseNodeIdent, this);
/*
* either returnController is a MessageController or it is a IQDisplayController
* this should not serve as pattern to be copy&pasted.
* FIXME:2008-11-21:pb INTRODUCED because of read/write QTI Lock solution for scalability II, 6.1.x Release
*/
if (returnController instanceof IQDisplayController) {
displayController = (IQDisplayController) returnController;
listenTo(displayController);
if (displayController.isClosed()) {
// do nothing
} else if (displayController.isReady()) {
// in case displayController was unable to initialize, a message was set by displayController
// this is the case if no more attempts or security check was unsuccessfull
displayContainerController = new LayoutMain3ColsController(ureq, getWindowControl(), displayController);
// autodispose
listenTo(displayContainerController);
// need to wrap a course restart controller again, because IQDisplay
// runs on top of GUIStack
ICourse course = CourseFactory.loadCourse(courseResId);
RepositoryEntry courseRepositoryEntry = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
// empty panel set as "menu" and "tool"
Panel empty = new Panel("empty");
Controller courseCloser = new DisposedCourseRestartController(ureq, getWindowControl(), courseRepositoryEntry);
Controller disposedRestartController = new LayoutMain3ColsController(ureq, getWindowControl(), empty, courseCloser.getInitialComponent(), "disposed course whily in iqRun" + courseResId);
displayContainerController.setDisposedMessageController(disposedRestartController);
final boolean fullWindow = modConfig.getBooleanSafe(IQEditController.CONFIG_FULLWINDOW, true);
if (fullWindow) {
displayContainerController.setAsFullscreen(ureq);
}
displayContainerController.activate();
if (modConfig.get(IQEditController.CONFIG_KEY_TYPE).equals(AssessmentInstance.QMD_ENTRY_TYPE_ASSESS)) {
assessmentStopped = false;
singleUserEventCenter.registerFor(this, getIdentity(), assessmentInstanceOres);
singleUserEventCenter.fireEventToListenersOf(new AssessmentEvent(AssessmentEvent.TYPE.STARTED, ureq.getUserSession()), assessmentEventOres);
}
}
// endif isReady
} else {
// -> qti file was locked -> show info message
// user must click again on course node to activate
mainPanel.pushContent(returnController.getInitialComponent());
}
} else if (source == showResultsButton) {
AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager();
Long assessmentID = am.getAssessmentID(courseNode, ureq.getIdentity());
if (assessmentID == null) {
// fallback solution: if the assessmentID is not available via AssessmentManager than try to get it via IQManager
long callingResId = userCourseEnv.getCourseEnvironment().getCourseResourceableId().longValue();
String callingResDetail = courseNode.getIdent();
assessmentID = iqManager.getLastAssessmentID(ureq.getIdentity(), callingResId, callingResDetail);
}
if (assessmentID != null && !assessmentID.equals("")) {
Document doc = iqManager.getResultsReportingFromFile(ureq.getIdentity(), type, assessmentID);
// StringBuilder resultsHTML = LocalizedXSLTransformer.getInstance(ureq.getLocale()).renderResults(doc);
String summaryConfig = (String) modConfig.get(IQEditController.CONFIG_KEY_SUMMARY);
int summaryType = AssessmentInstance.SUMMARY_NONE;
try {
summaryType = AssessmentInstance.getSummaryType(summaryConfig);
} catch (Exception e) {
// cannot change AssessmentInstance: fallback if the the configuration is inherited from a QTI 2.1 configuration
if (StringHelper.containsNonWhitespace(summaryConfig)) {
summaryType = AssessmentInstance.SUMMARY_DETAILED;
}
logError("", e);
}
String resultsHTML = iqManager.transformResultsReporting(doc, ureq.getLocale(), summaryType);
myContent.contextPut("displayreporting", resultsHTML);
myContent.contextPut("resreporting", resultsHTML);
myContent.contextPut("showResults", Boolean.TRUE);
}
} else if (source == hideResultsButton) {
myContent.contextPut("showResults", Boolean.FALSE);
} else if ("show".equals(event.getCommand())) {
saveOpenPanel(ureq, ureq.getParameter("panel"), true);
} else if ("hide".equals(event.getCommand())) {
saveOpenPanel(ureq, ureq.getParameter("panel"), false);
}
}
use of org.olat.course.DisposedCourseRestartController in project OpenOLAT by OpenOLAT.
the class QTI21AssessmentRunController method doStart.
private void doStart(UserRequest ureq) {
removeAsListenerAndDispose(displayCtrl);
OLATResourceable ores = OresHelper.createOLATResourceableTypeWithoutCheck("test");
ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
WindowControl bwControl = addToHistory(ureq, ores, null);
RepositoryEntry courseRe = userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
displayCtrl = new AssessmentTestDisplayController(ureq, bwControl, this, testEntry, courseRe, courseNode.getIdent(), deliveryOptions, overrideOptions, true, false, false);
listenTo(displayCtrl);
if (displayCtrl.getAssessmentTest() == null) {
logError("Test cannot be read: " + testEntry + " in course: " + courseRe + " element: " + courseNode.getIdent(), null);
showError("error.resource.corrupted");
} else if (displayCtrl.isEnded()) {
if (!displayCtrl.isResultsVisible()) {
doExitAssessment(ureq, null, true);
initAssessment(ureq);
}
} else {
// in case displayController was unable to initialize, a message was set by displayController
// this is the case if no more attempts or security check was unsuccessfull
displayContainerController = new QTI21AssessmentMainLayoutController(ureq, getWindowControl(), displayCtrl);
// autodispose
listenTo(displayContainerController);
// empty panel set as "menu" and "tool"
Panel empty = new Panel("empty");
Controller courseCloser = new DisposedCourseRestartController(ureq, getWindowControl(), courseRe);
Controller disposedRestartController = new LayoutMain3ColsController(ureq, getWindowControl(), empty, courseCloser.getInitialComponent(), "disposed");
displayContainerController.setDisposedMessageController(disposedRestartController);
boolean fullWindow = deliveryOptions.isHideLms();
if (fullWindow) {
displayContainerController.setAsFullscreen(ureq);
}
displayContainerController.activate();
assessmentStopped = false;
singleUserEventCenter.registerFor(this, getIdentity(), assessmentInstanceOres);
singleUserEventCenter.fireEventToListenersOf(new AssessmentEvent(AssessmentEvent.TYPE.STARTED, ureq.getUserSession()), assessmentEventOres);
ThreadLocalUserActivityLogger.log(QTI21LoggingAction.QTI_START_IN_COURSE, getClass());
}
}
use of org.olat.course.DisposedCourseRestartController in project openolat by klemens.
the class QTI21AssessmentRunController method doStart.
private void doStart(UserRequest ureq) {
removeAsListenerAndDispose(displayCtrl);
OLATResourceable ores = OresHelper.createOLATResourceableTypeWithoutCheck("test");
ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrapBusinessPath(ores));
WindowControl bwControl = addToHistory(ureq, ores, null);
RepositoryEntry courseRe = userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry();
displayCtrl = new AssessmentTestDisplayController(ureq, bwControl, this, testEntry, courseRe, courseNode.getIdent(), deliveryOptions, overrideOptions, true, false, false);
listenTo(displayCtrl);
if (displayCtrl.getAssessmentTest() == null) {
logError("Test cannot be read: " + testEntry + " in course: " + courseRe + " element: " + courseNode.getIdent(), null);
showError("error.resource.corrupted");
} else if (displayCtrl.isEnded()) {
if (!displayCtrl.isResultsVisible()) {
doExitAssessment(ureq, null, true);
initAssessment(ureq);
}
} else {
// in case displayController was unable to initialize, a message was set by displayController
// this is the case if no more attempts or security check was unsuccessfull
displayContainerController = new QTI21AssessmentMainLayoutController(ureq, getWindowControl(), displayCtrl);
// autodispose
listenTo(displayContainerController);
// empty panel set as "menu" and "tool"
Panel empty = new Panel("empty");
Controller courseCloser = new DisposedCourseRestartController(ureq, getWindowControl(), courseRe);
Controller disposedRestartController = new LayoutMain3ColsController(ureq, getWindowControl(), empty, courseCloser.getInitialComponent(), "disposed");
displayContainerController.setDisposedMessageController(disposedRestartController);
boolean fullWindow = deliveryOptions.isHideLms();
if (fullWindow) {
displayContainerController.setAsFullscreen(ureq);
}
displayContainerController.activate();
assessmentStopped = false;
singleUserEventCenter.registerFor(this, getIdentity(), assessmentInstanceOres);
singleUserEventCenter.fireEventToListenersOf(new AssessmentEvent(AssessmentEvent.TYPE.STARTED, ureq.getUserSession()), assessmentEventOres);
ThreadLocalUserActivityLogger.log(QTI21LoggingAction.QTI_START_IN_COURSE, getClass());
}
}
Aggregations