From 71d4938833444618b95f06720b13e03039a597f3 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Tue, 21 Jun 2016 15:17:02 +0200 Subject: [PATCH] OO-1593: fix background image with spaces... --- .../FIBAssessmentItemBuilder.java | 3 ++- .../qti21/ui/_i18n/LocalStrings_de.properties | 4 +-- .../AssessmentObjectComponentRenderer.java | 7 +++-- .../AssessmentTestComponentRenderer.java | 4 +-- .../editor/_i18n/LocalStrings_de.properties | 2 ++ .../interactions/HotspotEditorController.java | 26 ++++++++++--------- .../interactions/_content/hotspots.html | 2 +- .../interactions/_content/hotspot_item.html | 2 +- 8 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java b/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java index b3a785bec1f..595a5b43bd6 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java @@ -109,7 +109,8 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { } private static AssessmentItem createAssessmentItem(EntryType type) { - AssessmentItem assessmentItem = AssessmentItemFactory.createAssessmentItem(QTI21QuestionType.fib, "FIB"); + String title = (type == EntryType.text) ? "Gap text" : "Numerical input"; + AssessmentItem assessmentItem = AssessmentItemFactory.createAssessmentItem(QTI21QuestionType.fib, title); //define the response Identifier responseDeclarationId = Identifier.assumedLegal("RESPONSE_1"); 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 caa815ad6d0..55528359aad 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 @@ -6,12 +6,12 @@ assessment.item.status.answered=Antwortet assessment.item.status.finished=Beendet assessment.item.status.modelSolution=Musterl\u00F6sung assessment.item.status.needsAttention=Vorsichtig -assessment.item.status.notAnswered=Nicht antwortet +assessment.item.status.notAnswered=Nicht beantwortet assessment.item.status.notSeen=Nicht gesehen assessment.item.status.review=\u00DCberpr\u00FCfung assessment.item.status.reviewInvalidAnswer=\u00DCberpr\u00FCfung (ung\u00FCltige Antwort) assessment.item.status.reviewNot=Nicht \u00FCberpr\u00FCfbar -assessment.item.status.reviewNotAnswered=\u00DCberpr\u00FCfung (nicht antwortet) +assessment.item.status.reviewNotAnswered=\u00DCberpr\u00FCfung (nicht beantwortet) assessment.item.status.reviewNotSeen=\u00DCberpr\u00FCfung (nicht gesehen) assessment.section.config=Sektion assessment.solution.hide=L\u00F6sung verbergen diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java index 48640f47fb8..135fcebbd90 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java @@ -1156,9 +1156,12 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent final NavigationMode navigationMode = currentTestPart.getNavigationMode(); boolean nextItemAllowed = navigationMode == NavigationMode.NONLINEAR; - boolean advanceTestItemAllowed = navigationMode == NavigationMode.LINEAR && testSessionController.mayAdvanceItemLinear(); + boolean advanceTestItemAllowed = navigationMode == NavigationMode.LINEAR + && testSessionController.getTestSessionState().getCurrentItemKey() != null//mayAdvanceItemLinear assert on the current selected item + && testSessionController.mayAdvanceItemLinear(); boolean testPartNavigationAllowed = navigationMode == NavigationMode.NONLINEAR; - boolean endTestPartAllowed = navigationMode == NavigationMode.LINEAR && testSessionController.mayEndCurrentTestPart(); + boolean endTestPartAllowed = navigationMode == NavigationMode.LINEAR + && testSessionController.mayEndCurrentTestPart(); return new RenderingRequest(false, false, testPartNavigationAllowed, advanceTestItemAllowed, nextItemAllowed, endTestPartAllowed); } diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java index 3d6de7525b2..1a6b948528b 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java @@ -233,8 +233,8 @@ public class AssessmentTestComponentRenderer extends AssessmentObjectComponentRe Component submit = component.getQtiItem().getSubmitButton().getComponent(); submit.getHTMLRendererSingleton().render(renderer.getRenderer(), sb, submit, ubu, translator, new RenderResult(), null); } - //advanceTestItemAllowed - if(options.isAdvanceTestItemAllowed()) { + //advanceTestItemAllowed /* && testSessionState.getCurrentItemKey() != null && testSessionController.mayAdvanceItemLinear() */ + if(options.isAdvanceTestItemAllowed() ) {//TODO need to find if there is a next question String title = translator.translate("assessment.test.nextQuestion"); renderControl(sb, component, title, "o_sel_next_question", new NameValuePair("cid", Event.finishItem.name())); } 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 97091f7ea83..3e3343c5d8b 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 @@ -69,6 +69,7 @@ form.score.answer.correct=Korrekt form.score.answer.points=Punkte form.score.answer.summary=Antwort \u00DCberblick form.score.assessment.all.correct=Alle korrekten Antworten +form.score.assessment.mode=Bewertungsmethode form.score.assessment.per.answer=Punkte pro Antwort form.section.selection_pre=Anzahl Fragen in dieser Sektion form.section.selection_pre.hover=Legen Sie fest ob alle oder nur eine bestimmte Anzahl Fragen im Test angezeigt werden sollen. @@ -99,6 +100,7 @@ new.mc=Multiple Choice new.rectangle=Viereck new.sc=Single Choice new.section=Sektion +new.spots=Spots hinzuf\u00FCgen preview=Vorschau time.limit.max=Zeitbeschr\u00E4nkung (Minute) title.add=$org.olat.ims.qti.editor\:title.add diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java index 3ebe72e4123..8c47f20188e 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java @@ -140,10 +140,21 @@ public class HotspotEditorController extends FormBasicController { formLayout, ureq.getUserSession(), getWindowControl()); textEl.addActionListener(FormEvent.ONCLICK); + initialBackgroundImage = getCurrentBackground(); + backgroundEl = uifactory.addFileElement(getWindowControl(), "form.imd.background", "form.imd.background", formLayout); + backgroundEl.setEnabled(!restrictedEdit); + if(initialBackgroundImage != null) { + backgroundEl.setInitialFile(initialBackgroundImage); + } + backgroundEl.addActionListener(FormEvent.ONCHANGE); + backgroundEl.setDeleteEnabled(true); + backgroundEl.limitToMimeType(mimeTypes, null, null); + //responses String page = velocity_root + "/hotspots.html"; hotspotsCont = FormLayoutContainer.createCustomFormLayout("answers", getTranslator(), page); hotspotsCont.getFormItemComponent().addListener(this); + hotspotsCont.setLabel("new.spots", null); hotspotsCont.setRootForm(mainForm); hotspotsCont.contextPut("mapperUri", backgroundMapperUri); hotspotsCont.contextPut("restrictedEdit", restrictedEdit); @@ -157,24 +168,15 @@ public class HotspotEditorController extends FormBasicController { newRectButton = uifactory.addFormLink("new.rectangle", "new.rectangle", null, hotspotsCont, Link.BUTTON); newRectButton.setIconLeftCSS("o_icon o_icon-lg o_icon_rectangle"); newRectButton.setVisible(!restrictedEdit); + + updateBackground(); String[] emptyKeys = new String[0]; correctHotspotsEl = uifactory.addCheckboxesHorizontal("form.imd.correct.spots", formLayout, emptyKeys, emptyKeys); correctHotspotsEl.setEnabled(!restrictedEdit); correctHotspotsEl.addActionListener(FormEvent.ONCHANGE); rebuildWrappersAndCorrectSelection(); - - initialBackgroundImage = getCurrentBackground(); - backgroundEl = uifactory.addFileElement(getWindowControl(), "form.imd.background", "form.imd.background", formLayout); - backgroundEl.setEnabled(!restrictedEdit); - if(initialBackgroundImage != null) { - backgroundEl.setInitialFile(initialBackgroundImage); - } - backgroundEl.addActionListener(FormEvent.ONCHANGE); - backgroundEl.setDeleteEnabled(true); - backgroundEl.limitToMimeType(mimeTypes, null, null); - updateBackground(); - + // Submit Button FormLayoutContainer buttonsContainer = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); buttonsContainer.setRootForm(mainForm); diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/hotspots.html b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/hotspots.html index bdc6e243ada..ddb550d5cca 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/hotspots.html +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/hotspots.html @@ -1,7 +1,7 @@ #if($r.visible("new.circle")) <div class="btn-group small">$r.render("new.circle") $r.render("new.rectangle")</div> #end -<div id="o_qti_hotspots_edit" style="position:relative; #if($width && !${width.isEmpty()}) width:${width}px; #end #if($height && !${height.isEmpty()}) height:${height}px; #end #if($filename && !${filename.isEmpty()}) background-image: url($mapperUri/$filename); #end"> +<div id="o_qti_hotspots_edit" style="position:relative; #if($width && !${width.isEmpty()}) width:${width}px; #end #if($height && !${height.isEmpty()}) height:${height}px; #end #if($filename && !${filename.isEmpty()}) background-image: url('$mapperUri/$filename'); #end"> #foreach($hotspot in $hotspots) <input type="hidden" id="${hotspot.identifier}_shape" name="${hotspot.identifier}_shape" value="${hotspot.shape}" /> <input type="hidden" id="${hotspot.identifier}_coords" name="${hotspot.identifier}_coords" value="${hotspot.coords}" /> diff --git a/src/main/java/org/olat/ims/qti21/ui/statistics/interactions/_content/hotspot_item.html b/src/main/java/org/olat/ims/qti21/ui/statistics/interactions/_content/hotspot_item.html index bea98b08177..981c8c291cc 100644 --- a/src/main/java/org/olat/ims/qti21/ui/statistics/interactions/_content/hotspot_item.html +++ b/src/main/java/org/olat/ims/qti21/ui/statistics/interactions/_content/hotspot_item.html @@ -1,5 +1,5 @@ <div id="$r.getId('d3mapdiv')"> - <div id='$r.getId("d3mapholder")' class="d3chart" style="position:relative; width:${width}px; height:${height}px; background-color:purple; #if($filename && !${filename.isEmpty()}) background-image: url($mapperUri/$filename); #end"></div> + <div id='$r.getId("d3mapholder")' class="d3chart" style="position:relative; width:${width}px; height:${height}px; background-color:purple; #if($filename && !${filename.isEmpty()}) background-image: url('$mapperUri/$filename'); #end"></div> <script type='text/javascript'> /* <![CDATA[ */ ## data: [['1','CIRCLE',[297,75,44],3],['2','CIRCLE',[218,212,25],1],['3','RECT',[51,53,164,123],0]] -- GitLab