diff --git a/.hgtags b/.hgtags
index 979fde4f6967a6ba251c05cff8190c33cf1bcae5..925c745b977b63a618e01925993960b5e4372f35 100644
--- a/.hgtags
+++ b/.hgtags
@@ -141,3 +141,4 @@ b38ed621ea53507fbf41eb616648ebad2340e613 OpenOLAT 10.4.7
 e5ce704b8373f55f65e85f7aadf5600207209dff OpenOLAT 10.5.0
 e5ce704b8373f55f65e85f7aadf5600207209dff OpenOLAT 10.5.0
 f1a0784814fb3b4b6e707c528ea8e50002a72036 OpenOLAT 10.5.0
+0f69f7f504059f74d693436415dd0baf35693bf0 OpenOLAT 10.5.1
diff --git a/src/main/java/org/olat/admin/user/UserAdminController.java b/src/main/java/org/olat/admin/user/UserAdminController.java
index a3e1c5db1577157bae6d07ac6406ab436769e4d4..8742a1cd33f9f9f5f136a2457cf35a018c7adf8d 100644
--- a/src/main/java/org/olat/admin/user/UserAdminController.java
+++ b/src/main/java/org/olat/admin/user/UserAdminController.java
@@ -37,7 +37,7 @@ import org.olat.basesecurity.Constants;
 import org.olat.basesecurity.SecurityGroup;
 import org.olat.core.commons.modules.bc.FolderConfig;
 import org.olat.core.commons.persistence.DBFactory;
-import org.olat.core.commons.services.notifications.NotificationUIFactory;
+import org.olat.core.commons.services.notifications.ui.NotificationSubscriptionController;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.Component;
 import org.olat.core.gui.components.link.Link;
@@ -329,7 +329,7 @@ public class UserAdminController extends BasicController implements Activateable
 
 		Boolean canSubscriptions = BaseSecurityModule.USERMANAGER_CAN_MODIFY_SUBSCRIPTIONS;
 		if (canSubscriptions.booleanValue() || isOlatAdmin) {
-			Controller subscriptionsCtr = NotificationUIFactory.createSubscriptionListingController(identity, ureq, getWindowControl());
+			Controller subscriptionsCtr = new NotificationSubscriptionController(ureq, getWindowControl(), identity, true);
 			listenTo(subscriptionsCtr); // auto-dispose
 			userTabP.addTab(translate(NLS_VIEW_SUBSCRIPTIONS), subscriptionsCtr.getInitialComponent());			
 		}
diff --git a/src/main/java/org/olat/core/commons/services/notifications/NotificationUIFactory.java b/src/main/java/org/olat/core/commons/services/notifications/NotificationUIFactory.java
index 4409c41f6181a396340b782f0d9be05290a1fcde..efe2ab48354872ecc6086d9af0f061e38f86ed8f 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/NotificationUIFactory.java
+++ b/src/main/java/org/olat/core/commons/services/notifications/NotificationUIFactory.java
@@ -29,7 +29,6 @@ import java.util.Date;
 import org.olat.NewControllerFactory;
 import org.olat.core.commons.services.notifications.ui.NotificationNewsController;
 import org.olat.core.commons.services.notifications.ui.NotificationSubscriptionAndNewsController;
-import org.olat.core.commons.services.notifications.ui.NotificationSubscriptionController;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.translator.Translator;
@@ -48,19 +47,6 @@ import org.olat.core.util.Util;
  */
 public class NotificationUIFactory {
 
-	/**
-	 * Create a controller that displays the subscriptions for a specific user
-	 * 
-	 * @param subscriberIdentity
-	 * @param ureq
-	 * @param windowControl
-	 * @return
-	 */
-	public static NotificationSubscriptionController createSubscriptionListingController(Identity subscriberIdentity, UserRequest ureq,
-			WindowControl windowControl) {
-		return new NotificationSubscriptionController(subscriberIdentity, ureq, windowControl);
-	}
-
 	/**
 	 * Create a controller that displays the users news from his subscriptions
 	 * 
diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionAndNewsController.java b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionAndNewsController.java
index 766b7c71dde073e96d42232b8961369f1576f03a..37d2f4ed431e810975141948f0f1dcb6f68bcefd 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionAndNewsController.java
+++ b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionAndNewsController.java
@@ -103,7 +103,7 @@ public class NotificationSubscriptionAndNewsController extends BasicController i
 				// Lazy initialize the notification subscription controller when the
 				// user clicks the tab the first time
 				if (tabbedEvent.getNewComponent() == subscriptionPanel && subscriptionCtr == null) {
-					subscriptionCtr = NotificationUIFactory.createSubscriptionListingController(subscriberIdentity, ureq, getWindowControl());
+					subscriptionCtr = new NotificationSubscriptionController(ureq, getWindowControl(), subscriberIdentity, false);
 					listenTo(subscriptionCtr);
 					subscriptionPanel.setContent(subscriptionCtr.getInitialComponent());
 				}
diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionController.java b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionController.java
index 211ea9db2a0ca4ee89465e690a98f34c9ed62377..966bfdf175ff06ebc3dc55b44c9ba1bb0601674f 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionController.java
+++ b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionController.java
@@ -64,16 +64,18 @@ public class NotificationSubscriptionController extends BasicController {
 	private DialogBoxController delYesNoC;
 	private Identity subscriberIdentity;
 
-	public NotificationSubscriptionController(Identity subscriberIdentity, UserRequest ureq, WindowControl wControl) {
+	public NotificationSubscriptionController(UserRequest ureq, WindowControl wControl,
+			Identity subscriberIdentity, boolean adminColumns) {
 		// use home fallback for rss translations
 		super(ureq, wControl, Util.createPackageTranslator(HomeMainController.class, ureq.getLocale()));
 		this.subscriberIdentity = subscriberIdentity;
 		// Build the table that contains all the subscriptions
 		TableGuiConfiguration tableGuiPrefs = new TableGuiConfiguration();
 		tableGuiPrefs.setTableEmptyMessage(translate("subscriptions.no.subscriptions"));
+		tableGuiPrefs.setPreferencesOffered(true, "notifications-" + adminColumns);
 		subscriptionsTableCtr = new TableController(tableGuiPrefs, ureq, wControl, getTranslator());
 		subscriptionsTableModel = new NotificationSubscriptionTableDataModel(getTranslator());
-		subscriptionsTableModel.addTableColumns(subscriptionsTableCtr);
+		subscriptionsTableModel.addTableColumns(subscriptionsTableCtr, adminColumns);
 		updateSubscriptionsDataModel();
 		listenTo(subscriptionsTableCtr);
 		// Main view is a velocity container
diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionTableDataModel.java b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionTableDataModel.java
index 7ee74ef1e66ec1b6c0f78a999d8835957e7d1861..e1a4aac387246356eba795c49e0c41251e2cd258 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionTableDataModel.java
+++ b/src/main/java/org/olat/core/commons/services/notifications/ui/NotificationSubscriptionTableDataModel.java
@@ -54,10 +54,13 @@ class NotificationSubscriptionTableDataModel extends DefaultTableDataModel<Subsc
 	 * 
 	 * @param subscriptionsTableCtr
 	 */
-	void addTableColumns(TableController subscriptionsTableCtr) {
-		subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.type", 0, "launch", getLocale()));
-		subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.resname", 1, null, getLocale()));
-		subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.subidentifier", 2, null, getLocale()));
+	void addTableColumns(TableController subscriptionsTableCtr, boolean admin) {
+		subscriptionsTableCtr.addColumnDescriptor(false, new DefaultColumnDescriptor("overview.column.key", 0, "launch", getLocale()));
+		subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.type", 1, "launch", getLocale()));
+		subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.resname", 2, null, getLocale()));
+		subscriptionsTableCtr.addColumnDescriptor(new DefaultColumnDescriptor("overview.column.subidentifier", 3, null, getLocale()));
+		subscriptionsTableCtr.addColumnDescriptor(admin, new DefaultColumnDescriptor("overview.column.creationDate", 4, null, getLocale()));
+		subscriptionsTableCtr.addColumnDescriptor(admin, new DefaultColumnDescriptor("overview.column.lastEmail", 5, null, getLocale()));
 		subscriptionsTableCtr.addColumnDescriptor(new StaticColumnDescriptor("del", "overview.column.action", trans
 				.translate("overview.column.action.cellvalue")));
 	}
@@ -80,13 +83,14 @@ class NotificationSubscriptionTableDataModel extends DefaultTableDataModel<Subsc
 		Publisher pub = sub.getPublisher();
 		
 		switch (col) {
-			case 0:
+			case 0: return sub.getKey();
+			case 1:
 				String innerType = pub.getType();
 				return NewControllerFactory.translateResourceableTypeName(innerType, getLocale());
-			case 1:
+			case 2:
 				String containerType = pub.getResName();
 				return NewControllerFactory.translateResourceableTypeName(containerType, getLocale());
-			case 2:
+			case 3:
 				NotificationsHandler handler = NotificationsManager.getInstance().getNotificationsHandler(pub);
 				if(handler == null){
 					return "";
@@ -96,6 +100,8 @@ class NotificationSubscriptionTableDataModel extends DefaultTableDataModel<Subsc
 					return "";
 				}
 				return title;
+			case 4: return sub.getCreationDate();
+			case 5: return sub.getLatestEmailed();
 			default:
 				return "ERROR";
 		}
diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties
index 9775dfad370e3ab1d18737d2b451a5a9593fceaf..e4dd2f6e414fee18ec56ed4e8ed6462e5851fb7c 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties
@@ -45,6 +45,9 @@ notificationsPortlet.multiple.news.in = {0} 
 notificationsPortlet.single.news.in = 1 Ă„nderung in {0}
 overview.column.action=Aktion
 overview.column.action.cellvalue=L\u00F6schen
+overview.column.creationDate=Erstellt am
+overview.column.lastEmail=Letztes E-Mail
+overview.column.key=ID
 overview.column.resname=Art
 overview.column.subidentifier=Titel
 overview.column.type=Typ
diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties
index f2909503157ef896d341ba1074f9d8a4e655ba4d..4f833807b6643e7869b6aa920de7e8f60378e989 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties
@@ -58,6 +58,9 @@ notificationsPortlet.single.news.in=1 modification in {0}
 notificationsPortlet.title=My notifications
 overview.column.action=Action
 overview.column.action.cellvalue=Delete
+overview.column.creationDate=Created on
+overview.column.key=ID
+overview.column.lastEmail=Last e-mail
 overview.column.resname=Type
 overview.column.subidentifier=Title
 overview.column.type=Type
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 61b26bf188e3a1e45c2fea9f817c4806111470af..6f3de54bab14fbdbcaae227df50745f4132a38fb 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
@@ -15,8 +15,8 @@ details.course.infos=Kursdetails
 download.button=Zertifikat herunterladen
 
 
-options.certificates.title=Damit Kurse als bestanden angezeigt werden k\u00F6nnen, muss im Kurshauptknoten zwingend im "Punkte"-Tab die Option <strong>Bestanden berechnen?</strong> aktiviert werden.
-options.certificates.descr=Test
+options.certificates.title=Konfiguration Leistungnachweis
+options.certificates.descr=Damit Kurse als bestanden angezeigt werden k\u00F6nnen, muss im Kurshauptknoten zwingend im "Punkte"-Tab die Option <strong>Bestanden berechnen?</strong> aktiviert werden.
 generate.certificate=Zertifikat erzeugen
 no.certificate=Kein Zertifikat vorhanden
 pdf.certificates=PDF Zertifikat erzeugen
diff --git a/src/main/java/org/olat/course/export/CourseEnvironmentMapper.java b/src/main/java/org/olat/course/export/CourseEnvironmentMapper.java
index 833d47181dcc63b44505016eadf2e31c5d3f6a0c..7fdf81460c7ce3fbbd2cce23a0dac8e071061d6d 100644
--- a/src/main/java/org/olat/course/export/CourseEnvironmentMapper.java
+++ b/src/main/java/org/olat/course/export/CourseEnvironmentMapper.java
@@ -21,8 +21,10 @@ package org.olat.course.export;
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
@@ -40,6 +42,7 @@ public class CourseEnvironmentMapper {
 
 	private final List<BGAreaReference> areas = new ArrayList<BGAreaReference>();
 	private final List<BusinessGroupReference> groups = new ArrayList<BusinessGroupReference>();
+	private final Map<String,Map<String,String>> mapUniqueKeys = new HashMap<>();
 	
 	private Identity author;
 	
@@ -54,6 +57,24 @@ public class CourseEnvironmentMapper {
 	public void setAuthor(Identity author) {
 		this.author = author;
 	}
+	
+	public void addUniqueKeyPair(String ident, String sourceKey, String targetKey) {
+		Map<String,String> map;
+		if(mapUniqueKeys.containsKey(ident)) {
+			map = mapUniqueKeys.get(ident);
+		} else {
+			map = new HashMap<>();
+			mapUniqueKeys.put(ident, map);
+		}
+		map.put(sourceKey, targetKey);
+	}
+	
+	public String getTargetUniqueKey(String ident, String sourceKey) {
+		if(mapUniqueKeys.containsKey(ident)) {
+			return mapUniqueKeys.get(ident).get(sourceKey);
+		}
+		return null;
+	}
 
 	public List<BGAreaReference> getAreas() {
 		return areas;
diff --git a/src/main/java/org/olat/course/nodes/CheckListCourseNode.java b/src/main/java/org/olat/course/nodes/CheckListCourseNode.java
index 27cc580066eb088bb237e33f62638a2b734329ab..b91b622286aabec43b151c297d38bd504974d3e7 100644
--- a/src/main/java/org/olat/course/nodes/CheckListCourseNode.java
+++ b/src/main/java/org/olat/course/nodes/CheckListCourseNode.java
@@ -60,6 +60,7 @@ import org.olat.course.editor.CourseEditorEnv;
 import org.olat.course.editor.NodeEditController;
 import org.olat.course.editor.PublishEvents;
 import org.olat.course.editor.StatusDescription;
+import org.olat.course.export.CourseEnvironmentMapper;
 import org.olat.course.nodes.cl.CheckboxManager;
 import org.olat.course.nodes.cl.model.Checkbox;
 import org.olat.course.nodes.cl.model.CheckboxList;
@@ -489,7 +490,7 @@ public class CheckListCourseNode extends AbstractAccessableCourseNode implements
 			Set<String> usedNames = new HashSet<String>();
 			
 			for(Checkbox checkbox:list.getList()) {
-				VFSContainer dir = checkboxManager.getFileContainer(course.getCourseEnvironment(), this, checkbox);
+				VFSContainer dir = checkboxManager.getFileContainer(course.getCourseEnvironment(), this);
 				if(dir != null) {
 					VFSItem item = dir.resolve(checkbox.getFilename());
 					if(item instanceof VFSLeaf) {
@@ -516,7 +517,7 @@ public class CheckListCourseNode extends AbstractAccessableCourseNode implements
 		CheckboxList list = (CheckboxList)config.get(CONFIG_KEY_CHECKBOX);
 		if(list != null && list.getList() != null) {
 			for(Checkbox checkbox:list.getList()) {
-				File dir = checkboxManager.getFileDirectory(course.getCourseEnvironment(), this, checkbox);
+				File dir = checkboxManager.getFileDirectory(course.getCourseEnvironment(), this);
 				if(dir.exists()) {
 					File fFileExportDir = new File(fExportDirectory, "checklistfiles/" + getIdent() + "/" + checkbox.getCheckboxId());
 					fFileExportDir.mkdirs();
@@ -538,7 +539,7 @@ public class CheckListCourseNode extends AbstractAccessableCourseNode implements
 				String newCheckboxId = UUID.randomUUID().toString();
 				checkbox.setCheckboxId(newCheckboxId);
 				if(fFileImportDir.exists()) {
-					File dir = checkboxManager.getFileDirectory(course.getCourseEnvironment(), this, checkbox);
+					File dir = checkboxManager.getFileDirectory(course.getCourseEnvironment(), this);
 					dir.mkdirs();
 					FileUtils.copyDirContentsToDir(fFileImportDir, dir, false, "import file of checkbox");
 				}
@@ -622,6 +623,56 @@ public class CheckListCourseNode extends AbstractAccessableCourseNode implements
 		Identity mySelf = userCourseEnv.getIdentityEnvironment().getIdentity();
 		am.saveScoreEvaluation(this, mySelf, assessedIdentity, sceval, userCourseEnv, false);
 	}
+	
+	@Override
+	public CourseNode createInstanceForCopy(boolean isNewTitle, ICourse course, Identity author) {
+		CheckListCourseNode cNode = (CheckListCourseNode)super.createInstanceForCopy(isNewTitle, course, author);
+		CheckboxManager checkboxManager = CoreSpringFactory.getImpl(CheckboxManager.class);
+		CheckboxList list = (CheckboxList)cNode.getModuleConfiguration().get(CONFIG_KEY_CHECKBOX);
+		for(Checkbox checkbox:list.getList()) {
+			checkbox.setCheckboxId(UUID.randomUUID().toString());
+		}
+		// the ident of the course node is the same
+		File sourceDir = checkboxManager.getFileDirectory(course.getCourseEnvironment(), this);
+		if(sourceDir.exists()) {
+			File targetDir = checkboxManager.getFileDirectory(course.getCourseEnvironment(), cNode);
+			if(!targetDir.exists()) {
+				targetDir.mkdirs();
+				FileUtils.copyDirContentsToDir(sourceDir, targetDir, false, "copy files of checkbox");
+			}
+		}
+		
+		return cNode;
+	}
+
+	@Override
+	public void postCopy(CourseEnvironmentMapper envMapper, Processing processType, ICourse course, ICourse sourceCourse) {
+		ModuleConfiguration config = getModuleConfiguration();
+		CheckboxManager checkboxManager = CoreSpringFactory.getImpl(CheckboxManager.class);
+		CheckboxList list = (CheckboxList)config.get(CONFIG_KEY_CHECKBOX);
+		for(Checkbox checkbox:list.getList()) {
+			String sourceId = checkbox.getCheckboxId();
+			String targetId = envMapper.getTargetUniqueKey(getIdent(), sourceId);
+			if(targetId == null) {
+				targetId = UUID.randomUUID().toString();
+				envMapper.addUniqueKeyPair(getIdent(), sourceId, targetId);
+			}
+			checkbox.setCheckboxId(targetId);
+		}
+		
+		// the ident of the course node is the same
+		File sourceDir = checkboxManager.getFileDirectory(sourceCourse.getCourseEnvironment(), this);
+		if(sourceDir.exists()) {
+			File targetDir = checkboxManager.getFileDirectory(course.getCourseEnvironment(), this);
+			if(!targetDir.exists()) {
+				targetDir.mkdirs();
+				FileUtils.copyDirContentsToDir(sourceDir, targetDir, false, "copy files of checkbox");
+			}
+		}
+
+		checkboxManager.syncCheckbox(list, course, getIdent());
+		super.postCopy(envMapper, processType, course, sourceCourse);
+	}
 
 	@Override
 	public void updateOnPublish(Locale locale, ICourse course, Identity publisher, PublishEvents publishEvents) {
diff --git a/src/main/java/org/olat/course/nodes/TitledWrapperHelper.java b/src/main/java/org/olat/course/nodes/TitledWrapperHelper.java
index 1dac8485ea80a4562167b0dbf548b5d0f97f3b33..de723be7443f30a787e6e4bdf51288f2726dade7 100644
--- a/src/main/java/org/olat/course/nodes/TitledWrapperHelper.java
+++ b/src/main/java/org/olat/course/nodes/TitledWrapperHelper.java
@@ -47,7 +47,7 @@ public class TitledWrapperHelper {
 				if (StringHelper.containsNonWhitespace(iconCssClass)) {
 					titleInfo.setIconCssClass(iconCssClass);
 				}
-				controller = new TitledWrapperController(ureq, wControl, controller, "o_course_run", titleInfo); 
+				controller = new TitledWrapperController(ureq, wControl, controller, null, titleInfo); 
 			}
 		} else if (CourseNode.DISPLAY_OPTS_TITLE_CONTENT.equals(displayOption)) {
 			if(StringHelper.containsNonWhitespace(courseNode.getLongTitle())) {
@@ -56,7 +56,7 @@ public class TitledWrapperHelper {
 				if (StringHelper.containsNonWhitespace(iconCssClass)) {
 					titleInfo.setIconCssClass(iconCssClass);
 				}
-				controller = new TitledWrapperController(ureq, wControl, controller, "o_course_run", titleInfo);
+				controller = new TitledWrapperController(ureq, wControl, controller, null, titleInfo);
 			}
 		} else if (CourseNode.DISPLAY_OPTS_SHORT_TITLE_DESCRIPTION_CONTENT.equals(displayOption)) {
 			String title = courseNode.getShortTitle();
@@ -73,7 +73,7 @@ public class TitledWrapperHelper {
 				if (StringHelper.containsNonWhitespace(iconCssClass)) {
 					titleInfo.setIconCssClass(iconCssClass);
 				}
-				controller = new TitledWrapperController(ureq, wControl, controller, "o_course_run", titleInfo);
+				controller = new TitledWrapperController(ureq, wControl, controller, null, titleInfo);
 			}
 		} else if (CourseNode.DISPLAY_OPTS_TITLE_DESCRIPTION_CONTENT.equals(displayOption)) {
 
@@ -89,7 +89,7 @@ public class TitledWrapperHelper {
 				if (StringHelper.containsNonWhitespace(iconCssClass)) {
 					titleInfo.setIconCssClass(iconCssClass);
 				}
-				controller = new TitledWrapperController(ureq, wControl, controller, "o_course_run", titleInfo);
+				controller = new TitledWrapperController(ureq, wControl, controller, null, titleInfo);
 			} 
 		}
 		return controller;
diff --git a/src/main/java/org/olat/course/nodes/cl/CheckboxManager.java b/src/main/java/org/olat/course/nodes/cl/CheckboxManager.java
index f968ac3b7bce80c351ef367f0a5beaa31b727610..a0a444f399bde8498e2962390ede137289fefecd 100644
--- a/src/main/java/org/olat/course/nodes/cl/CheckboxManager.java
+++ b/src/main/java/org/olat/course/nodes/cl/CheckboxManager.java
@@ -28,7 +28,6 @@ import org.olat.core.util.vfs.VFSContainer;
 import org.olat.course.nodes.CheckListCourseNode;
 import org.olat.course.nodes.cl.model.AssessmentBatch;
 import org.olat.course.nodes.cl.model.AssessmentData;
-import org.olat.course.nodes.cl.model.Checkbox;
 import org.olat.course.nodes.cl.model.CheckboxList;
 import org.olat.course.nodes.cl.model.DBCheck;
 import org.olat.course.nodes.cl.model.DBCheckbox;
@@ -96,7 +95,7 @@ public interface CheckboxManager {
 	 */
 	public List<AssessmentData> getAssessmentDatas(OLATResourceable ores, String resSubPath, RepositoryEntry re, List<BusinessGroup> groups);
 	
-	public VFSContainer getFileContainer(CourseEnvironment courseEnv, CheckListCourseNode cNode, Checkbox checkbox);
+	public VFSContainer getFileContainer(CourseEnvironment courseEnv, CheckListCourseNode cNode);
 	
-	public File getFileDirectory(CourseEnvironment courseEnv, CheckListCourseNode cNode, Checkbox checkbox);
+	public File getFileDirectory(CourseEnvironment courseEnv, CheckListCourseNode cNode);
 }
diff --git a/src/main/java/org/olat/course/nodes/cl/manager/CheckboxManagerImpl.java b/src/main/java/org/olat/course/nodes/cl/manager/CheckboxManagerImpl.java
index 956335a8f3d32022f00181ae866260980c09fd08..dee62ad9eefb4a56d01bc0d4ccb2b718d641a66a 100644
--- a/src/main/java/org/olat/course/nodes/cl/manager/CheckboxManagerImpl.java
+++ b/src/main/java/org/olat/course/nodes/cl/manager/CheckboxManagerImpl.java
@@ -510,14 +510,14 @@ public class CheckboxManagerImpl implements CheckboxManager {
 	}
 
 	@Override
-	public VFSContainer getFileContainer(CourseEnvironment courseEnv, CheckListCourseNode cNode, Checkbox checkbox) {
+	public VFSContainer getFileContainer(CourseEnvironment courseEnv, CheckListCourseNode cNode) {
 		String path = courseEnv.getCourseBaseContainer().getRelPath() + "/" + CheckListCourseNode.FOLDER_NAME + "/" + cNode.getIdent();
 		OlatRootFolderImpl rootFolder = new OlatRootFolderImpl(path, null);
 		return rootFolder; 
 	}
 
 	@Override
-	public File getFileDirectory(CourseEnvironment courseEnv, CheckListCourseNode cNode, Checkbox checkbox) {
+	public File getFileDirectory(CourseEnvironment courseEnv, CheckListCourseNode cNode) {
 		String path = courseEnv.getCourseBaseContainer().getRelPath() + "/" + CheckListCourseNode.FOLDER_NAME + "/" + cNode.getIdent();
 		File rootFolder = new File(FolderConfig.getCanonicalRoot(), path);
 		return rootFolder; 
diff --git a/src/main/java/org/olat/course/nodes/cl/ui/CheckListBoxListEditController.java b/src/main/java/org/olat/course/nodes/cl/ui/CheckListBoxListEditController.java
index 30f533e4195d3d52af00216450a53914da191d61..eeb89717e0a03e8273515bf90ce1d44cf965c865 100644
--- a/src/main/java/org/olat/course/nodes/cl/ui/CheckListBoxListEditController.java
+++ b/src/main/java/org/olat/course/nodes/cl/ui/CheckListBoxListEditController.java
@@ -147,7 +147,7 @@ public class CheckListBoxListEditController extends FormBasicController {
 		if(list != null && list.getList() != null) {
 			for(Checkbox checkbox:list.getList()) {
 				DownloadLink download = null;
-				VFSContainer container = checkboxManager.getFileContainer(courseEnv, courseNode, checkbox);
+				VFSContainer container = checkboxManager.getFileContainer(courseEnv, courseNode);
 				if(container != null) {
 					VFSItem item = container.resolve(checkbox.getFilename());
 					if(item instanceof VFSLeaf) {
diff --git a/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunController.java b/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunController.java
index ecf16be2e8807d91d510fb80e0c31136e7cddcb7..20e8c5bbdca2bd887c8c3a6ee5a973e34fc74d07 100644
--- a/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunController.java
+++ b/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunController.java
@@ -212,7 +212,7 @@ public class CheckListRunController extends FormBasicController implements Contr
 
 		DownloadLink downloadLink = null;
 		if(StringHelper.containsNonWhitespace(checkbox.getFilename())) {
-			VFSContainer container = checkboxManager.getFileContainer(userCourseEnv.getCourseEnvironment(), courseNode, checkbox);
+			VFSContainer container = checkboxManager.getFileContainer(userCourseEnv.getCourseEnvironment(), courseNode);
 			VFSItem item = container.resolve(checkbox.getFilename());
 			if(item instanceof VFSLeaf) {
 				String name = "file_" + checkbox.getCheckboxId();
diff --git a/src/main/java/org/olat/course/nodes/cl/ui/CheckboxEditController.java b/src/main/java/org/olat/course/nodes/cl/ui/CheckboxEditController.java
index 05b2cadd6fa9861a070b14cf181fa5506aed2b3e..598f08e17d3a60b2fbd4ef45d314f65fbf6257d4 100644
--- a/src/main/java/org/olat/course/nodes/cl/ui/CheckboxEditController.java
+++ b/src/main/java/org/olat/course/nodes/cl/ui/CheckboxEditController.java
@@ -305,7 +305,7 @@ public class CheckboxEditController extends FormBasicController {
 		} else {
 			ICourse course = CourseFactory.loadCourse(courseOres);
 			CourseEnvironment courseEnv = course.getCourseEnvironment();
-			container = checkboxManager.getFileContainer(courseEnv, courseNode, checkbox);
+			container = checkboxManager.getFileContainer(courseEnv, courseNode);
 		}
 		return container;
 	}
diff --git a/src/main/java/org/olat/course/nodes/cl/ui/wizard/CheckListStepRunnerCallback.java b/src/main/java/org/olat/course/nodes/cl/ui/wizard/CheckListStepRunnerCallback.java
index 2bb5d07d2ae260944ebc7f2a283528a08a264ba0..fcf870967d313246b0ebe3928f066fe887d6359d 100644
--- a/src/main/java/org/olat/course/nodes/cl/ui/wizard/CheckListStepRunnerCallback.java
+++ b/src/main/java/org/olat/course/nodes/cl/ui/wizard/CheckListStepRunnerCallback.java
@@ -103,7 +103,7 @@ public class CheckListStepRunnerCallback implements StepRunnerCallback {
 					VFSContainer tmpContainer = new LocalFolderImpl(path);
 					VFSItem item = tmpContainer.resolve(templateBox.getFilename());
 					if(item instanceof VFSLeaf) {
-						VFSContainer container = checkboxManager.getFileContainer(courseEnv, checkNode, checkbox);
+						VFSContainer container = checkboxManager.getFileContainer(courseEnv, checkNode);
 						VFSManager.copyContent(tmpContainer, container);
 						tmpContainer.deleteSilently();
 					}
diff --git a/src/main/java/org/olat/course/run/_content/index.html b/src/main/java/org/olat/course/run/_content/index.html
index 139e73892404caef0e8feabc1b03e16db38de42d..6690446357d68bed623e29c6631ef3656f5fabf6 100644
--- a/src/main/java/org/olat/course/run/_content/index.html
+++ b/src/main/java/org/olat/course/run/_content/index.html
@@ -13,4 +13,6 @@ function o_activateCourseNode(nodeid) {
 }
 /* ]]> */ 
 </script>
-$r.render("coursemain")
\ No newline at end of file
+<div class="o_course_run">
+	$r.render("coursemain")
+</div>
\ No newline at end of file
diff --git a/src/main/java/org/olat/modules/portfolio/ui/BinderMetadataEditController.java b/src/main/java/org/olat/modules/portfolio/ui/BinderMetadataEditController.java
index 0a32d5f397cb0e49c9ff673bf97fd678e1f583ed..0e2656f64168ce7a63d8c1bc9cad7c1bacf54924 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/BinderMetadataEditController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/BinderMetadataEditController.java
@@ -30,7 +30,6 @@ import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.FormItem;
 import org.olat.core.gui.components.form.flexible.FormItemContainer;
 import org.olat.core.gui.components.form.flexible.elements.FileElement;
-import org.olat.core.gui.components.form.flexible.elements.StaticTextElement;
 import org.olat.core.gui.components.form.flexible.elements.TextBoxListElement;
 import org.olat.core.gui.components.form.flexible.elements.TextElement;
 import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
diff --git a/src/main/java/org/olat/modules/video/ui/_content/video_preview.html b/src/main/java/org/olat/modules/video/ui/_content/video_preview.html
index 4445da6917fc37a349786e8deca3d4a923664541..111f6c40380b22434a53a9e02e8dd706112cf284 100644
--- a/src/main/java/org/olat/modules/video/ui/_content/video_preview.html
+++ b/src/main/java/org/olat/modules/video/ui/_content/video_preview.html
@@ -1,6 +1,6 @@
 <div class="o_video_run o_block_large_bottom o_clearfix">
 	<div class="olatFlashMovieViewer">
-		<video id="$r.getId("o_vid")" width="$width" height="$height" controls  autoplay class="o_video">			
+		<video id="$r.getId("o_vid")" width="$width" height="$height" controls  autoplay preload="none" oncontextmenu="return false;" class="o_video">			
 	    	<source type="video/mp4" src="$mediaUrl/$filename" />
 		</video>
 
diff --git a/src/main/java/org/olat/modules/video/ui/_content/video_run.html b/src/main/java/org/olat/modules/video/ui/_content/video_run.html
index 075ccaea53f7d271e51487afefb7d0b7e5e74f1e..bb2e7d0159855fdda8862bd9e41957c16688baf3 100644
--- a/src/main/java/org/olat/modules/video/ui/_content/video_run.html
+++ b/src/main/java/org/olat/modules/video/ui/_content/video_run.html
@@ -1,6 +1,6 @@
 <div class="o_video_run o_block_large_bottom o_clearfix">
 	<div class="olatFlashMovieViewer">
-		<video id="$r.getId("o_vid")" width="$width" height="$height" poster="$masterUrl/poster.jpg" controls  preload="none" #if( $autoplay ) autoplay #end class="o_video">			
+		<video id="$r.getId("o_vid")" width="$width" height="$height" poster="$masterUrl/poster.jpg" controls  preload="none" oncontextmenu="return false;" #if( $autoplay ) autoplay #end class="o_video">			
 	    	#foreach($video in $videos)
 	    		#set($position = $velocityCount - 1)
 	    		<source type="video/mp4" src="$transcodedUrl/${video.getResolution()}video.mp4" title="$displayTitles.get($position) ($r.formatBytes(${video.getSize()}))" />