From 79b1cbaf8d5dc444415e14b26ff48420ac02ff8b Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Fri, 23 Oct 2015 09:39:09 +0200
Subject: [PATCH] OO-1742: limit the upload to zip and pdf and show an error if
 the upload doesn't succeed

---
 .../course/certificate/manager/CertificatesManagerImpl.java  | 4 ++--
 .../course/certificate/ui/CertificateChooserController.java  | 5 +++++
 .../course/certificate/ui/UploadCertificateController.java   | 3 +++
 .../course/certificate/ui/_i18n/LocalStrings_de.properties   | 1 +
 .../course/certificate/ui/_i18n/LocalStrings_en.properties   | 1 +
 5 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java b/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java
index 3d6ee860d40..044c9d67c5e 100644
--- a/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java
+++ b/src/main/java/org/olat/course/certificate/manager/CertificatesManagerImpl.java
@@ -150,8 +150,6 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList
 	@Autowired
 	private RepositoryManager repositoryManager;
 	@Autowired
-	private NotificationsManager notificationsManager;
-	@Autowired
 	private BusinessGroupService businessGroupService;
 	@Autowired
 	private BusinessGroupRelationDAO businessGroupRelationDao;
@@ -961,6 +959,8 @@ public class CertificatesManagerImpl implements CertificatesManager, MessageList
 			} else {
 				template = null;
 			}
+		} else {
+			template = null;
 		}
 		return template;
 	}
diff --git a/src/main/java/org/olat/course/certificate/ui/CertificateChooserController.java b/src/main/java/org/olat/course/certificate/ui/CertificateChooserController.java
index acf2423c9ce..0bcf5ba72bc 100644
--- a/src/main/java/org/olat/course/certificate/ui/CertificateChooserController.java
+++ b/src/main/java/org/olat/course/certificate/ui/CertificateChooserController.java
@@ -154,6 +154,8 @@ public class CertificateChooserController extends UploadCertificateController {
 			if(validateTemplate()) {
 				doUpload(ureq);
 			}
+		} else if(fileEl == source) {
+			validateTemplate();
 		}
 		super.formInnerEvent(ureq, source, event);
 	}
@@ -163,6 +165,9 @@ public class CertificateChooserController extends UploadCertificateController {
 		if(template != null) {
 			String name = fileEl.getUploadFileName();
 			selectedTemplate = certificatesManager.addTemplate(name, template, getFormat(), getOrientation(), false);
+			if(selectedTemplate == null) {
+				showError("upload.wrong.mimetype");
+			}
 			fireEvent(ureq, Event.DONE_EVENT);
 		}
 	}
diff --git a/src/main/java/org/olat/course/certificate/ui/UploadCertificateController.java b/src/main/java/org/olat/course/certificate/ui/UploadCertificateController.java
index b9965b6c6af..ba933c86351 100644
--- a/src/main/java/org/olat/course/certificate/ui/UploadCertificateController.java
+++ b/src/main/java/org/olat/course/certificate/ui/UploadCertificateController.java
@@ -171,6 +171,9 @@ public class UploadCertificateController extends FormBasicController {
 				allOk = validatePdf(template);
 			} else if(filename.endsWith(".zip")) {
 				allOk = validateHtml(filename, template);
+			} else {
+				fileEl.setErrorKey("upload.wrong.mimetype", null);
+				allOk &= false;
 			}
 		}
 		
diff --git a/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_de.properties
index a51dd1efaea..4a09238aab7 100644
--- a/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_de.properties
@@ -45,6 +45,7 @@ upload.unkown.error=Die Vorlage kann nicht gelesen werden.
 upload.error.noindex=Die ZIP-Datei enth\u00E4lt keine "index.html" Datei.
 upload.error.simplefonts=Der in den Feldern verwendete Font konnte nicht gefunden werden. Bitte benutzen Sie Standardfonts wie z.B. Helvetica, sowie die Acrobat Pro Software, um die Formularfelder zu erstellen.
 upload.error.no.phantomjs=PhantomJS ist nicht verf\u00FCgbar in PATH. HTML template k\u00F6nnen nicht benutzt werden.
+upload.wrong.mimetype=Vorlagen k\u00F6nnen nur als ZIP-Datei oder im PDF-Vorlagenformat hochgeladen werden
 notifications.title=Neue Zertifikate in Kurs "{0}"
 notifications.desc={0} hat ein neues Zertifikat erhalten.
 notifications.header=Neue Zertifikate in Kurs "{0}"
diff --git a/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_en.properties
index a8f42900937..282378a11d0 100644
--- a/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/course/certificate/ui/_i18n/LocalStrings_en.properties
@@ -60,5 +60,6 @@ upload.error.encrypted=The template cannot be encrypted.
 upload.error.no.phantomjs=PhantomJS is not in PATH. You cannot use HTML templates.
 upload.error.noindex=The ZIP file doesn't include a "index.html" file.
 upload.error.simplefonts=The font(s) used in the form fields could not be found. Please use standard fonts such as e.g. Helvetica, as well as the Acrobat Pro Software in order to create the form fields.
+upload.wrong.mimetype=Templates may only be uploaded as either .zip file or in the correct PDF template format.
 upload.title=Upload template
 upload.unkown.error=The template cannot be opened.
-- 
GitLab