diff --git a/src/main/java/org/olat/ims/qti/editor/QTIEditorMainController.java b/src/main/java/org/olat/ims/qti/editor/QTIEditorMainController.java index 0ed8a41855be95efe9f457e3ea22d146060ae1de..d307c2b76ab9e3e9c947ed45fee2e6c5ff1d8fa6 100644 --- a/src/main/java/org/olat/ims/qti/editor/QTIEditorMainController.java +++ b/src/main/java/org/olat/ims/qti/editor/QTIEditorMainController.java @@ -135,6 +135,7 @@ import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryManager; import org.olat.repository.RepositoryService; import org.olat.resource.references.Reference; +import org.olat.resource.references.ReferenceManager; import org.olat.user.UserManager; import org.springframework.beans.factory.annotation.Autowired; @@ -266,6 +267,8 @@ public class QTIEditorMainController extends MainLayoutBasicController implement @Autowired private RepositoryManager repositoryManager; @Autowired + private ReferenceManager referenceManager; + @Autowired private RepositoryService repositoryService; @Autowired private QTIQPoolServiceProvider qtiQpoolServiceProvider; @@ -279,18 +282,27 @@ public class QTIEditorMainController extends MainLayoutBasicController implement try { ICourse course = CourseFactory.loadCourse(ref.getSource().getResourceableId()); CourseNode courseNode = course.getEditorTreeModel().getCourseNode(ref.getUserdata()); - String repositorySoftKey = (String) courseNode.getModuleConfiguration().get(IQEditController.CONFIG_KEY_REPOSITORY_SOFTKEY); - //check softly that the setting if ok - if(qtiEntry.getSoftkey().equals(repositorySoftKey)) { - restrictedEdit = ((CoordinatorManager.getInstance().getCoordinator().getLocker().isLocked(course, null)) - || qtiResultManager.countResults(course.getResourceableId(), courseNode.getIdent(), qtiEntry.getKey()) > 0) ? true : false; + if(courseNode == null) { + courseNode = course.getRunStructure().getNode(ref.getUserdata()); + } + + if(courseNode == null) { + referenceManager.delete(ref); } else { - logError("The course node soft key doesn't match the test/survey sotf key. Course resourceable id: " - + course.getResourceableId() + " (" + course.getCourseTitle() + ") course node: " + courseNode.getIdent() + " (" + courseNode.getShortTitle() + " )" - + " soft key of test/survey in course: " + repositorySoftKey + " test/survey soft key: " + qtiEntry.getSoftkey(), null); + String repositorySoftKey = (String) courseNode.getModuleConfiguration().get(IQEditController.CONFIG_KEY_REPOSITORY_SOFTKEY); + //check softly that the setting if ok + if(qtiEntry.getSoftkey().equals(repositorySoftKey)) { + restrictedEdit = ((CoordinatorManager.getInstance().getCoordinator().getLocker().isLocked(course, null)) + || qtiResultManager.countResults(course.getResourceableId(), courseNode.getIdent(), qtiEntry.getKey()) > 0) ? true : false; + } else { + logError("The course node soft key doesn't match the test/survey sotf key. Course resourceable id: " + + course.getResourceableId() + " (" + course.getCourseTitle() + ") course node: " + courseNode.getIdent() + " (" + courseNode.getShortTitle() + " )" + + " soft key of test/survey in course: " + repositorySoftKey + " test/survey soft key: " + qtiEntry.getSoftkey(), null); + } } } catch(CorruptedCourseException e) { logError("", e); + referenceManager.delete(ref); } } if(restrictedEdit) {