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

OO-3198: use the reload flag if the test was changed in the editor

parent 72690cd7
No related branches found
No related tags found
No related merge requests found
...@@ -124,6 +124,16 @@ public class QTI21RuntimeController extends RepositoryEntryRuntimeController { ...@@ -124,6 +124,16 @@ public class QTI21RuntimeController extends RepositoryEntryRuntimeController {
} }
} }
@Override
protected void event(UserRequest ureq, Controller source, Event event) {
if(source instanceof AssessmentTestComposerController) {
if(event == Event.CHANGED_EVENT) {
reloadRuntime = true;
}
}
super.event(ureq, source, event);
}
@Override @Override
protected void event(UserRequest ureq, Component source, Event event) { protected void event(UserRequest ureq, Component source, Event event) {
if(testStatisticLink == source) { if(testStatisticLink == source) {
......
...@@ -417,25 +417,25 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -417,25 +417,25 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
if(event instanceof AssessmentTestEvent) { if(event instanceof AssessmentTestEvent) {
AssessmentTestEvent ate = (AssessmentTestEvent)event; AssessmentTestEvent ate = (AssessmentTestEvent)event;
if(ate == AssessmentTestEvent.ASSESSMENT_TEST_CHANGED_EVENT) { if(ate == AssessmentTestEvent.ASSESSMENT_TEST_CHANGED_EVENT) {
doSaveAssessmentTest(null); doSaveAssessmentTest(ureq, null);
} }
} else if(event instanceof AssessmentTestPartEvent) { } else if(event instanceof AssessmentTestPartEvent) {
AssessmentTestPartEvent atpe = (AssessmentTestPartEvent)event; AssessmentTestPartEvent atpe = (AssessmentTestPartEvent)event;
if(atpe == AssessmentTestPartEvent.ASSESSMENT_TEST_PART_CHANGED_EVENT) { if(atpe == AssessmentTestPartEvent.ASSESSMENT_TEST_PART_CHANGED_EVENT) {
doSaveAssessmentTest(null); doSaveAssessmentTest(ureq, null);
} }
} else if(event instanceof AssessmentSectionEvent) { } else if(event instanceof AssessmentSectionEvent) {
AssessmentSectionEvent ase = (AssessmentSectionEvent)event; AssessmentSectionEvent ase = (AssessmentSectionEvent)event;
if(AssessmentSectionEvent.ASSESSMENT_SECTION_CHANGED.equals(ase.getCommand())) { if(AssessmentSectionEvent.ASSESSMENT_SECTION_CHANGED.equals(ase.getCommand())) {
doSaveAssessmentTest(null); doSaveAssessmentTest(ureq, null);
doUpdate(ase.getSection().getIdentifier(), ase.getSection().getTitle()); doUpdate(ase.getSection().getIdentifier(), ase.getSection().getTitle());
doSaveManifest(); doSaveManifest();
} }
} else if(event instanceof AssessmentItemEvent) { } else if(event instanceof AssessmentItemEvent) {
AssessmentItemEvent aie = (AssessmentItemEvent)event; AssessmentItemEvent aie = (AssessmentItemEvent)event;
if(AssessmentItemEvent.ASSESSMENT_ITEM_CHANGED.equals(aie.getCommand())) { if(AssessmentItemEvent.ASSESSMENT_ITEM_CHANGED.equals(aie.getCommand())) {
assessmentChanged(); assessmentChanged(ureq);
doSaveAssessmentTest(null); doSaveAssessmentTest(ureq, null);
doUpdate(aie.getAssessmentItemRef().getIdentifier(), aie.getAssessmentItem().getTitle()); doUpdate(aie.getAssessmentItemRef().getIdentifier(), aie.getAssessmentItem().getTitle());
doSaveManifest(); doSaveManifest();
} else if(AssessmentItemEvent.ASSESSMENT_ITEM_METADATA_CHANGED.equals(aie.getCommand())) { } else if(AssessmentItemEvent.ASSESSMENT_ITEM_METADATA_CHANGED.equals(aie.getCommand())) {
...@@ -535,7 +535,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -535,7 +535,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
} else if(copyLink == source) { } else if(copyLink == source) {
doCopy(ureq); doCopy(ureq);
} else if(reloadInCacheLink == source) { } else if(reloadInCacheLink == source) {
doForceReloadFiles(); doForceReloadFiles(ureq);
} }
} }
...@@ -643,7 +643,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -643,7 +643,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
} }
//quickly saved the assessment test with wrong parent //quickly saved the assessment test with wrong parent
doSaveAssessmentTest(null); doSaveAssessmentTest(ureq, null);
//reload a clean instance //reload a clean instance
updateTreeModel(false); updateTreeModel(false);
...@@ -761,7 +761,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -761,7 +761,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
if(firstItemId != null) { if(firstItemId != null) {
//persist metadata //persist metadata
doSaveAssessmentTest(flyingObjects); doSaveAssessmentTest(ureq, flyingObjects);
doSaveManifest(); doSaveManifest();
updateTreeModel(false); updateTreeModel(false);
...@@ -809,7 +809,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -809,7 +809,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
if(firstItemId != null) { if(firstItemId != null) {
//persist metadata //persist metadata
doSaveAssessmentTest(flyingObjects); doSaveAssessmentTest(ureq, flyingObjects);
doSaveManifest(); doSaveManifest();
updateTreeModel(false); updateTreeModel(false);
...@@ -880,7 +880,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -880,7 +880,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
AssessmentTestFactory.appendAssessmentSection(translate("new.section"), testPart); AssessmentTestFactory.appendAssessmentSection(translate("new.section"), testPart);
//save the test //save the test
doSaveAssessmentTest(null); doSaveAssessmentTest(ureq, null);
//reload the test //reload the test
updateTreeModel(false); updateTreeModel(false);
...@@ -925,7 +925,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -925,7 +925,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
URI testUri = resolvedAssessmentTest.getTestLookup().getSystemId(); URI testUri = resolvedAssessmentTest.getTestLookup().getSystemId();
File testFile = new File(testUri); File testFile = new File(testUri);
qtiService.updateAssesmentObject(testFile, resolvedAssessmentTest); qtiService.updateAssesmentObject(testFile, resolvedAssessmentTest);
assessmentChanged(); assessmentChanged(ureq);
//reload the test //reload the test
updateTreeModel(false); updateTreeModel(false);
...@@ -961,7 +961,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -961,7 +961,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
Map<AssessmentItemRef,AssessmentItem> flyingObjects = Collections.singletonMap(itemRef, assessmentItem); Map<AssessmentItemRef,AssessmentItem> flyingObjects = Collections.singletonMap(itemRef, assessmentItem);
doSaveAssessmentTest(flyingObjects); doSaveAssessmentTest(ureq, flyingObjects);
manifestBuilder.appendAssessmentItem(itemFile.getName()); manifestBuilder.appendAssessmentItem(itemFile.getName());
doSaveManifest(); doSaveManifest();
...@@ -1006,8 +1006,8 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -1006,8 +1006,8 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
* *
* @param flyingObjects A list of assessmentItems which are not part of the test but will be. * @param flyingObjects A list of assessmentItems which are not part of the test but will be.
*/ */
private void doSaveAssessmentTest(Map<AssessmentItemRef,AssessmentItem> flyingObjects) { private void doSaveAssessmentTest(UserRequest ureq, Map<AssessmentItemRef,AssessmentItem> flyingObjects) {
assessmentChanged(); assessmentChanged(ureq);
recalculateMaxScoreAssessmentTest(flyingObjects); recalculateMaxScoreAssessmentTest(flyingObjects);
assessmentTestBuilder.build(); assessmentTestBuilder.build();
URI testURI = resolvedAssessmentTest.getTestLookup().getSystemId(); URI testURI = resolvedAssessmentTest.getTestLookup().getSystemId();
...@@ -1232,7 +1232,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -1232,7 +1232,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
section.getSectionParts().add(itemRef); section.getSectionParts().add(itemRef);
Map<AssessmentItemRef, AssessmentItem> flyingObjects = Collections.singletonMap(itemRef, copiedAssessmentItem); Map<AssessmentItemRef, AssessmentItem> flyingObjects = Collections.singletonMap(itemRef, copiedAssessmentItem);
doSaveAssessmentTest(flyingObjects); doSaveAssessmentTest(ureq, flyingObjects);
manifestBuilder.appendAssessmentItem(itemFile.getName()); manifestBuilder.appendAssessmentItem(itemFile.getName());
doSaveManifest(); doSaveManifest();
} catch (Exception e) { } catch (Exception e) {
...@@ -1250,9 +1250,9 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -1250,9 +1250,9 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
} }
} }
private void doForceReloadFiles() { private void doForceReloadFiles(UserRequest ureq) {
updateTreeModel(true); updateTreeModel(true);
assessmentChanged(); assessmentChanged(ureq);
} }
private void doConfirmDelete(UserRequest ureq) { private void doConfirmDelete(UserRequest ureq) {
...@@ -1301,21 +1301,21 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -1301,21 +1301,21 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
private void doDelete(UserRequest ureq, TreeNode selectedNode) { private void doDelete(UserRequest ureq, TreeNode selectedNode) {
Object uobject = selectedNode.getUserObject(); Object uobject = selectedNode.getUserObject();
if(uobject instanceof TestPart) { if(uobject instanceof TestPart) {
doDeleteTestPart((TestPart)uobject); doDeleteTestPart(ureq, (TestPart)uobject);
} else if(uobject instanceof AssessmentSection) { } else if(uobject instanceof AssessmentSection) {
AssessmentSection section = (AssessmentSection)uobject; AssessmentSection section = (AssessmentSection)uobject;
if(checkAtLeastOneSection(section)) { if(checkAtLeastOneSection(section)) {
doDeleteAssessmentSection(section); doDeleteAssessmentSection(ureq, section);
} else { } else {
showWarning("warning.atleastonesection"); showWarning("warning.atleastonesection");
} }
} else if(uobject instanceof AssessmentItemRef) { } else if(uobject instanceof AssessmentItemRef) {
doDeleteAssessmentItemRef((AssessmentItemRef)uobject); doDeleteAssessmentItemRef(ureq, (AssessmentItemRef)uobject);
} else { } else {
return;//cannot delete test or test part return;//cannot delete test or test part
} }
doSaveAssessmentTest(null); doSaveAssessmentTest(ureq, null);
doSaveManifest(); doSaveManifest();
updateTreeModel(false); updateTreeModel(false);
...@@ -1341,7 +1341,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -1341,7 +1341,7 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
return true; return true;
} }
private void doDeleteAssessmentItemRef(AssessmentItemRef itemRef) { private void doDeleteAssessmentItemRef(UserRequest ureq, AssessmentItemRef itemRef) {
ResourceType resource = getResourceType(itemRef); ResourceType resource = getResourceType(itemRef);
if(resource != null) { if(resource != null) {
manifestBuilder.remove(resource); manifestBuilder.remove(resource);
...@@ -1363,19 +1363,19 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -1363,19 +1363,19 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
} }
} }
if(deleted) { if(deleted) {
assessmentChanged(); assessmentChanged(ureq);
} }
logAudit(removed + " " + deleted + " removed item ref", null); logAudit(removed + " " + deleted + " removed item ref", null);
} }
private void doDeleteAssessmentSection(AssessmentSection assessmentSection) { private void doDeleteAssessmentSection(UserRequest ureq, AssessmentSection assessmentSection) {
List<SectionPart> parts = new ArrayList<>(assessmentSection.getSectionParts()); List<SectionPart> parts = new ArrayList<>(assessmentSection.getSectionParts());
for(SectionPart part:parts) { for(SectionPart part:parts) {
if(part instanceof AssessmentItemRef) { if(part instanceof AssessmentItemRef) {
doDeleteAssessmentItemRef((AssessmentItemRef)part); doDeleteAssessmentItemRef(ureq, (AssessmentItemRef)part);
} else if(part instanceof AssessmentSection) { } else if(part instanceof AssessmentSection) {
doDeleteAssessmentSection((AssessmentSection)part); doDeleteAssessmentSection(ureq, (AssessmentSection)part);
} }
} }
...@@ -1386,20 +1386,21 @@ public class AssessmentTestComposerController extends MainLayoutBasicController ...@@ -1386,20 +1386,21 @@ public class AssessmentTestComposerController extends MainLayoutBasicController
} }
} }
private void doDeleteTestPart(TestPart testPart) { private void doDeleteTestPart(UserRequest ureq, TestPart testPart) {
List<AssessmentSection> sections = new ArrayList<>(testPart.getAssessmentSections()); List<AssessmentSection> sections = new ArrayList<>(testPart.getAssessmentSections());
for(AssessmentSection section:sections) { for(AssessmentSection section:sections) {
doDeleteAssessmentSection(section); doDeleteAssessmentSection(ureq, section);
} }
testPart.getParent().getTestParts().remove(testPart); testPart.getParent().getTestParts().remove(testPart);
} }
private void assessmentChanged() { private void assessmentChanged(UserRequest ureq) {
assessmentChanged = true; assessmentChanged = true;
if(!deleteAuthorSesssion) { if(!deleteAuthorSesssion) {
deleteAuthorSesssion = true;//delete sessions only once deleteAuthorSesssion = true;//delete sessions only once
qtiService.deleteAuthorAssessmentTestSession(testEntry); qtiService.deleteAuthorAssessmentTestSession(testEntry);
fireEvent(ureq, Event.CHANGED_EVENT);
} }
} }
......
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