From 8f0de4d6aab7fd3a893bab197b044f633a7ca275 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 5 Apr 2017 09:42:44 +0200
Subject: [PATCH] no-jira: make the download link for certificate in course
 option works for zip

---
 .../certificate/ui/CertificatesOptionsController.java  | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/olat/course/certificate/ui/CertificatesOptionsController.java b/src/main/java/org/olat/course/certificate/ui/CertificatesOptionsController.java
index d95b9455aaa..fb53665191f 100644
--- a/src/main/java/org/olat/course/certificate/ui/CertificatesOptionsController.java
+++ b/src/main/java/org/olat/course/certificate/ui/CertificatesOptionsController.java
@@ -63,6 +63,7 @@ import org.olat.core.util.Util;
 import org.olat.core.util.coordinate.CoordinatorManager;
 import org.olat.core.util.coordinate.LockResult;
 import org.olat.core.util.event.EventBus;
+import org.olat.core.util.vfs.JavaIOItem;
 import org.olat.core.util.vfs.VFSLeaf;
 import org.olat.core.util.vfs.VFSMediaResource;
 import org.olat.course.CourseFactory;
@@ -77,6 +78,7 @@ import org.olat.course.config.CourseConfigEvent;
 import org.olat.course.config.CourseConfigEvent.CourseConfigType;
 import org.olat.course.config.ui.CourseOptionsController;
 import org.olat.course.run.RunMainController;
+import org.olat.fileresource.ZippedDirectoryMediaResource;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryEntryManagedFlag;
 import org.olat.repository.RepositoryManager;
@@ -454,7 +456,13 @@ public class CertificatesOptionsController extends FormBasicController {
 			MediaResource resource;
 			if(selectedTemplate != null) {
 				VFSLeaf templateLeaf = certificatesManager.getTemplateLeaf(selectedTemplate);
-				resource = new VFSMediaResource(templateLeaf); 
+				if(templateLeaf.getName().equals("index.html") && templateLeaf instanceof JavaIOItem) {
+					JavaIOItem indexFile = (JavaIOItem)templateLeaf;
+					File templateDir = indexFile.getBasefile().getParentFile();
+					resource = new ZippedDirectoryMediaResource(selectedTemplate.getName(), templateDir);
+				} else {
+					resource = new VFSMediaResource(templateLeaf); 
+				}
 			} else {
 				InputStream stream = certificatesManager.getDefaultTemplate();
 				resource = new StreamedMediaResource(stream, "Certificate_template.pdf", "application/pdf");
-- 
GitLab