From 1ff1bd5c9aef4c0f93917b8d3583351b0d41b34c Mon Sep 17 00:00:00 2001 From: Christian Beeznest Date: Sun, 19 Oct 2025 07:58:09 -0500 Subject: [PATCH] Course: Add Expor/Import IMC CC 1.3 from course maintenance - refs #6870 --- assets/vue/services/courseMaintenance.js | 26 +- assets/vue/views/coursemaintenance/Cc13.vue | 384 +++- .../CourseMaintenanceController.php | 674 ++++-- .../Builder/Cc13Capabilities.php | 105 + .../CommonCartridge/Builder/Cc13Export.php | 1356 +++++++++++ .../Export/Base/CcConverters.php | 103 + .../Export/Base/CcGeneralFile.php | 65 + .../Export/Base/CcVersion1.php | 521 +++++ .../Export/Base/CcVersionBase.php | 138 ++ .../CommonCartridge/Export/Base/CssParser.php | 274 +++ .../Export/Base/XMLGenericDocument.php | 485 ++++ .../CommonCartridge/Export/Cc13Convert.php | 384 ++++ .../Export/Cc13ExportConvert.php | 66 + .../CommonCartridge/Export/CcForum.php | 56 + .../CommonCartridge/Export/CcItem.php | 160 ++ .../CommonCartridge/Export/CcManifest.php | 488 ++++ .../Export/CcMetadataGeneral.php | 56 + .../Export/CcMetadataManifest.php | 60 + .../Export/CcMetadataResource.php | 26 + .../Export/CcMetadataResourceEducational.php | 21 + .../CommonCartridge/Export/CcOrganization.php | 106 + .../CommonCartridge/Export/CcPage.php | 108 + .../CommonCartridge/Export/CcResource.php | 9 + .../CommonCartridge/Export/CcResources.php | 177 ++ .../CommonCartridge/Export/CcVersion13.php | 410 ++++ .../CommonCartridge/Export/CcWebLink.php | 66 + .../Export/Converter/CcConverterFolder.php | 50 + .../Export/Converter/CcConverterForum.php | 50 + .../Export/Converter/CcConverterPage.php | 55 + .../Export/Converter/CcConverterQuiz.php | 105 + .../Export/Converter/CcConverterResource.php | 65 + .../Export/Converter/CcConverterUrl.php | 38 + .../Export/Interfaces/CcIItem.php | 23 + .../Export/Interfaces/CcIManifest.php | 35 + .../Export/Interfaces/CcIMetadataFile.php | 15 + .../Export/Interfaces/CcIMetadataManifest.php | 21 + .../Export/Interfaces/CcIMetadataResource.php | 15 + .../Export/Interfaces/CcIOrganization.php | 21 + .../Export/Interfaces/CcIResource.php | 23 + .../Lib/Assesment/Assesment13ResourceFile.php | 12 + .../Lib/Assesment/Assesment1ResourceFile.php | 82 + .../Lib/Assesment/CcAssesmentAltmaterial.php | 16 + .../Lib/Assesment/CcAssesmentDecvartype.php | 38 + .../Assesment/CcAssesmentFlowLabeltype.php | 58 + .../Lib/Assesment/CcAssesmentFlowMatBase.php | 54 + .../Lib/Assesment/CcAssesmentFlowMattype.php | 60 + .../Lib/Assesment/CcAssesmentFlowtype.php | 76 + .../Lib/Assesment/CcAssesmentHelper.php | 188 ++ .../CcAssesmentItemfeedbacHinttype.php | 21 + .../CcAssesmentItemfeedbackHintmaterial.php | 15 + ...AssesmentItemfeedbackShintmaterialBase.php | 44 + .../CcAssesmentItemfeedbackShintypeBase.php | 33 + ...cAssesmentItemfeedbackSolutionmaterial.php | 15 + .../CcAssesmentItemfeedbackSolutiontype.php | 21 + .../Assesment/CcAssesmentItemfeedbacktype.php | 83 + .../Lib/Assesment/CcAssesmentItemmetadata.php | 28 + .../Lib/Assesment/CcAssesmentMatbreak.php | 18 + .../Lib/Assesment/CcAssesmentMaterial.php | 40 + .../Lib/Assesment/CcAssesmentMaterialBase.php | 55 + .../Lib/Assesment/CcAssesmentMatref.php | 26 + .../Lib/Assesment/CcAssesmentMattext.php | 70 + .../Lib/Assesment/CcAssesmentMetadata.php | 67 + .../Lib/Assesment/CcAssesmentPresentation.php | 92 + .../CcAssesmentPresentationMaterialBase.php | 30 + .../Assesment/CcAssesmentQuestionEssay.php | 53 + .../Lib/Assesment/CcAssesmentQuestionFib.php | 138 ++ .../CcAssesmentQuestionMultichoice.php | 239 ++ ...esmentQuestionMultichoiceMultiresponse.php | 214 ++ .../Assesment/CcAssesmentQuestionProcBase.php | 168 ++ .../Assesment/CcAssesmentRenderChoicetype.php | 86 + .../Assesment/CcAssesmentRenderEssaytype.php | 73 + .../Assesment/CcAssesmentRenderFibtype.php | 87 + .../CcAssesmentRespconditiontype.php | 70 + .../CcAssesmentResponseLabeltype.php | 90 + .../Assesment/CcAssesmentResponseMatref.php | 19 + .../Assesment/CcAssesmentResponseStrtype.php | 16 + .../CcAssesmentResprocessingtype.php | 40 + .../Lib/Assesment/CcAssesmentRubricBase.php | 28 + .../Lib/Assesment/CcAssesmentSection.php | 57 + .../Lib/Assesment/CcAssesmentSectionItem.php | 64 + .../Assesment/CcAssignmentConditionvar.php | 61 + .../CcAssignmentConditionvarAndtype.php | 43 + .../CcAssignmentConditionvarOthertype.php | 18 + .../CcAssignmentConditionvarVarequaltype.php | 44 + ...AssignmentConditionvarVarsubstringtype.php | 16 + .../CcAssignmentDisplayfeedbacktype.php | 35 + .../Lib/Assesment/CcAssignmentSetvartype.php | 33 + .../Export/Lib/Assesment/CcQtiMetadata.php | 27 + .../Export/Lib/Assesment/CcQtiProfiletype.php | 38 + .../Export/Lib/Assesment/CcQtiTags.php | 93 + .../Export/Lib/Assesment/CcQtiValues.php | 36 + .../Lib/Assesment/CcQuestionMetadata.php | 51 + .../Lib/Assesment/CcQuestionMetadataBase.php | 93 + .../Lib/Assesment/CcResponseLidtype.php | 90 + .../Export/Lib/Assesment/CcXmlNamespace.php | 12 + .../Export/Lib/ccdependencyparser.php | 316 +++ .../Export/Utils/CcHelpers.php | 341 +++ .../Export/Utils/CcResourceLocation.php | 95 + .../Export/Utils/PkgResourceDependencies.php | 44 + .../Export/Utils/PkgStaticResources.php | 61 + .../CommonCartridge/Import/Base/CcBase.php | 431 ++++ .../Base/Validator/AssesmentValidator.php | 24 + .../Import/Base/Validator/BltiValidator.php | 15 + .../Import/Base/Validator/CcValidateType.php | 143 ++ .../Base/Validator/DiscussionValidator.php | 15 + .../Import/Base/Validator/ErrorMessages.php | 90 + .../Import/Base/Validator/LibxmlErrorsMgr.php | 90 + .../Base/Validator/Manifest10Validator.php | 15 + .../Base/Validator/ManifestValidator.php | 16 + .../Base/Validator/WeblinkValidator.php | 15 + .../LOM/ccv1p3_lomccltilink_v1p0.xsd | 1787 +++++++++++++++ .../schemas13/LOM/ccv1p3_lommanifest_v1p0.xsd | 1889 +++++++++++++++ .../schemas13/LOM/ccv1p3_lomresource_v1p0.xsd | 1871 +++++++++++++++ .../schemas13/cc13libxml2validator.xsd | 19 + .../schemas13/ccv1p3_cpextensionv1p2_v1p0.xsd | 223 ++ .../schemas13/ccv1p3_imsccauth_v1p3.xsd | 237 ++ .../schemas13/ccv1p3_imscp_v1p2_v1p0.xsd | 847 +++++++ .../schemas13/ccv1p3_imscsmd_v1p0.xsd | 237 ++ .../Validator/schemas13/ccv1p3_imsdt_v1p3.xsd | 257 +++ .../Validator/schemas13/ccv1p3_imswl_v1p3.xsd | 237 ++ .../schemas13/ccv1p3_qtiasiv1p2p1_v1p0.xsd | 2026 +++++++++++++++++ .../schemas13/imsbasiclti_v1p0p1.xsd | 194 ++ .../Validator/schemas13/imslticc_v1p3.xsd | 275 +++ .../Validator/schemas13/imslticm_v1p0.xsd | 205 ++ .../Validator/schemas13/imslticp_v1p0.xsd | 286 +++ .../schemas13/imsmd_loose_v1p3p2.xsd | 1673 ++++++++++++++ .../Base/Validator/schemas13/imsvdex_v1p0.xsd | 132 ++ ...ocabulary_CCv1p3_CPv1p2_ResourceTypev1.jpg | Bin 0 -> 563022 bytes .../vdex/ccresourcetypevocabularyv1p3.html | 318 +++ .../vdex/ccresourcetypevocabularyv1p3.xml | 629 +++++ .../Import/Base/Validator/schemas13/xml.xsd | 286 +++ .../CommonCartridge/Import/Cc1p3Convert.php | 475 ++++ .../Import/Converter/Cc13Entities.php | 72 + .../Import/Converter/Cc13Forum.php | 232 ++ .../Import/Converter/Cc13Quiz.php | 862 +++++++ .../Import/Converter/Cc13Resource.php | 433 ++++ .../Import/Converter/CcEntities.php | 242 ++ .../CommonCartridge/Import/Imscc13Import.php | 623 +++++ .../CommonCartridge/Import/Inc/constants.php | 104 + .../Import/Lib/validateurlsyntax.php | 428 ++++ .../Component/CourseCopy/Course.php | 528 ++--- 141 files changed, 28971 insertions(+), 581 deletions(-) create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Builder/Cc13Capabilities.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Builder/Cc13Export.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Base/CcConverters.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Base/CcGeneralFile.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Base/CcVersion1.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Base/CcVersionBase.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Base/CssParser.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Base/XMLGenericDocument.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Cc13Convert.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Cc13ExportConvert.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/CcForum.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/CcItem.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/CcManifest.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/CcMetadataGeneral.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/CcMetadataManifest.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/CcMetadataResource.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/CcMetadataResourceEducational.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/CcOrganization.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/CcPage.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/CcResource.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/CcResources.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/CcVersion13.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/CcWebLink.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Converter/CcConverterFolder.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Converter/CcConverterForum.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Converter/CcConverterPage.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Converter/CcConverterQuiz.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Converter/CcConverterResource.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Converter/CcConverterUrl.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Interfaces/CcIItem.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Interfaces/CcIManifest.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Interfaces/CcIMetadataFile.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Interfaces/CcIMetadataManifest.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Interfaces/CcIMetadataResource.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Interfaces/CcIOrganization.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Interfaces/CcIResource.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/Assesment13ResourceFile.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/Assesment1ResourceFile.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentAltmaterial.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentDecvartype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentFlowLabeltype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentFlowMatBase.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentFlowMattype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentFlowtype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentHelper.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentItemfeedbacHinttype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentItemfeedbackHintmaterial.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentItemfeedbackShintmaterialBase.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentItemfeedbackShintypeBase.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentItemfeedbackSolutionmaterial.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentItemfeedbackSolutiontype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentItemfeedbacktype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentItemmetadata.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentMatbreak.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentMaterial.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentMaterialBase.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentMatref.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentMattext.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentMetadata.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentPresentation.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentPresentationMaterialBase.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentQuestionEssay.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentQuestionFib.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentQuestionMultichoice.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentQuestionMultichoiceMultiresponse.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentQuestionProcBase.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentRenderChoicetype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentRenderEssaytype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentRenderFibtype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentRespconditiontype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentResponseLabeltype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentResponseMatref.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentResponseStrtype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentResprocessingtype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentRubricBase.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentSection.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssesmentSectionItem.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssignmentConditionvar.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssignmentConditionvarAndtype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssignmentConditionvarOthertype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssignmentConditionvarVarequaltype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssignmentConditionvarVarsubstringtype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssignmentDisplayfeedbacktype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcAssignmentSetvartype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcQtiMetadata.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcQtiProfiletype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcQtiTags.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcQtiValues.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcQuestionMetadata.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcQuestionMetadataBase.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcResponseLidtype.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/Assesment/CcXmlNamespace.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Lib/ccdependencyparser.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Utils/CcHelpers.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Utils/CcResourceLocation.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Utils/PkgResourceDependencies.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Export/Utils/PkgStaticResources.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/CcBase.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/AssesmentValidator.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/BltiValidator.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/CcValidateType.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/DiscussionValidator.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/ErrorMessages.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/LibxmlErrorsMgr.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/Manifest10Validator.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/ManifestValidator.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/WeblinkValidator.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/LOM/ccv1p3_lomccltilink_v1p0.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/LOM/ccv1p3_lommanifest_v1p0.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/LOM/ccv1p3_lomresource_v1p0.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/cc13libxml2validator.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/ccv1p3_cpextensionv1p2_v1p0.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/ccv1p3_imsccauth_v1p3.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/ccv1p3_imscp_v1p2_v1p0.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/ccv1p3_imscsmd_v1p0.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/ccv1p3_imsdt_v1p3.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/ccv1p3_imswl_v1p3.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/ccv1p3_qtiasiv1p2p1_v1p0.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/imsbasiclti_v1p0p1.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/imslticc_v1p3.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/imslticm_v1p0.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/imslticp_v1p0.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/imsmd_loose_v1p3p2.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/imsvdex_v1p0.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/vdex/PSMVocabulary_CCv1p3_CPv1p2_ResourceTypev1.jpg create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/vdex/ccresourcetypevocabularyv1p3.html create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/vdex/ccresourcetypevocabularyv1p3.xml create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Base/Validator/schemas13/xml.xsd create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Cc1p3Convert.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Converter/Cc13Entities.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Converter/Cc13Forum.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Converter/Cc13Quiz.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Converter/Cc13Resource.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Converter/CcEntities.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Imscc13Import.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Inc/constants.php create mode 100644 src/CourseBundle/Component/CourseCopy/CommonCartridge/Import/Lib/validateurlsyntax.php diff --git a/assets/vue/services/courseMaintenance.js b/assets/vue/services/courseMaintenance.js index 42fbf227ffb..e63fe5c6bd4 100644 --- a/assets/vue/services/courseMaintenance.js +++ b/assets/vue/services/courseMaintenance.js @@ -298,22 +298,38 @@ async function cc13ExportResources(node = resolveNodeFromPath()) { return resp.data } async function cc13ExportExecute(node = resolveNodeFromPath(), payload) { - const resp = await http.post(base.cc13ExportExecute(node), payload, { params: withCourseParams() }) - return resp.data + const resp = await http.post(base.cc13ExportExecute(node), payload, { + params: withCourseParams(), + headers: { Accept: "application/json" }, + }) + return resp.data // { ok, file, downloadUrl, message } } // CC 1.3 import async function cc13Import(node = resolveNodeFromPath(), fileOrOptions) { + // File upload path if (typeof File !== "undefined" && fileOrOptions instanceof File) { const fd = new FormData() - fd.append("file", fileOrOptions, fileOrOptions.name) + fd.append("file", fileOrOptions, fileOrOptions.name || "package.imscc") const resp = await http.post(base.cc13Import(node), fd, { headers: { "Content-Type": "multipart/form-data" }, params: withCourseParams(), + validateStatus: () => true, + responseType: "json", }) - return resp.data + if (resp.status >= 400) { + const msg = resp.data?.error || resp.data?.message || "Import failed" + const err = new Error(msg) + err.response = { status: resp.status, data: resp.data } + throw err + } + return resp.data // { ok:true, message:"..." } } - const resp = await http.post(base.cc13Import(node), fileOrOptions || {}, { params: withCourseParams() }) + + // Optional JSON mode (if later you add server switches) + const resp = await http.post(base.cc13Import(node), fileOrOptions || {}, { + params: withCourseParams(), + }) return resp.data } diff --git a/assets/vue/views/coursemaintenance/Cc13.vue b/assets/vue/views/coursemaintenance/Cc13.vue index 1857a8f3b3d..502c222ade6 100644 --- a/assets/vue/views/coursemaintenance/Cc13.vue +++ b/assets/vue/views/coursemaintenance/Cc13.vue @@ -13,61 +13,213 @@
- +
+ + +
+

+ {{ t("{n} selected", { n: selectedCount }) }} +

-
+
{{ t("Select resources") }}
- + - +
-
{{ t("Loading resources…") }}
-
-
+
+ {{ t("Loading resources…") }} +
+ +
+
    -
  • {{ w }}
  • +
  • + {{ w }} +
-
+
-
-
- - - - ({{ t("contains {n} items",{n:item.children.length}) }}) - -
+
+ + + + +
@@ -75,12 +227,19 @@
-
-

+

{{ serverMessage }}

@@ -98,7 +257,11 @@ class="w-full rounded border border-gray-300 p-2 text-sm" />
-
@@ -106,14 +269,22 @@
- - + +