From 7933a3d6aa32245e93733c430e73ed3ce7352cb8 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Mon, 13 Feb 2017 11:41:33 +0100 Subject: [PATCH] OO-2517: add a tab with the solution in the assessment item editor --- .../AssessmentItemEditorController.java | 15 ++++ ...sessmentItemPreviewSolutionController.java | 78 +++++++++++++++++++ .../editor/_i18n/LocalStrings_de.properties | 1 + .../editor/_i18n/LocalStrings_en.properties | 1 + 4 files changed, 95 insertions(+) create mode 100644 src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemPreviewSolutionController.java diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java index 766f907070b..d0467150570 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java @@ -83,9 +83,11 @@ public class AssessmentItemEditorController extends BasicController { private final VelocityContainer mainVC; private final int displayTabPosition; + private final int solutionTabPosition; private MetadataEditorController metadataEditor; private AssessmentItemPreviewController displayCtrl; private Controller itemEditor, scoreEditor, feedbackEditor; + private AssessmentItemPreviewSolutionController solutionCtrl; private final File itemFile; private final File rootDirectory; @@ -125,6 +127,10 @@ public class AssessmentItemEditorController extends BasicController { listenTo(displayCtrl); displayTabPosition = tabbedPane.addTab(translate("preview"), displayCtrl); + solutionCtrl = new AssessmentItemPreviewSolutionController(ureq, getWindowControl(), resolvedAssessmentItem, rootDirectory, itemFile); + listenTo(displayCtrl); + solutionTabPosition = tabbedPane.addTab(translate("preview.solution"), solutionCtrl); + putInitialPanel(mainVC); } @@ -154,6 +160,10 @@ public class AssessmentItemEditorController extends BasicController { resolvedAssessmentItem, itemRef, testEntry, assessmentEntry, rootDirectory, itemFile); listenTo(displayCtrl); displayTabPosition = tabbedPane.addTab(translate("preview"), displayCtrl); + + solutionCtrl = new AssessmentItemPreviewSolutionController(ureq, getWindowControl(), resolvedAssessmentItem, rootDirectory, itemFile); + listenTo(displayCtrl); + solutionTabPosition = tabbedPane.addTab(translate("preview.solution"), solutionCtrl); putInitialPanel(mainVC); } @@ -366,6 +376,11 @@ public class AssessmentItemEditorController extends BasicController { listenTo(displayCtrl); tabbedPane.replaceTab(displayTabPosition, displayCtrl); + } else if(selectedCtrl == solutionCtrl) { + solutionCtrl = new AssessmentItemPreviewSolutionController(ureq, getWindowControl(), resolvedAssessmentItem, rootDirectory, itemFile); + + listenTo(displayCtrl); + tabbedPane.replaceTab(solutionTabPosition, solutionCtrl); } } } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemPreviewSolutionController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemPreviewSolutionController.java new file mode 100644 index 00000000000..3dfcafe01ed --- /dev/null +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemPreviewSolutionController.java @@ -0,0 +1,78 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.ims.qti21.ui.editor; + +import java.io.File; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.Component; +import org.olat.core.gui.components.velocity.VelocityContainer; +import org.olat.core.gui.control.Event; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.controller.BasicController; +import org.olat.ims.qti21.AssessmentSessionAuditLogger; +import org.olat.ims.qti21.manager.audit.DefaultAssessmentSessionAuditLogger; +import org.olat.ims.qti21.ui.AssessmentItemDisplayController; + +import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem; + +/** + * + * The controller show the assessment item in solution mode. + * + * Initial date: 13 févr. 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class AssessmentItemPreviewSolutionController extends BasicController { + + private final VelocityContainer mainVC; + + private AssessmentItemDisplayController displayCtrl; + + private final AssessmentSessionAuditLogger candidateAuditLogger = new PreviewAuditLogger(); + + public AssessmentItemPreviewSolutionController(UserRequest ureq, WindowControl wControl, + ResolvedAssessmentItem resolvedAssessmentItem, File rootDirectory, File itemFile) { + super(ureq, wControl); + + displayCtrl = new AssessmentItemDisplayController(ureq, getWindowControl(), + resolvedAssessmentItem, rootDirectory, itemFile, candidateAuditLogger); + displayCtrl.requestSolution(ureq); + listenTo(displayCtrl); + mainVC = createVelocityContainer("assessment_item_preview"); + mainVC.put("display", displayCtrl.getInitialComponent()); + putInitialPanel(mainVC); + } + + @Override + protected void doDispose() { + mainVC.removeListener(this); + } + + @Override + protected void event(UserRequest ureq, Component source, Event event) { + // + } + + public class PreviewAuditLogger extends DefaultAssessmentSessionAuditLogger { + + } +} diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties index e9b16e3003c..483c5980f27 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties @@ -133,6 +133,7 @@ new.spots=Spots hinzuf\u00FCgen new.testpart=Test Part new.upload=Datei hochladen preview=Vorschau +preview.solution=Vorschau L\u00F6sung time.limit.max=Zeitbeschr\u00E4nkung (Minute) title.add=$org.olat.ims.qti.editor\:title.add tools.change.copy=$org.olat.ims.qti.editor\:tools.change.copy diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties index 3074817879c..ceba19cc31b 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties @@ -133,6 +133,7 @@ new.spots=Add spots new.testpart=Test part new.upload=Upload file preview=Preview +preview.solution=Preview solution time.limit.max=Time limit (minute) title.add=$org.olat.ims.qti.editor\:title.add tools.change.copy=$org.olat.ims.qti.editor\:tools.change.copy -- GitLab