Skip to content
Snippets Groups Projects
Commit bd881d75 authored by srosse's avatar srosse
Browse files

Merge remote-tracking branch 'origin/OpenOLAT_12.5' into OpenOLAT_13.2

parents 5e0401fa f77c75cc
No related branches found
No related tags found
No related merge requests found
......@@ -74,7 +74,7 @@
<version.selenium>3.13.0</version.selenium>
<version.drone>2.5.1</version.drone>
<activemq.version>5.15.8</activemq.version>
<qtiworks.version>1.0.15</qtiworks.version>
<qtiworks.version>1.0.17</qtiworks.version>
<!-- properties for testing and Q&A -->
<!-- by default no tests are executed so far (April 2011). Use appropriate profiles and properties on the command line -->
......@@ -1375,7 +1375,7 @@
<Implementation-Build>${buildNumber}</Implementation-Build>
</manifestEntries>
</archive>
<warSourceExcludes>**/*.pxm, **/*.psd, **/*.scss, **/*.sh, static/bootstrap/**, **/*.README</warSourceExcludes>
<warSourceExcludes>**/*.pxm, **/*.psd, **/*.sh, static/bootstrap/**, **/*.README</warSourceExcludes>
<webResources>
<resource>
<directory>src/main/webapp</directory>
......
......@@ -27,7 +27,8 @@ package org.olat.course.nodes.iq;
import java.io.File;
import java.text.DateFormat;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
......@@ -222,25 +223,34 @@ public class IQRunController extends BasicController implements GenericEventList
Formatter formatter = Formatter.getInstance(ureq.getLocale());
ImsRepositoryResolver resolver = new ImsRepositoryResolver(referenceTestEntry);
QTIChangeLogMessage[] qtiChangeLog = resolver.getDocumentChangeLog();
StringBuilder qtiChangelog = new StringBuilder();
if(qtiChangeLog.length>0){
List<QTIChangeLogMessage> qtiChangeLogList = new ArrayList<>(qtiChangeLog.length);
for (int i=qtiChangeLog.length; i-->0 ; ) {
if(qtiChangeLog[i] != null) {
qtiChangeLogList.add(qtiChangeLog[i]);
}
}
//there are resource changes
Arrays.sort(qtiChangeLog);
for (int i = qtiChangeLog.length-1; i >= 0 ; i--) {
Collections.sort(qtiChangeLogList);
for (int i = qtiChangeLogList.size()-1; i >= 0 ; i--) {
QTIChangeLogMessage qtiChangeLogEntry = qtiChangeLogList.get(i);
//show latest change first
if(!showAll && qtiChangeLog[i].isPublic()){
if(!showAll && qtiChangeLogEntry.isPublic()){
//logged in person is a normal user, hence public messages only
Date msgDate = new Date(qtiChangeLog[i].getTimestmp());
Date msgDate = new Date(qtiChangeLogEntry.getTimestmp());
qtiChangelog.append("\nChange date: ").append(formatter.formatDateAndTime(msgDate)).append("\n");
String msg = StringHelper.escapeHtml(qtiChangeLog[i].getLogMessage());
String msg = StringHelper.escapeHtml(qtiChangeLogEntry.getLogMessage());
qtiChangelog.append(msg);
qtiChangelog.append("\n********************************\n");
}else if (showAll){
//logged in person is an author, olat admin, owner, show all messages
Date msgDate = new Date(qtiChangeLog[i].getTimestmp());
Date msgDate = new Date(qtiChangeLogEntry.getTimestmp());
qtiChangelog.append("\nChange date: ").append(formatter.formatDateAndTime(msgDate)).append("\n");
String msg = StringHelper.escapeHtml(qtiChangeLog[i].getLogMessage());
String msg = StringHelper.escapeHtml(qtiChangeLogEntry.getLogMessage());
qtiChangelog.append(msg);
qtiChangelog.append("\n********************************\n");
}//else non public messages are not shown to normal user
......
......@@ -35,6 +35,7 @@ import uk.ac.ed.ph.jqtiplus.node.item.ModalFeedback;
import uk.ac.ed.ph.jqtiplus.node.item.interaction.Interaction;
import uk.ac.ed.ph.jqtiplus.node.result.SessionStatus;
import uk.ac.ed.ph.jqtiplus.node.test.AbstractPart;
import uk.ac.ed.ph.jqtiplus.node.test.AssessmentItemRef;
import uk.ac.ed.ph.jqtiplus.node.test.AssessmentSection;
import uk.ac.ed.ph.jqtiplus.node.test.AssessmentTest;
import uk.ac.ed.ph.jqtiplus.node.test.TestPart;
......@@ -174,9 +175,16 @@ public class AssessmentTestComponent extends AssessmentObjectComponent {
}
try {
URI itemSystemId = itemNode.getItemSystemId();
AssessmentItemRef itemRef = getResolvedAssessmentTest().getItemRefsByIdentifierMap()
.get(itemNode.getKey().getIdentifier());
if(itemRef == null) {
return false;
}
ResolvedAssessmentItem resolvedAssessmentItem = getResolvedAssessmentTest()
.getResolvedAssessmentItemBySystemIdMap().get(itemSystemId);
.getResolvedAssessmentItem(itemRef);
if(resolvedAssessmentItem == null) {
return false;
}
AssessmentItem assessmentItem = resolvedAssessmentItem.getRootNodeLookup().extractIfSuccessful();
if(assessmentItem.getAdaptive()) {
return true;
......
......@@ -25,7 +25,6 @@ import static org.olat.ims.qti21.ui.components.AssessmentRenderFunctions.testFee
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
......@@ -70,6 +69,7 @@ import uk.ac.ed.ph.jqtiplus.node.content.variable.RubricBlock;
import uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem;
import uk.ac.ed.ph.jqtiplus.node.item.template.declaration.TemplateDeclaration;
import uk.ac.ed.ph.jqtiplus.node.outcome.declaration.OutcomeDeclaration;
import uk.ac.ed.ph.jqtiplus.node.test.AssessmentItemRef;
import uk.ac.ed.ph.jqtiplus.node.test.AssessmentSection;
import uk.ac.ed.ph.jqtiplus.node.test.NavigationMode;
import uk.ac.ed.ph.jqtiplus.node.test.TestFeedback;
......@@ -380,17 +380,23 @@ public class AssessmentTestComponentRenderer extends AssessmentObjectComponentRe
private void renderTestItemBody(AssessmentRenderer renderer, StringOutput sb, AssessmentTestComponent component, TestPlanNode itemNode,
URLBuilder ubu, Translator translator, RenderingRequest options) {
final ItemSessionState itemSessionState = component.getItemSessionState(itemNode.getKey());
URI itemSystemId = itemNode.getItemSystemId();
AssessmentItemRef itemRef = component.getResolvedAssessmentTest()
.getItemRefsByIdentifierMap().get(itemNode.getKey().getIdentifier());
if(itemRef == null) {
log.error("Missing assessment item ref: " + itemNode.getKey());
renderMissingItem(sb, translator);
return;
}
ResolvedAssessmentItem resolvedAssessmentItem = component.getResolvedAssessmentTest()
.getResolvedAssessmentItemBySystemIdMap().get(itemSystemId);
.getResolvedAssessmentItem(itemRef);
if(resolvedAssessmentItem == null) {
log.error("Missing assessment item: " + itemSystemId);
log.error("Missing assessment item: " + itemNode.getKey());
renderMissingItem(sb, translator);
return;
}
final ItemSessionState itemSessionState = component.getItemSessionState(itemNode.getKey());
final AssessmentItem assessmentItem = resolvedAssessmentItem.getRootNodeLookup().extractIfSuccessful();
sb.append("<div class='o_assessmentitem_wrapper'>");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment