diff --git a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java index d6b0534c3b1487ccb47f0e09f10662ba961d8485..b46cea2ceeb8a3e77d5ef347ef31e51dcfbbbd45 100644 --- a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java +++ b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java @@ -42,7 +42,9 @@ import org.olat.core.gui.control.generic.iframe.IFrameDisplayController; import org.olat.core.gui.media.MediaResource; import org.olat.core.gui.media.NotFoundMediaResource; import org.olat.core.gui.translator.Translator; +import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; +import org.olat.core.id.UserConstants; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; @@ -785,7 +787,8 @@ public class QTI21AssessmentRunController extends BasicController implements Gen CourseEnvironment courseEnv, CourseNode courseNode, RepositoryEntry testEntry, Date timestamp, Locale locale) { MailBundle bundle = new MailBundle(); bundle.setToId(candidateSession.getIdentity()); - String fullname = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(candidateSession.getIdentity()); + Identity assessedIdentity = candidateSession.getIdentity(); + String fullname = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(assessedIdentity); Date assessedDate = candidateSession.getFinishTime() == null ? timestamp : candidateSession.getFinishTime(); String[] args = new String[] { @@ -796,7 +799,12 @@ public class QTI21AssessmentRunController extends BasicController implements Gen testEntry.getDisplayname(), // {4} fullname, // {5} Formatter.getInstance(locale) - .formatDateAndTime(assessedDate) // {6} + .formatDateAndTime(assessedDate), // {6} + assessedIdentity.getName(), // {7} + assessedIdentity.getUser() + .getProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, locale), // {8} + assessedIdentity.getUser() + .getProperty(UserConstants.INSTITUTIONALNAME, locale), // {9} }; Translator translator = Util.createPackageTranslator(QTI21AssessmentRunController.class, locale); diff --git a/src/main/java/org/olat/ims/qti21/QTI21DeliveryOptions.java b/src/main/java/org/olat/ims/qti21/QTI21DeliveryOptions.java index 745c9dde45c684c5b4be500da0a582659c5eb791..c7b5e0e969f3e34a38cc701da39b3bae6ea2ec63 100644 --- a/src/main/java/org/olat/ims/qti21/QTI21DeliveryOptions.java +++ b/src/main/java/org/olat/ims/qti21/QTI21DeliveryOptions.java @@ -227,7 +227,7 @@ public class QTI21DeliveryOptions { defaultSettings.displayScoreProgress = false; defaultSettings.displayQuestionProgress = false; defaultSettings.hideFeedbacks = false; - defaultSettings.hideLms = false; + defaultSettings.hideLms = true; defaultSettings.showMenu = true; defaultSettings.showTitles = true; defaultSettings.personalNotes = false; diff --git a/src/main/java/org/olat/ims/qti21/ui/AssessmentEntryOutcomesListener.java b/src/main/java/org/olat/ims/qti21/ui/AssessmentEntryOutcomesListener.java index a8077ea5be0e9d226c2500b1099159311c14914d..f9c3c3bfc4d2ff3b81f77cde717a17ff3c4bf1a4 100644 --- a/src/main/java/org/olat/ims/qti21/ui/AssessmentEntryOutcomesListener.java +++ b/src/main/java/org/olat/ims/qti21/ui/AssessmentEntryOutcomesListener.java @@ -26,6 +26,8 @@ import java.util.concurrent.atomic.AtomicBoolean; import org.olat.core.CoreSpringFactory; import org.olat.core.gui.translator.Translator; +import org.olat.core.id.Identity; +import org.olat.core.id.UserConstants; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.Formatter; import org.olat.core.util.Util; @@ -80,7 +82,8 @@ public class AssessmentEntryOutcomesListener implements OutcomesListener { DigitalSignatureOptions options, Date timestamp, Locale locale) { MailBundle bundle = new MailBundle(); bundle.setToId(candidateSession.getIdentity()); - String fullname = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(candidateSession.getIdentity()); + Identity assessedIdentity = candidateSession.getIdentity(); + String fullname = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(assessedIdentity); Date assessedDate = candidateSession.getFinishTime() == null ? timestamp : candidateSession.getFinishTime(); @@ -93,7 +96,12 @@ public class AssessmentEntryOutcomesListener implements OutcomesListener { testEntry.getDisplayname(), // {4} fullname, // {5} Formatter.getInstance(locale) - .formatDateAndTime(assessedDate) // {6} + .formatDateAndTime(assessedDate), // {6} + assessedIdentity.getName(), // {7} + assessedIdentity.getUser() + .getProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, locale), // {8} + assessedIdentity.getUser() + .getProperty(UserConstants.INSTITUTIONALNAME, locale), // {9} }; String subject = translator.translate("digital.signature.mail.subject", args); diff --git a/src/main/java/org/olat/modules/taxonomy/manager/TaxonomyDAO.java b/src/main/java/org/olat/modules/taxonomy/manager/TaxonomyDAO.java index 8b53c14013cb58ff02fef0bb4208679fe7103b49..52c8e88be75762e6d0a15ecdc5927824e4b0e50e 100644 --- a/src/main/java/org/olat/modules/taxonomy/manager/TaxonomyDAO.java +++ b/src/main/java/org/olat/modules/taxonomy/manager/TaxonomyDAO.java @@ -136,8 +136,7 @@ public class TaxonomyDAO implements InitializingBean{ File directory = new File(storage, type); directory.mkdirs(); Path relativePath = rootDirectory.toPath().relativize(directory.toPath()); - String relativePathString = relativePath.toString(); - return relativePathString; + return relativePath.toString(); } public VFSContainer getDocumentsLibrary(Taxonomy taxonomy) { diff --git a/src/main/java/org/olat/modules/taxonomy/manager/TaxonomyServiceImpl.java b/src/main/java/org/olat/modules/taxonomy/manager/TaxonomyServiceImpl.java index 624cd9be6da723f14294c7e5ccfe9b1d81ba44e1..ec293aed0ac7ffbac2e882dbf374bb6ecbe60ae1 100644 --- a/src/main/java/org/olat/modules/taxonomy/manager/TaxonomyServiceImpl.java +++ b/src/main/java/org/olat/modules/taxonomy/manager/TaxonomyServiceImpl.java @@ -21,11 +21,13 @@ package org.olat.modules.taxonomy.manager; import java.util.Date; import java.util.List; +import java.util.UUID; import org.olat.basesecurity.IdentityRef; import org.olat.core.id.Identity; import org.olat.core.util.StringHelper; import org.olat.core.util.vfs.VFSContainer; +import org.olat.core.util.vfs.VFSItem; import org.olat.core.util.vfs.VFSManager; import org.olat.modules.taxonomy.Taxonomy; import org.olat.modules.taxonomy.TaxonomyCompetence; @@ -160,12 +162,23 @@ public class TaxonomyServiceImpl implements TaxonomyService { merge(reloadedTaxonomyLevel, reloadedMergeTo); } else { VFSContainer library = taxonomyLevelDao.getDocumentsLibrary(reloadedTaxonomyLevel); - Taxonomy taxonomy = reloadedTaxonomyLevel.getTaxonomy(); - VFSContainer lostAndFound = taxonomyDao.getLostAndFoundDirectoryLibrary(taxonomy); - String dir = StringHelper.transformDisplayNameToFileSystemName(reloadedTaxonomyLevel.getIdentifier()); - dir += "_" + taxonomyLevel.getKey(); - VFSContainer lastStorage = lostAndFound.createChildContainer(dir); - VFSManager.copyContent(library, lastStorage); + if(library != null) { + Taxonomy taxonomy = reloadedTaxonomyLevel.getTaxonomy(); + VFSContainer lostAndFound = taxonomyDao.getLostAndFoundDirectoryLibrary(taxonomy); + String dir = StringHelper.transformDisplayNameToFileSystemName(reloadedTaxonomyLevel.getIdentifier()); + dir += "_" + taxonomyLevel.getKey(); + VFSContainer lastStorage = lostAndFound.createChildContainer(dir); + if(lastStorage == null) { + VFSItem storageItem = lostAndFound.resolve(dir); + if(storageItem instanceof VFSContainer) { + lastStorage = (VFSContainer)storageItem; + } else { + lastStorage = lostAndFound.createChildContainer(UUID.randomUUID().toString()); + } + } + + VFSManager.copyContent(library, lastStorage); + } //delete the competences taxonomyCompetenceDao.deleteCompetences(taxonomyLevel); //questions diff --git a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyLevelOverviewController.java b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyLevelOverviewController.java index 2abbda811b173d599a3fd9b753c4109427958ebe..65b98b210d8c0abe8ec8555faecd983452887995 100644 --- a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyLevelOverviewController.java +++ b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyLevelOverviewController.java @@ -213,13 +213,15 @@ public class TaxonomyLevelOverviewController extends BasicController implements showWarning("warning.atleastone.level"); return; } - + + taxonomyLevel = taxonomyService.getTaxonomyLevel(taxonomyLevel); Taxonomy taxonomy = taxonomyLevel.getTaxonomy(); - confirmDeleteCtrl = new DeleteTaxonomyLevelController(ureq, getWindowControl(), null, taxonomy); + List<TaxonomyLevel> levelToDelete = Collections.singletonList(taxonomyLevel); + confirmDeleteCtrl = new DeleteTaxonomyLevelController(ureq, getWindowControl(), levelToDelete, taxonomy); listenTo(confirmDeleteCtrl); String title = translate("confirmation.delete.level.title"); - cmc = new CloseableModalController(getWindowControl(), "close", moveLevelCtrl.getInitialComponent(), true, title); + cmc = new CloseableModalController(getWindowControl(), "close", confirmDeleteCtrl.getInitialComponent(), true, title); listenTo(cmc); cmc.activate(); }