diff --git a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentTestBuilder.java b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentTestBuilder.java index f5d0872ca51afc9b3d6e4343e834afd61849b1cd..47382c19d42541de64819b166333bed091872a13 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentTestBuilder.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentTestBuilder.java @@ -43,6 +43,8 @@ import uk.ac.ed.ph.jqtiplus.types.Identifier; import uk.ac.ed.ph.jqtiplus.value.FloatValue; /** + * This builder only build OpenOLAT QTI tests. + * * * Initial date: 11.12.2015<br> * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com @@ -53,6 +55,8 @@ public class AssessmentTestBuilder { private final AssessmentTest assessmentTest; private final AssessmentHtmlBuilder htmlBuilder; + private final boolean editable; + private Double cutValue; private Double maxScore; private OutcomeCondition cutValueRule; @@ -67,6 +71,7 @@ public class AssessmentTestBuilder { public AssessmentTestBuilder(AssessmentTest assessmentTest) { this.assessmentTest = assessmentTest; htmlBuilder = new AssessmentHtmlBuilder(); + editable = "OpenOLAT".equals(assessmentTest.getToolName()); extract(); } @@ -153,6 +158,10 @@ public class AssessmentTestBuilder { } } + public boolean isEditable() { + return editable; + } + public AssessmentTest getAssessmentTest() { return assessmentTest; } @@ -200,6 +209,10 @@ public class AssessmentTestBuilder { } public AssessmentTest build() { + if(!editable) { + return assessmentTest; + } + if(assessmentTest.getOutcomeProcessing() == null) { assessmentTest.setOutcomeProcessing(new OutcomeProcessing(assessmentTest)); } @@ -238,7 +251,6 @@ public class AssessmentTestBuilder { if(maxScoreDeclaration != null) { assessmentTest.getOutcomeDeclarations().remove(maxScoreDeclaration); } - } } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentSectionEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentSectionEditorController.java index 0befeeb0336a596e045d389ae0eaa74c4650d5c6..dd5e3280b281616da89dbaf829ab2d942dcfd41f 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentSectionEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentSectionEditorController.java @@ -29,6 +29,7 @@ import org.olat.core.gui.components.form.flexible.elements.RichTextElement; 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.FormLayoutContainer; +import org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.util.StringHelper; @@ -60,8 +61,8 @@ public class AssessmentSectionEditorController extends ItemSessionControlControl private static final String[] yesnoKeys = new String[]{ "y", "n"}; public AssessmentSectionEditorController(UserRequest ureq, WindowControl wControl, - AssessmentSection section, boolean restrictedEdit) { - super(ureq, wControl, section, restrictedEdit); + AssessmentSection section, boolean restrictedEdit, boolean editable) { + super(ureq, wControl, section, restrictedEdit, editable); this.section = section; htmlBuilder = new AssessmentHtmlBuilder(); initForm(ureq); @@ -71,15 +72,20 @@ public class AssessmentSectionEditorController extends ItemSessionControlControl protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { setFormTitle("assessment.section.config"); setFormContextHelp("Test and Questionnaire Editor in Detail#details_testeditor_test_konf"); + if(!editable) { + setFormWarning("warning.alien.assessment.test"); + } String title = section.getTitle(); titleEl = uifactory.addTextElement("title", "form.metadata.title", 255, title, formLayout); + titleEl.setEnabled(editable); titleEl.setMandatory(true); if(section.getRubricBlocks().isEmpty()) { RichTextElement rubricEl = uifactory.addRichTextElementForStringDataCompact("rubric" + counter++, "form.imd.rubric", "", 8, -1, null, formLayout, ureq.getUserSession(), getWindowControl()); rubricEl.getEditorConfiguration().setFileBrowserUploadRelPath("media"); + rubricEl.setEnabled(editable); rubricEls.add(rubricEl); } else { for(RubricBlock rubricBlock:section.getRubricBlocks()) { @@ -87,6 +93,7 @@ public class AssessmentSectionEditorController extends ItemSessionControlControl RichTextElement rubricEl = uifactory.addRichTextElementForStringDataCompact("rubric" + counter++, "form.imd.rubric", rubric, 8, -1, null, formLayout, ureq.getUserSession(), getWindowControl()); rubricEl.getEditorConfiguration().setFileBrowserUploadRelPath("media"); + rubricEl.setEnabled(editable); rubricEl.setUserObject(rubricBlock); rubricEls.add(rubricEl); } @@ -102,7 +109,7 @@ public class AssessmentSectionEditorController extends ItemSessionControlControl } else { shuffleEl.select("n", true); } - shuffleEl.setEnabled(!restrictedEdit); + shuffleEl.setEnabled(!restrictedEdit && editable); int numOfItems = getNumOfQuestions(section); @@ -117,7 +124,7 @@ public class AssessmentSectionEditorController extends ItemSessionControlControl randomSelectedEl = uifactory.addDropdownSingleselect("form.section.selection_pre", formLayout, theKeys, theValues, null); randomSelectedEl.setHelpText(translate("form.section.selection_pre.hover")); - randomSelectedEl.setEnabled(!restrictedEdit); + randomSelectedEl.setEnabled(!restrictedEdit && editable); int currentNum = section.getSelection() != null ? section.getSelection().getSelect() : 0; if(currentNum <= numOfItems) { @@ -130,7 +137,7 @@ public class AssessmentSectionEditorController extends ItemSessionControlControl //visible visibleEl = uifactory.addRadiosHorizontal("visible", "form.section.visible", formLayout, yesnoKeys, yesnoValues); - visibleEl.setEnabled(!restrictedEdit); + visibleEl.setEnabled(!restrictedEdit && editable); if (section.getVisible()) { visibleEl.select("y", true); } else { @@ -139,7 +146,8 @@ public class AssessmentSectionEditorController extends ItemSessionControlControl FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("butons", getTranslator()); formLayout.add(buttonsCont); - uifactory.addFormSubmitButton("save", "save", buttonsCont); + FormSubmit submit = uifactory.addFormSubmitButton("save", "save", buttonsCont); + submit.setEnabled(editable); } /** diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestAndTestPartOptionsEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestAndTestPartOptionsEditorController.java index 8b33d7ed6bb1f3955e3aecdaddb279d95992a1d0..eb3ccaf05d2656b36213348d23b43fcb692c0903 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestAndTestPartOptionsEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestAndTestPartOptionsEditorController.java @@ -24,6 +24,7 @@ import org.olat.core.gui.components.form.flexible.FormItemContainer; 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.FormLayoutContainer; +import org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.util.StringHelper; @@ -57,7 +58,7 @@ public class AssessmentTestAndTestPartOptionsEditorController extends ItemSessio public AssessmentTestAndTestPartOptionsEditorController(UserRequest ureq, WindowControl wControl, AssessmentTest assessmentTest, TestPart testPart, AssessmentTestBuilder testBuilder, boolean restrictedEdit) { - super(ureq, wControl, testPart, restrictedEdit); + super(ureq, wControl, testPart, restrictedEdit, testBuilder.isEditable()); this.assessmentTest = assessmentTest; this.testBuilder = testBuilder; this.testPart = testPart; @@ -67,15 +68,19 @@ public class AssessmentTestAndTestPartOptionsEditorController extends ItemSessio @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { setFormContextHelp("Test and Questionnaire Editor in Detail#details_testeditor_test_konf"); + if(!editable) { + setFormWarning("warning.alien.assessment.test"); + } String title = assessmentTest.getTitle(); titleEl = uifactory.addTextElement("title", "form.metadata.title", 255, title, formLayout); + titleEl.setEnabled(testBuilder.isEditable()); titleEl.setMandatory(true); //export score String[] yesnoValues = new String[] { translate("yes"), translate("no") }; exportScoreEl = uifactory.addRadiosHorizontal("form.test.export.score", formLayout, yesnoKeys, yesnoValues); - exportScoreEl.setEnabled(!restrictedEdit); + exportScoreEl.setEnabled(!restrictedEdit && testBuilder.isEditable()); if(testBuilder.isExportScore()) { exportScoreEl.select(yesnoKeys[0], true); } else { @@ -90,7 +95,7 @@ public class AssessmentTestAndTestPartOptionsEditorController extends ItemSessio Double cutValue = testBuilder.getCutValue(); String cutValueStr = cutValue == null ? "" : cutValue.toString(); cutValueEl = uifactory.addTextElement("cut.value", "cut.value", 8, cutValueStr, formLayout); - cutValueEl.setEnabled(!restrictedEdit); + cutValueEl.setEnabled(!restrictedEdit && testBuilder.isEditable()); uifactory.addSpacerElement("space-test-part", formLayout, false); @@ -100,13 +105,14 @@ public class AssessmentTestAndTestPartOptionsEditorController extends ItemSessio String mode = testPart.getNavigationMode() == null ? NavigationMode.LINEAR.name() : testPart.getNavigationMode().name(); navigationModeEl = uifactory.addRadiosHorizontal("navigationMode", "form.testPart.navigationMode", formLayout, navigationKeys, navigationValues); navigationModeEl.select(mode, true); - navigationModeEl.setEnabled(!restrictedEdit); + navigationModeEl.setEnabled(!restrictedEdit && testBuilder.isEditable()); super.initForm(formLayout, listener, ureq); FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); formLayout.add(buttonsCont); - uifactory.addFormSubmitButton("save", "save", buttonsCont); + FormSubmit submit = uifactory.addFormSubmitButton("save", "save", buttonsCont); + submit.setEnabled(testBuilder.isEditable()); } @Override diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java index 2574f9766888d1636dc37bb36d939820e101ae59..8a32cd839b85acbb93fde18f992b0dc05a4ab478 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java @@ -198,8 +198,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController // test structure menuTree = new MenuTree("atTree"); menuTree.setExpandSelectedNode(false); - menuTree.setDragEnabled(!restrictedEdit); - menuTree.setDropEnabled(!restrictedEdit); + menuTree.setDropSiblingEnabled(!restrictedEdit); menuTree.setDndAcceptJSMethod("treeAcceptDrop_notWithChildren"); menuTree.setElementCssClass("o_assessment_test_editor_menu"); @@ -210,6 +209,9 @@ public class AssessmentTestComposerController extends MainLayoutBasicController unzippedContRoot = frm.unzipContainerResource(testEntry.getOlatResource()); updateTreeModel(false); manifestBuilder = ManifestBuilder.read(new File(unzippedDirRoot, "imsmanifest.xml")); + //is the test editable ? + menuTree.setDragEnabled(!restrictedEdit && assessmentTestBuilder.isEditable()); + menuTree.setDropEnabled(!restrictedEdit && assessmentTestBuilder.isEditable()); //add elements addItemTools = new Dropdown("editTools", "new.elements", false, getTranslator()); @@ -859,6 +861,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController private void doSaveAssessmentTest() { assessmentChanged = true; recalculateMaxScoreAssessmentTest(); + assessmentTestBuilder.build(); URI testURI = resolvedAssessmentTest.getTestLookup().getSystemId(); File testFile = new File(testURI); qtiService.updateAssesmentObject(testFile, resolvedAssessmentTest); @@ -921,9 +924,11 @@ public class AssessmentTestComposerController extends MainLayoutBasicController TestPart uniqueTestPart = test.getTestParts().size() == 1 ? test.getTestParts().get(0) : null; currentEditorCtrl = new AssessmentTestEditorController(ureq, getWindowControl(), assessmentTestBuilder, uniqueTestPart, restrictedEdit); } else if(uobject instanceof TestPart) { - currentEditorCtrl = new AssessmentTestPartEditorController(ureq, getWindowControl(), (TestPart)uobject, restrictedEdit); + currentEditorCtrl = new AssessmentTestPartEditorController(ureq, getWindowControl(), (TestPart)uobject, + restrictedEdit, assessmentTestBuilder.isEditable()); } else if(uobject instanceof AssessmentSection) { - currentEditorCtrl = new AssessmentSectionEditorController(ureq, getWindowControl(), (AssessmentSection)uobject, restrictedEdit); + currentEditorCtrl = new AssessmentSectionEditorController(ureq, getWindowControl(), (AssessmentSection)uobject, + restrictedEdit, assessmentTestBuilder.isEditable()); } else if(uobject instanceof AssessmentItemRef) { AssessmentItemRef itemRef = (AssessmentItemRef)uobject; ResolvedAssessmentItem item = resolvedAssessmentTest.getResolvedAssessmentItem(itemRef); diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestEditorController.java index 3a88ebd22bee69a0022314a348b0d8cfd2e8bf9b..1705a8353d3dceec42c72b265721811dae498617 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestEditorController.java @@ -28,7 +28,6 @@ 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.core.util.Util; -import org.olat.ims.qti21.QTI21Constants; import org.olat.ims.qti21.model.xml.AssessmentTestBuilder; import org.olat.ims.qti21.ui.AssessmentTestDisplayController; import org.olat.ims.qti21.ui.editor.events.AssessmentTestEvent; @@ -79,23 +78,19 @@ public class AssessmentTestEditorController extends BasicController { } private void initTestEditor(UserRequest ureq) { - if(QTI21Constants.TOOLNAME.equals(assessmentTest.getToolName())) { - if(testPart != null) { - optionsCtrl = new AssessmentTestAndTestPartOptionsEditorController(ureq, getWindowControl(), assessmentTest, testPart, testBuilder, restrictedEdit); - } else { - optionsCtrl = new AssessmentTestOptionsEditorController(ureq, getWindowControl(), assessmentTest, testBuilder, restrictedEdit); - } - listenTo(optionsCtrl); - - feedbackCtrl = new AssessmentTestFeedbackEditorController(ureq, getWindowControl(), testBuilder, restrictedEdit); - listenTo(feedbackCtrl); - - tabbedPane.addTab(translate("assessment.test.config"), optionsCtrl.getInitialComponent()); - tabbedPane.addTab(translate("form.feedback"), feedbackCtrl.getInitialComponent()); + if(testPart != null) { + optionsCtrl = new AssessmentTestAndTestPartOptionsEditorController(ureq, getWindowControl(), assessmentTest, testPart, testBuilder, restrictedEdit); } else { - Controller ctrl = new UnkownTestEditorController(ureq, getWindowControl()); - listenTo(ctrl); - tabbedPane.addTab("Unkown", ctrl.getInitialComponent()); + optionsCtrl = new AssessmentTestOptionsEditorController(ureq, getWindowControl(), assessmentTest, testBuilder, restrictedEdit); + } + listenTo(optionsCtrl); + + feedbackCtrl = new AssessmentTestFeedbackEditorController(ureq, getWindowControl(), testBuilder, restrictedEdit); + listenTo(feedbackCtrl); + + tabbedPane.addTab(translate("assessment.test.config"), optionsCtrl.getInitialComponent()); + if(testBuilder.isEditable()) { + tabbedPane.addTab(translate("form.feedback"), feedbackCtrl.getInitialComponent()); } } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestOptionsEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestOptionsEditorController.java index d3951509406a99f92d180172ae429845b5157eb0..f951686487efadbc20112626cc5d7eadfa6f4c11 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestOptionsEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestOptionsEditorController.java @@ -25,6 +25,7 @@ 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.FormLayoutContainer; +import org.olat.core.gui.components.form.flexible.impl.elements.FormSubmit; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.util.StringHelper; @@ -69,11 +70,13 @@ public class AssessmentTestOptionsEditorController extends FormBasicController { String title = assessmentTest.getTitle(); titleEl = uifactory.addTextElement("title", "form.metadata.title", 255, title, formLayout); titleEl.setMandatory(true); + titleEl.setEnabled(testBuilder.isEditable()); //export score String[] yesnoValues = new String[] { translate("yes"), translate("no") }; exportScoreEl = uifactory.addRadiosHorizontal("form.test.export.score", formLayout, yesnoKeys, yesnoValues); exportScoreEl.setEnabled(!restrictedEdit); + exportScoreEl.setEnabled(testBuilder.isEditable()); if(testBuilder.isExportScore()) { exportScoreEl.select(yesnoKeys[0], true); } else { @@ -88,11 +91,12 @@ public class AssessmentTestOptionsEditorController extends FormBasicController { Double cutValue = testBuilder.getCutValue(); String cutValueStr = cutValue == null ? "" : cutValue.toString(); cutValueEl = uifactory.addTextElement("cut.value", "cut.value", 8, cutValueStr, formLayout); - cutValueEl.setEnabled(!restrictedEdit); + cutValueEl.setEnabled(!restrictedEdit && testBuilder.isEditable()); FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("butons", getTranslator()); formLayout.add(buttonsCont); - uifactory.addFormSubmitButton("save", "save", buttonsCont); + FormSubmit submit = uifactory.addFormSubmitButton("save", "save", buttonsCont); + submit.setEnabled(testBuilder.isEditable()); } @Override diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestPartEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestPartEditorController.java index 45d52bf82bc60d975ef815ff978cc6f42d1c4364..28902a97038048794c08c2d2ac5c9bd444d86d09 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestPartEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestPartEditorController.java @@ -47,8 +47,8 @@ public class AssessmentTestPartEditorController extends ItemSessionControlContro }; public AssessmentTestPartEditorController(UserRequest ureq, WindowControl wControl, - TestPart testPart, boolean restrictedEdit) { - super(ureq, wControl, testPart, restrictedEdit); + TestPart testPart, boolean restrictedEdit, boolean editable) { + super(ureq, wControl, testPart, restrictedEdit, editable); this.testPart = testPart; initForm(ureq); } @@ -56,6 +56,9 @@ public class AssessmentTestPartEditorController extends ItemSessionControlContro @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { setFormTitle("assessment.testpart.config"); + if(!editable) { + setFormWarning("warning.alien.assessment.test"); + } super.initForm(formLayout, listener, ureq); diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/ItemSessionControlController.java b/src/main/java/org/olat/ims/qti21/ui/editor/ItemSessionControlController.java index cca1f464bcdfc27ccc0e185680b945701908fb31..416f950f551b9707184793c65d12cc3de9812f23 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/ItemSessionControlController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/ItemSessionControlController.java @@ -50,13 +50,15 @@ public abstract class ItemSessionControlController extends FormBasicController { private TextElement maxAttemptsEl /*, maxTimeEl */; private SingleSelection limitAttemptsEl, allowCommentEl, allowReviewEl, showSolutionEl; + protected final boolean editable; protected final boolean restrictedEdit; private final AbstractPart part; public ItemSessionControlController(UserRequest ureq, WindowControl wControl, - AbstractPart part, boolean restrictedEdit) { + AbstractPart part, boolean restrictedEdit, boolean editable) { super(ureq, wControl, Util.createPackageTranslator(AssessmentTestDisplayController.class, ureq.getLocale())); this.part = part; + this.editable = editable; this.restrictedEdit = restrictedEdit; } @@ -100,13 +102,13 @@ public abstract class ItemSessionControlController extends FormBasicController { } else { limitAttemptsEl.select(attemtpsKeys[0], true); } - limitAttemptsEl.setEnabled(!restrictedEdit); + limitAttemptsEl.setEnabled(!restrictedEdit && editable); maxAttemptsEl.setVisible(limitAttemptsEl.isSelected(0)); - maxAttemptsEl.setEnabled(!restrictedEdit); + maxAttemptsEl.setEnabled(!restrictedEdit && editable); allowCommentEl = uifactory.addRadiosHorizontal("item.session.control.allow.comment", formLayout, yesnoKeys, yesnoValues); allowCommentEl.addActionListener(FormEvent.ONCHANGE); - allowCommentEl.setEnabled(!restrictedEdit); + allowCommentEl.setEnabled(!restrictedEdit && editable); if(itemSessionControl != null && itemSessionControl.getAllowComment() != null && itemSessionControl.getAllowComment().booleanValue()) { allowCommentEl.select(yesnoKeys[0], true); } else { @@ -115,7 +117,7 @@ public abstract class ItemSessionControlController extends FormBasicController { allowReviewEl = uifactory.addRadiosHorizontal("item.session.control.allow.review", formLayout, yesnoKeys, yesnoValues); allowReviewEl.addActionListener(FormEvent.ONCHANGE); - allowReviewEl.setEnabled(!restrictedEdit); + allowReviewEl.setEnabled(!restrictedEdit && editable); if(itemSessionControl != null && itemSessionControl.getAllowReview() != null && itemSessionControl.getAllowReview().booleanValue()) { allowReviewEl.select(yesnoKeys[0], true); } else { @@ -124,7 +126,7 @@ public abstract class ItemSessionControlController extends FormBasicController { showSolutionEl = uifactory.addRadiosHorizontal("item.session.control.show.solution", formLayout, yesnoKeys, yesnoValues); showSolutionEl.addActionListener(FormEvent.ONCHANGE); - showSolutionEl.setEnabled(!restrictedEdit); + showSolutionEl.setEnabled(!restrictedEdit && editable); if(itemSessionControl != null && itemSessionControl.getShowSolution() != null && itemSessionControl.getShowSolution().booleanValue()) { showSolutionEl.select(yesnoKeys[0], true); } else { diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/UnkownItemEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/UnkownItemEditorController.java index 898846d7b965efa6ad669b8032574eebd0c0b86f..baaaf5d7e5a52262f799a276a32a63c712719f55 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/UnkownItemEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/UnkownItemEditorController.java @@ -63,7 +63,7 @@ public class UnkownItemEditorController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - setFormWarning("warning.unkown.assessment.item"); + setFormWarning("warning.alien.assessment.item"); String title = item.getTitle(); uifactory.addStaticTextElement("title", "form.imd.title", title, formLayout); diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/UnkownTestEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/UnkownTestEditorController.java deleted file mode 100644 index 4ebfd0cca935ab06db87be5aac5a89afd28488b9..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/ims/qti21/ui/editor/UnkownTestEditorController.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * <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 org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.form.flexible.FormItemContainer; -import org.olat.core.gui.components.form.flexible.impl.FormBasicController; -import org.olat.core.gui.control.Controller; -import org.olat.core.gui.control.WindowControl; - -/** - * - * Initial date: 11.12.2015<br> - * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com - * - */ -public class UnkownTestEditorController extends FormBasicController { - - public UnkownTestEditorController(UserRequest ureq, WindowControl wControl) { - super(ureq, wControl); - - initForm(ureq); - } - - @Override - protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - setFormTitle("editor.unkown.title"); - // - } - - @Override - protected void doDispose() { - // - } - - @Override - protected void formOK(UserRequest ureq) { - // - } -} 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 5162d1be96630b845fc0ae60795673daa73b0e4e..d5a9e390c8878b64b5960cc2a3a72e2ff5c980a9 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 @@ -117,6 +117,7 @@ tools.export.qpool=$org.olat.ims.qti.editor\:tools.export.qpool tools.import.qpool=$org.olat.ims.qti.editor\:tools.import.qpool tools.import.table=$org.olat.ims.qti.editor\:tools.import.table tools.reload.from.files=Dateien neu laden und im Puffer ersetzen +warning.alien.assessment.item=Dieser Fragetyp kann nicht mit dem OpenOLAT-Editor bearbeitet werden. +warning.alien.assessment.test=Dieser Test kann nicht mit dem OpenOLAT-Editor bearbeitet werden. warning.in.use=Die Ressource wird bereits f\u00FCr Auswertung verwendet. Die Bearbeitung ist begrenzt. warning.feedback.cutvalue=Feedback wird aktiviert sobald bei "Notwendige Punktzahl f\u00FCr 'Bestanden'" eine Punktzahl eingegeben wurde. -warning.unkown.assessment.item=Dieser Fragetyp kann nicht mit dem OpenOLAT-Editor bearbeitet werden. 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 a8e7abef236d8ac657845401859cbe64515b7df9..ea49cecab897fa8df58f54f7c9c909d817b3fa27 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 @@ -117,6 +117,8 @@ tools.export.qpool=$org.olat.ims.qti.editor\:tools.export.qpool tools.import.qpool=$org.olat.ims.qti.editor\:tools.import.qpool tools.import.table=$org.olat.ims.qti.editor\:tools.import.table tools.reload.from.files=Reload files and refresh cache +warning.alien.assessment.item=This question type cannot be processed with the OpenOLAT editor. +warning.alien.assessment.test=This test cannot be processed with the OpenOLAT editor. warning.feedback.cutvalue=The feedback is based on the cut value. You need to define it first. warning.in.use=The resource is already used for assessment purpose. Editing is limited. -warning.unkown.assessment.item=This question type cannot be processed with the OpenOLAT editor. +