From 8ab1e198c76a31b35891fa9cc92f11351dd03dee Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 10 Mar 2017 08:56:32 +0100 Subject: [PATCH] OO-2605: choose profile with select box and button --- .../ui/QTI21DeliveryOptionsController.java | 36 +++++++++++-------- .../olat/ims/qti21/ui/_content/profile.html | 1 + .../qti21/ui/_i18n/LocalStrings_de.properties | 4 +++ .../qti21/ui/_i18n/LocalStrings_en.properties | 4 +++ 4 files changed, 31 insertions(+), 14 deletions(-) create mode 100644 src/main/java/org/olat/ims/qti21/ui/_content/profile.html diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21DeliveryOptionsController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21DeliveryOptionsController.java index e1c76818e08..4f75a89b543 100644 --- a/src/main/java/org/olat/ims/qti21/ui/QTI21DeliveryOptionsController.java +++ b/src/main/java/org/olat/ims/qti21/ui/QTI21DeliveryOptionsController.java @@ -24,12 +24,14 @@ import java.util.List; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.FormLink; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; import org.olat.core.gui.components.form.flexible.elements.SingleSelection; import org.olat.core.gui.components.form.flexible.elements.TextElement; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; import org.olat.core.gui.components.form.flexible.impl.FormEvent; import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; +import org.olat.core.gui.components.link.Link; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; @@ -55,13 +57,14 @@ public class QTI21DeliveryOptionsController extends FormBasicController implemen private static final String[] onKeys = new String[]{ "on" }; private static final String[] onValues = new String[]{ "" }; - private static final String[] settingTypeKeys = new String[]{ TestType.summative.name(), TestType.formative.name() }; + private static final String[] settingTypeKeys = new String[]{ "choose", TestType.summative.name(), TestType.formative.name() }; private static final String[] resultsOptionsKeys = new String[] { QTI21AssessmentResultsOptions.METADATA, QTI21AssessmentResultsOptions.SECTION_SUMMARY, QTI21AssessmentResultsOptions.QUESTION_SUMMARY, QTI21AssessmentResultsOptions.QUESTIONS, QTI21AssessmentResultsOptions.USER_SOLUTIONS, QTI21AssessmentResultsOptions.CORRECT_SOLUTIONS }; + private FormLink chooseProfileButton; private SingleSelection settingTypeEl; private MultipleSelectionElement showTitlesEl, showMenuEl; private MultipleSelectionElement personalNotesEl; @@ -96,14 +99,24 @@ public class QTI21DeliveryOptionsController extends FormBasicController implemen setFormTitle("tab.options"); setFormContextHelp("Test editor QTI 2.1 in detail#details_testeditor_options"); formLayout.setElementCssClass("o_sel_qti_resource_options"); + setFormInfo("settings.choose.descr"); - String[] settingTypeValues = new String[]{ translate("qti.form.setting.summative"), translate("qti.form.setting.formative") }; - settingTypeEl = uifactory.addRadiosHorizontal("settings.type", null, formLayout, settingTypeKeys, settingTypeValues); - settingTypeEl.addActionListener(FormEvent.ONCHANGE); + //choose profile + String profilePage = velocity_root + "/profile.html"; + FormLayoutContainer profileCont = FormLayoutContainer.createCustomFormLayout("profile", getTranslator(), profilePage); + profileCont.setLabel("settings.profile", null); + formLayout.add(profileCont); + + String[] settingTypeValues = new String[]{ + translate("qti.form.setting.choose"), translate("qti.form.setting.summative"), translate("qti.form.setting.formative") + }; + settingTypeEl = uifactory.addDropdownSingleselect("settings.type", "settings.type", null, profileCont, settingTypeKeys, settingTypeValues, null); + settingTypeEl.setDomReplacementWrapperRequired(false); settingTypeEl.setAllowNoSelection(true); - if(deliveryOptions.getTestType() != null) { - settingTypeEl.select(deliveryOptions.getTestType().name(), true); - } + + chooseProfileButton = uifactory.addFormLink("settings.choose.profile", profileCont, Link.BUTTON); + + uifactory.addSpacerElement("profile.spacer", formLayout, false); limitAttemptsEl = uifactory.addCheckboxesHorizontal("limitAttempts", "qti.form.limit.attempts", formLayout, onKeys, onValues); limitAttemptsEl.addActionListener(FormEvent.ONCLICK); @@ -278,7 +291,7 @@ public class QTI21DeliveryOptionsController extends FormBasicController implemen digitalSignatureMailEl.setVisible(digitalSignatureEl.isAtLeastSelected(1)); } else if(showResultsOnFinishEl == source) { assessmentResultsOnFinishEl.setVisible(showResultsOnFinishEl.isAtLeastSelected(1)); - } else if(settingTypeEl == source) { + } else if(chooseProfileButton == source) { if(settingTypeEl.isOneSelected()) { String selectedType = settingTypeEl.getSelectedKey(); if(TestType.formative.name().equals(selectedType)) { @@ -287,6 +300,7 @@ public class QTI21DeliveryOptionsController extends FormBasicController implemen applyDeliveryOptions(QTI21DeliveryOptions.summativeSettings()); } } + settingTypeEl.select("choose", true); } super.formInnerEvent(ureq, source, event); } @@ -294,12 +308,6 @@ public class QTI21DeliveryOptionsController extends FormBasicController implemen @Override protected void formOK(UserRequest ureq) { - if(settingTypeEl.isOneSelected()) { - String type = settingTypeEl.getSelectedKey(); - deliveryOptions.setTestType(TestType.valueOf(type)); - } else { - deliveryOptions.setTestType(null); - } if(limitAttemptsEl.isAtLeastSelected(1)) { deliveryOptions.setMaxAttempts(Integer.parseInt(maxAttemptsEl.getValue())); } else { diff --git a/src/main/java/org/olat/ims/qti21/ui/_content/profile.html b/src/main/java/org/olat/ims/qti21/ui/_content/profile.html new file mode 100644 index 00000000000..1c0a4812cde --- /dev/null +++ b/src/main/java/org/olat/ims/qti21/ui/_content/profile.html @@ -0,0 +1 @@ +<div class="form-inline">$r.render("settings.type") $r.render("settings.choose.profile")</div> \ No newline at end of file diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties index 83d4236b5e4..c58b2b71735 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties @@ -134,6 +134,7 @@ qti.form.questionprogress=$org.olat.course.nodes.iq\:qti.form.questionprogress qti.form.questiontitle=$org.olat.course.nodes.iq\:qti.form.questiontitle qti.form.results.onfinish=$org.olat.course.nodes.iq\:qti.form.results.onfinish qti.form.scoreprogress=$org.olat.course.nodes.iq\:qti.form.scoreprogress +qti.form.setting.choose=Profile w\u00E4hlen... qti.form.setting.formative=Formativ (\u00DCbungtest) qti.form.setting.summative=Summativ (scharfe Pr\u00FCfung) qti.form.summary=$org.olat.course.nodes.iq\:qti.form.summary @@ -173,6 +174,9 @@ review.responses=Ihre Antworten \u00FCberpr\u00FCfen review.responses.desc=Sie k\u00F6nnen Ihre Antworten von einer Sektion oder von allen Fragen \u00FCberpr\u00FCfen. Unten finden Sie die entsprechende Liste. score.max=$org.olat.ims.qti\:score.max serialize.error=Unerwarte Fehler w\u00E4hrend Speicherung von Datei +settings.profile=Standardeinstellungen +settings.choose.descr=Sie k\u00F6nnen die Standardeinstellung f\u00FCr summative oder formative Tests \u00FCbernehmen und anpassen oder Sie setzen die Optionen selbst. +settings.choose.profile=Konfiguration \u00FCbernehmen solution=L\u00F6sung submit=Antwort senden suspend.test=$org.olat.modules.iq\:suspendAssess diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties index 48374ee1031..a766dd8f6a0 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties @@ -134,6 +134,7 @@ qti.form.questionprogress=$org.olat.course.nodes.iq\:qti.form.questionprogress qti.form.questiontitle=$org.olat.course.nodes.iq\:qti.form.questiontitle qti.form.results.onfinish=$org.olat.course.nodes.iq\:qti.form.results.onfinish qti.form.scoreprogress=$org.olat.course.nodes.iq\:qti.form.scoreprogress +qti.form.setting.choose=Choose a profile... qti.form.setting.formative=Formative (exercise test) qti.form.setting.summative=Summative (real test) qti.form.summary=$org.olat.course.nodes.iq\:qti.form.summary @@ -173,6 +174,9 @@ review.responses=Review your responses review.responses.desc=You may review your responses to some (or all) questions. These are listed below. score.max=$org.olat.ims.qti\:score.max serialize.error=An unexpected happens while saving the file. +settings.profile=Standard settings +settings.choose.descr=You can chose a default setting for summative or formative tests and adapt it afterward or you set the options by yourself. +settings.choose.profile=Apply configuration solution=Solution submit=Submit response suspend.test=$org.olat.modules.iq\:suspendAssess -- GitLab