diff --git a/pom.xml b/pom.xml index 34f0b7d39775ac751030f76e52641e8c46855a8b..5d0e4895bf78a37c7a9afd6f953ed6d68779efc8 100644 --- a/pom.xml +++ b/pom.xml @@ -100,6 +100,7 @@ <test.env.instance.id>myolat</test.env.instance.id> <test.env.jmx.rmi.port.0>3000</test.env.jmx.rmi.port.0> <test.env.webdriver.browser>chrome</test.env.webdriver.browser> + <test.env.webdriver.firefox.version></test.env.webdriver.firefox.version> <test.env.webdriver.chrome.version></test.env.webdriver.chrome.version> <test.env.webdriver.chrome.arguments></test.env.webdriver.chrome.arguments> <skipTests>true</skipTests> @@ -1338,6 +1339,7 @@ <test.env.jmx.rmi.port.0>${test.env.jmx.rmi.port.0}</test.env.jmx.rmi.port.0> <arquillian.launch>tomcat-7-managed</arquillian.launch> <webdriver.browser>${test.env.webdriver.browser}</webdriver.browser> + <webdriver.firefox.version>${test.env.webdriver.firefox.version}</webdriver.firefox.version> <webdriver.chrome.version>${test.env.webdriver.chrome.version}</webdriver.chrome.version> <webdriver.chrome.arguments>${test.env.webdriver.chrome.arguments}</webdriver.chrome.arguments> </systemPropertyVariables> diff --git a/src/main/java/org/olat/ims/qti21/manager/QTI21StatisticsManagerImpl.java b/src/main/java/org/olat/ims/qti21/manager/QTI21StatisticsManagerImpl.java index 24701e45fb996f6b05b9c0a58b1e86931753cfb8..b4e8b89994989dce9396e80020ee9b7c00868968 100644 --- a/src/main/java/org/olat/ims/qti21/manager/QTI21StatisticsManagerImpl.java +++ b/src/main/java/org/olat/ims/qti21/manager/QTI21StatisticsManagerImpl.java @@ -112,7 +112,8 @@ public class QTI21StatisticsManagerImpl implements QTI21StatisticsManager { } sb.append(" and asession.lastModified = (select max(a2session.lastModified) from qtiassessmenttestsession a2session") - .append(" where asession.testEntry.key=a2session.testEntry.key and a2session.repositoryEntry.key=asession.repositoryEntry.key"); + .append(" where asession.testEntry.key=a2session.testEntry.key and a2session.repositoryEntry.key=asession.repositoryEntry.key") + .append(" and a2session.exploded=false and a2session.cancelled=false"); if(searchParams.getNodeIdent() != null ) { sb.append(" and a2session.subIdent=asession.subIdent"); } else { diff --git a/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java b/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java index 67c2a398c3d923c7ea306535610e798d02ba0373..7c713bae5f03383437c350772832505e6aa54d04 100644 --- a/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java +++ b/src/main/java/org/olat/ims/qti21/questionimport/CSVToAssessmentItemConverter.java @@ -97,6 +97,7 @@ public class CSVToAssessmentItemConverter { public void parse(String input) { List<String[]> lines = getLines(input); for(String[] line:lines) { + currentLine++; processLine(line); } buildCurrentItem(); diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionTableModel.java b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionTableModel.java index 957c7468deb6692010114d97854b803054ed65f2..58e84e16da80e5c2ff702f68ce1cf5b61c80a228 100644 --- a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionTableModel.java +++ b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionTableModel.java @@ -122,17 +122,19 @@ public class QTI21AssessmentTestSessionTableModel extends DefaultFlexiTableDataM } return ""; } - case open: { - Date finished = session.getTestSession().getFinishTime(); - return finished == null ? Boolean.FALSE : Boolean.TRUE; - } + case open: return Boolean.valueOf(!isTestSessionOpen(session)); case correction: return (lastSession != null && lastSession.equals(session.getTestSession())); - case invalidate: return !session.getTestSession().isCancelled() && !session.getTestSession().isExploded(); + case invalidate: return !isTestSessionOpen(session) && !session.getTestSession().isCancelled() && !session.getTestSession().isExploded(); case tools: return session.getToolsLink(); default: return "ERROR"; } } + private boolean isTestSessionOpen(QTI21AssessmentTestSessionDetails session) { + Date finished = session.getTestSession().getFinishTime(); + return finished == null; + } + private Date getTerminationTime(QTI21AssessmentTestSessionDetails session) { Date endTime = session.getTestSession().getTerminationTime(); if(endTime == null) { 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 b3bbb6a2a875f3c2cd7a62a0d1698add554720a3..940c74a4df13b05295d85a56b3e8603d350b2ff8 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 @@ -144,7 +144,7 @@ interaction.order.target=Ziel invalidate=Annullieren invalidate.overwrite=Annullieren und Resultat \u00FCbertragen invalidate.test.confirm.title=Annullieren -invalidate.test.confirm.text=Wollen Sie den Test Session ung\u00FCltig machen? Die Daten werden nicht gel\u00F6scht. +invalidate.test.confirm.text=Wollen Sie diese Test-Session als ung\u00FCltig markieren? Die Daten werden nicht gel\u00F6scht. item.comment=Kommentar kprim.minus=Falsch kprim.plus=Richtig 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 239e9658f01374716d32c56a5cdb8d75fa22fd8a..f97016f63995085f27ab3b7237c368373e287394 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 @@ -144,7 +144,7 @@ interaction.order.target=Target invalidate=Invalidate invalidate.overwrite=Invalidate and transfer result invalidate.test.confirm.title=Invalidate -invalidate.test.confirm.text=Do you want to invalidate this test session? The date will not be deleted. +invalidate.test.confirm.text=Do you want to mark this test session as invalid? The data will not be deleted. item.comment=Comment kprim.minus=False kprim.plus=True 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 a17019eecc96f189c32d213b8aaaa76f895267a3..8cba37429b84c9ae2cc6fc19e973bb4d4ce98d6b 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 @@ -90,7 +90,7 @@ fib.tolerance.mode.relative.example=Prozent, zum Beispiel 15 oder 99.0 fib.tolerance.mode.relative.help=Die Schranke stellt eine relative Zahl in Prozent dar.\u2028Beispiel\: L\u00F6sung 20, Untere Schranke 10, Obere Schranke 10 → Alle L\u00F6sungen zwischen 18 und 22 sind g\u00FCltig, denn die untere Schranke bedeutet minus 10% (20-2) und die obere Schranke plus 10% (20+2). fib.tolerance.up=Obere Schranke file=Datei -force.inherited.max.attempts=Setzt alle unter "L\u00F6sungsversuche" zu "Vererbt" +force.inherited.max.attempts=Anzahl L\u00F6sungsversuche an alle Unterelemente (Fragen, Sektionen) vererben form.choice=Auswahl form.drawing=Zeichnen form.essay=Freitext 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 53202636e26ce76327459d7196997aff2b0613e0..73c88a05be274d4384259ab222a51e0848b6fa97 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 @@ -90,7 +90,7 @@ fib.tolerance.mode.relative.example=Percentage, example 15 or 99.0 fib.tolerance.mode.relative.help=The solution is accepted until a lower and an upper bound. The bound is a relative number in percent. Example\: Solution 20, lower bound 10, upper bound 10 → all solutions between 18 and 22 are correct, as the lower bound means minus 10% (20-2) and the upper bound plus 10% (20+2). fib.tolerance.up=Upper bound file=File -force.inherited.max.attempts=Set all under "Number of attempts" to inherit +force.inherited.max.attempts=Inherit number of attempts to all sub-elements (sections, questions) form.choice=Choice form.drawing=Drawing form.essay=Essay diff --git a/src/test/resources/arquillian.xml b/src/test/resources/arquillian.xml index c2667baa98ff5397688bd864f7dab35de62fe77f..f656a58437d8e95cd593cd1915c1e90663339a3b 100644 --- a/src/test/resources/arquillian.xml +++ b/src/test/resources/arquillian.xml @@ -28,6 +28,7 @@ <property name="chromeDriverBinary">target/drone/675a673c111fdcc9678d11df0e69b334/chromedriver</property> <property name="firefoxDriverBinary">target/drone/ce03addb1fc8c24900011f90fc80f3c1/geckodriver</property> --> + <property name="firefoxDriverVersion">${webdriver.firefox.version:v0.27.0}</property> <property name="firefoxUserPreferences">src/test/profile/firefox/prefs.js</property> <property name="chromeDriverVersion">${webdriver.chrome.version:84.0.4147.30}</property> <property name="chromeArguments">${webdriver.chrome.arguments}</property>