From 9c093dd9ac0f0d1612f794f4c6da3d25a2cd3a2e Mon Sep 17 00:00:00 2001 From: Charles Severance Date: Wed, 5 Feb 2025 01:26:23 -0500 Subject: [PATCH 1/2] SAK-50945 assignment cc+archive should not export group data and turn off group --- .../lessonbuildertool/ccexport/CCExport.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/lessonbuilder/tool/src/java/org/sakaiproject/lessonbuildertool/ccexport/CCExport.java b/lessonbuilder/tool/src/java/org/sakaiproject/lessonbuildertool/ccexport/CCExport.java index 6ef9435ad19d..1941f3733e79 100644 --- a/lessonbuilder/tool/src/java/org/sakaiproject/lessonbuildertool/ccexport/CCExport.java +++ b/lessonbuilder/tool/src/java/org/sakaiproject/lessonbuildertool/ccexport/CCExport.java @@ -856,6 +856,47 @@ private static void patchArchive(CCConfig ccConfig, String path) { if ( changed) Xml.writeDocument(doc, siteXml); } + // Patch assignments.xml + String assignmentXml = path + "assignment.xml"; + doc = Xml.readDocument(assignmentXml); + if ( doc != null ) { + boolean changed = false; + + NodeList subNodes = doc.getElementsByTagName("submissions"); + for(int i = 0; i < subNodes.getLength(); i++) { + Node subNode = subNodes.item(i); + NodeList children = subNode.getChildNodes(); + for (int j = 0; j < children.getLength(); j++) { + Node child = children.item(j); + subNode.removeChild(child); + changed = true; + } + } + + /* Remove the groups within the groups tag so we have an empty groups tag + + + + */ + subNodes = doc.getElementsByTagName("groups"); + for(int i = 0; i < subNodes.getLength(); i++) { + Node subNode = subNodes.item(i); + while (subNode.hasChildNodes()) { + subNode.removeChild(subNode.getFirstChild()); + changed = true; + } + } + + subNodes = doc.getElementsByTagName("typeOfAccess"); + for(int i = 0; i < subNodes.getLength(); i++) { + Node subNode = subNodes.item(i); + subNode.setTextContent("SITE"); + changed = true; + } + + if ( changed) Xml.writeDocument(doc, assignmentXml); + } + } private static void addAllArchive(ZipPrintStream out, CCConfig ccConfig, File dir, String path) throws IOException { From e032e7726e15b3425f53e0cddd2e15204b7cbf41 Mon Sep 17 00:00:00 2001 From: Charles Severance Date: Wed, 5 Feb 2025 17:52:57 -0500 Subject: [PATCH 2/2] Restore groups in the import and leave settings alone --- .../lessonbuildertool/ccexport/CCExport.java | 44 ++++--------------- 1 file changed, 8 insertions(+), 36 deletions(-) diff --git a/lessonbuilder/tool/src/java/org/sakaiproject/lessonbuildertool/ccexport/CCExport.java b/lessonbuilder/tool/src/java/org/sakaiproject/lessonbuildertool/ccexport/CCExport.java index 1941f3733e79..5dde86b69034 100644 --- a/lessonbuilder/tool/src/java/org/sakaiproject/lessonbuildertool/ccexport/CCExport.java +++ b/lessonbuilder/tool/src/java/org/sakaiproject/lessonbuildertool/ccexport/CCExport.java @@ -828,19 +828,14 @@ private static void patchArchive(CCConfig ccConfig, String path) { if ( changed) Xml.writeDocument(doc, contentXml); } - // Remove roles / groups / providers data from site.xml + // Remove roles / providers data from site.xml String siteXml = path + "site.xml"; doc = Xml.readDocument(siteXml); if ( doc != null ) { boolean changed = false; - nodeList = doc.getElementsByTagName("roles"); - while (nodeList.getLength() > 0) { - Node node = nodeList.item(0); - node.getParentNode().removeChild(node); - changed = true; - } - nodeList = doc.getElementsByTagName("groups"); + // Remove ability tags from roles as they include user ids + nodeList = doc.getElementsByTagName("ability"); while (nodeList.getLength() > 0) { Node node = nodeList.item(0); node.getParentNode().removeChild(node); @@ -853,17 +848,17 @@ private static void patchArchive(CCConfig ccConfig, String path) { node.getParentNode().removeChild(node); changed = true; } - if ( changed) Xml.writeDocument(doc, siteXml); + if (changed) Xml.writeDocument(doc, siteXml); } - // Patch assignments.xml + // Patch assignments.xml- remove any submissions because it is user data String assignmentXml = path + "assignment.xml"; doc = Xml.readDocument(assignmentXml); - if ( doc != null ) { + if (doc != null) { boolean changed = false; NodeList subNodes = doc.getElementsByTagName("submissions"); - for(int i = 0; i < subNodes.getLength(); i++) { + for (int i = 0; i < subNodes.getLength(); i++) { Node subNode = subNodes.item(i); NodeList children = subNode.getChildNodes(); for (int j = 0; j < children.getLength(); j++) { @@ -872,31 +867,8 @@ private static void patchArchive(CCConfig ccConfig, String path) { changed = true; } } - - /* Remove the groups within the groups tag so we have an empty groups tag - - - - */ - subNodes = doc.getElementsByTagName("groups"); - for(int i = 0; i < subNodes.getLength(); i++) { - Node subNode = subNodes.item(i); - while (subNode.hasChildNodes()) { - subNode.removeChild(subNode.getFirstChild()); - changed = true; - } - } - - subNodes = doc.getElementsByTagName("typeOfAccess"); - for(int i = 0; i < subNodes.getLength(); i++) { - Node subNode = subNodes.item(i); - subNode.setTextContent("SITE"); - changed = true; - } - - if ( changed) Xml.writeDocument(doc, assignmentXml); + if (changed) Xml.writeDocument(doc, assignmentXml); } - } private static void addAllArchive(ZipPrintStream out, CCConfig ccConfig, File dir, String path) throws IOException {