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

Merge remote-tracking branch 'origin/OpenOLAT_14.0' into OpenOLAT_14.1

parents 3a31d84a 8e22b4e8
No related branches found
No related tags found
No related merge requests found
...@@ -36,8 +36,11 @@ import java.util.zip.ZipEntry; ...@@ -36,8 +36,11 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.olat.core.gui.translator.Translator;
import org.olat.core.logging.Tracing; import org.olat.core.logging.Tracing;
import org.olat.core.util.FileUtils; import org.olat.core.util.FileUtils;
import org.olat.core.util.StringHelper;
import org.olat.core.util.Util;
import org.olat.core.util.ZipUtil; import org.olat.core.util.ZipUtil;
import org.olat.core.util.io.ShieldOutputStream; import org.olat.core.util.io.ShieldOutputStream;
import org.olat.ims.qti21.QTI21Service; import org.olat.ims.qti21.QTI21Service;
...@@ -49,6 +52,7 @@ import org.olat.ims.qti21.model.xml.ManifestMetadataBuilder; ...@@ -49,6 +52,7 @@ import org.olat.ims.qti21.model.xml.ManifestMetadataBuilder;
import org.olat.ims.qti21.model.xml.QtiNodesExtractor; import org.olat.ims.qti21.model.xml.QtiNodesExtractor;
import org.olat.ims.qti21.pool.ImportExportHelper.AssessmentItemsAndResources; import org.olat.ims.qti21.pool.ImportExportHelper.AssessmentItemsAndResources;
import org.olat.ims.qti21.pool.ImportExportHelper.ItemMaterial; import org.olat.ims.qti21.pool.ImportExportHelper.ItemMaterial;
import org.olat.ims.qti21.ui.editor.AssessmentTestComposerController;
import org.olat.imscp.xml.manifest.ResourceType; import org.olat.imscp.xml.manifest.ResourceType;
import org.olat.modules.qpool.QuestionItemFull; import org.olat.modules.qpool.QuestionItemFull;
import org.olat.modules.qpool.manager.QPoolFileStorage; import org.olat.modules.qpool.manager.QPoolFileStorage;
...@@ -176,7 +180,7 @@ public class QTI21ExportProcessor { ...@@ -176,7 +180,7 @@ public class QTI21ExportProcessor {
metadataBuilder.appendMetadataFrom(qitem, resolvedAssessmentItem, locale); metadataBuilder.appendMetadataFrom(qitem, resolvedAssessmentItem, locale);
} }
public void assembleTest(List<QuestionItemFull> fullItems, File directory) { public void assembleTest(String title, List<QuestionItemFull> fullItems, File directory) {
try { try {
QtiSerializer qtiSerializer = qtiService.qtiSerializer(); QtiSerializer qtiSerializer = qtiService.qtiSerializer();
//imsmanifest //imsmanifest
...@@ -184,7 +188,14 @@ public class QTI21ExportProcessor { ...@@ -184,7 +188,14 @@ public class QTI21ExportProcessor {
//assessment test //assessment test
DoubleAdder atomicMaxScore = new DoubleAdder(); DoubleAdder atomicMaxScore = new DoubleAdder();
AssessmentTest assessmentTest = AssessmentTestFactory.createAssessmentTest("Assessment test from pool", "Section"); if(!StringHelper.containsNonWhitespace(title)) {
title = "Assessment test from pool";
}
Translator translator = Util.createPackageTranslator(AssessmentTestComposerController.class, locale);
String sectionTitle = translator.translate("new.section");
AssessmentTest assessmentTest = AssessmentTestFactory.createAssessmentTest(title, sectionTitle);
String assessmentTestFilename = assessmentTest.getIdentifier() + ".xml"; String assessmentTestFilename = assessmentTest.getIdentifier() + ".xml";
manifest.appendAssessmentTest(assessmentTestFilename); manifest.appendAssessmentTest(assessmentTestFilename);
......
...@@ -475,10 +475,17 @@ public class QTI21QPoolServiceProvider implements QPoolSPI { ...@@ -475,10 +475,17 @@ public class QTI21QPoolServiceProvider implements QPoolSPI {
processor.assembleTest(fullItems, zout); processor.assembleTest(fullItems, zout);
} }
public void exportToEditorPackage(File exportDir, List<QuestionItemShort> items, Locale locale) { /**
*
* @param testTitle The title of the test
* @param exportDir The directory to export to
* @param items The list of questions to export
* @param locale The language
*/
public void exportToEditorPackage(String testTitle, File exportDir, List<QuestionItemShort> items, Locale locale) {
List<QuestionItemFull> fullItems = loadQuestionFullItems(items); List<QuestionItemFull> fullItems = loadQuestionFullItems(items);
QTI21ExportProcessor processor = new QTI21ExportProcessor(qtiService, qpoolFileStorage, locale); QTI21ExportProcessor processor = new QTI21ExportProcessor(qtiService, qpoolFileStorage, locale);
processor.assembleTest(fullItems, exportDir); processor.assembleTest(testTitle, fullItems, exportDir);
} }
private List<QuestionItemFull> loadQuestionFullItems(List<QuestionItemShort> items) { private List<QuestionItemFull> loadQuestionFullItems(List<QuestionItemShort> items) {
......
...@@ -167,7 +167,7 @@ public class QTI21AssessmentTestHandler extends FileHandler { ...@@ -167,7 +167,7 @@ public class QTI21AssessmentTestHandler extends FileHandler {
} }
if(createObject instanceof QItemList) { if(createObject instanceof QItemList) {
QItemList itemToImport = (QItemList)createObject; QItemList itemToImport = (QItemList)createObject;
qpoolServiceProvider.exportToEditorPackage(repositoryDir, itemToImport.getItems(), locale); qpoolServiceProvider.exportToEditorPackage(displayname, repositoryDir, itemToImport.getItems(), locale);
} else if(createObject instanceof QTIEditorPackage) { } else if(createObject instanceof QTIEditorPackage) {
QTIEditorPackage testToConvert = (QTIEditorPackage)createObject; QTIEditorPackage testToConvert = (QTIEditorPackage)createObject;
QTI21DeliveryOptions options = qtiService.getDeliveryOptions(re); QTI21DeliveryOptions options = qtiService.getDeliveryOptions(re);
......
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