From b7ec45b3e18956655dc899ed923016ef7151d3a3 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 2 Oct 2013 16:33:00 +0200
Subject: [PATCH] OO-689: make a little more secure

---
 .../olat/commons/calendar/GotoDateEvent.java  |   1 +
 .../commons/calendar/ImportCalendarJob.java   |   4 -
 .../calendar/ui/CalendarExportController.java |   8 +-
 .../calendar/ui/CalendarImportNameForm.java   |   2 +-
 .../calendar/ui/CalendarPrintMapper.java      |   4 +-
 .../ui/KalendarEntryDetailsController.java    |  12 +-
 .../calendar/ui/KalendarEntryForm.java        |   2 +-
 .../ui/components/KalendarRenderWrapper.java  |   1 +
 .../ui/events/KalendarGUIAddEvent.java        |   1 +
 .../info/ui/CreateInfoStepController.java     |   2 +-
 .../info/ui/InfoDisplayController.java        |   3 +-
 .../commons/info/ui/InfoEditController.java   |   2 +-
 .../info/ui/InfoEditFormController.java       |  16 +-
 .../commons/info/ui/_content/display.html     |   2 +-
 .../modules/bc/components/ListRenderer.java   |   4 +-
 .../bc/meta/MetaInfoFormController.java       |  17 +-
 .../glossary/GlossaryFlexionController.java   |  11 +-
 .../glossary/GlossaryMainController.java      |   7 +-
 .../GlossaryTermAndSynonymController.java     |   4 +-
 .../glossary/_content/glossarylist.html       |   4 +-
 .../morphService/MorphologicalService.java    |   6 +-
 .../MorphologicalServiceDEImpl.java           |   9 +-
 .../MorphologicalServiceFRImpl.java           |  12 +-
 .../textboxlist/TextBoxListComponent.java     |   2 +-
 .../FloatingResizableDialogController.java    |   5 +-
 .../AutoCompleterListReceiver.java            |   3 +-
 .../generic/modal/DialogBoxUIFactory.java     |   3 +-
 .../velocity/VelocityRenderDecorator.java     |   5 +-
 .../java/org/olat/core/util/StringHelper.java |  12 ++
 .../core/util/mail/ui/MailController.java     |  21 +--
 .../util/mail/ui/MailFromCellRenderer.java    |  17 +-
 .../assessment/_content/detailview.html       |   6 +-
 .../assessment/_content/identityoverview.html |   6 +-
 .../course/nodes/fo/_content/peekview.html    |   2 +-
 .../ProjectBrokerReturnboxController.java     |   7 +-
 .../ProjectFolderController.java              |   8 +-
 .../ta/DropboxScoringViewController.java      |  30 ++-
 .../course/nodes/ta/ReturnboxController.java  |  19 +-
 .../nodes/ta/TACourseNodeRunController.java   |   3 +-
 .../homepage/GroupInfoDisplayController.java  |   3 +-
 .../AbstractBusinessGroupListController.java  |   3 +-
 .../group/ui/main/MemberInfoController.java   |   3 +-
 .../MemberLeaveConfirmationController.java    |   3 +-
 .../ui/main/_content/accept_reservations.html |   2 +-
 .../_content/group_delete_confirmation.html   |   2 +-
 .../gui/control/OlatFooterController.java     |   3 +-
 .../gui/control/OlatTopNavController.java     |   4 +-
 .../instantMessaging/manager/RosterDAO.java   |   4 -
 .../model/RosterEntryImpl.java                |   1 -
 .../instantMessaging/ui/ChatController.java   |   3 +-
 .../ui/IMBuddyListController.java             |   5 +-
 .../org/olat/instantMessaging/ui/Roster.java  |  12 +-
 .../olat/instantMessaging/ui/RosterForm.java  |   3 +-
 .../ui/_content/buddies_content.html          |   2 +-
 .../ui/_content/chatMsgField.html             |   2 +-
 .../instantMessaging/ui/_content/roster.html  |   2 +-
 .../modules/fo/MessageEditController.java     |   6 +-
 .../fo/_content/attachments-editview.html     |   2 +-
 .../olat/modules/fo/_content/msg-preview.html |   4 +-
 .../olat/modules/fo/_content/threadview.html  |   7 +-
 .../webFeed/ui/blog/_content/posts.html       |   2 +-
 .../org/olat/portfolio/EPAbstractHandler.java |   1 -
 .../portfolio/EPMapOnInvitationExtension.java |   1 -
 .../org/olat/portfolio/EPMyMapsExtension.java |   1 -
 .../olat/portfolio/EPOtherMapsExtension.java  |   1 -
 .../manager/EPNotificationManager.java        |   9 +-
 .../manager/EPNotificationsHandler.java       |   6 +-
 .../olat/portfolio/ui/EPMapRunController.java |   9 +-
 .../portfolio/ui/EPViewModeController.java    |   3 -
 .../ui/PortfolioAdminController.java          |   3 +-
 .../ArtefactWizzardStepsController.java       |   1 -
 .../collect/CmdAddToEPortfolioImpl.java       |   1 -
 .../collect/EPAddArtefactController.java      |   5 +-
 .../EPArtefactWizzardStepCallback.java        |   1 -
 .../ui/artefacts/collect/EPCollectStep01.java |   6 +-
 .../collect/EPCollectStepForm00.java          |   2 +-
 .../collect/EPCollectStepForm01.java          |  15 +-
 .../collect/EPCollectStepForm02.java          |   1 -
 .../collect/EPCollectStepForm03.java          |   1 -
 .../EPCreateFileArtefactStepForm00.java       |   1 -
 .../EPCreateTextArtefactStepForm00.java       |   2 +-
 .../collect/EPReflexionChangeEvent.java       |   3 +-
 .../view/ArtefactTypeImageCellRenderer.java   |   1 -
 .../EPArtefactAttributeSettingController.java |   2 -
 .../view/EPArtefactChoosenEvent.java          |   1 +
 .../view/EPArtefactDeletedEvent.java          |   1 +
 .../view/EPArtefactViewController.java        |  16 +-
 .../EPArtefactViewReadOnlyController.java     |  13 +-
 .../EPMultipleArtefactPreviewController.java  |   1 -
 ...rtefactSmallReadOnlyPreviewController.java |   3 +-
 .../view/EPReflexionViewController.java       |   2 -
 .../artefacts/view/EPTagBrowseController.java |   1 -
 .../ui/artefacts/view/EPTagBrowseEvent.java   |   3 +-
 .../view/_content/smallSingleArtefact.html    |   4 +-
 .../TextArtefactDetailsController.java        |   4 +-
 .../ui/structel/EPAddElementsController.java  |  15 +-
 .../ui/structel/EPArtefactClicked.java        |   3 +-
 .../ui/structel/EPCreateMapController.java    |   1 -
 .../ui/structel/EPMapCreatedEvent.java        |   2 +
 .../portfolio/ui/structel/EPMapEvent.java     |   2 +
 .../ui/structel/EPMapViewController.java      |   3 +-
 .../ui/structel/EPMultiplePageController.java |   8 +-
 .../ui/structel/EPPageViewController.java     |   4 +-
 .../ui/structel/EPStructureChangeEvent.java   |   2 +
 .../EPStructureElementsController.java        |   1 -
 .../ui/structel/EPStructureEvent.java         |   3 +-
 .../ui/structel/_content/mapview.html         |   2 +-
 .../ui/structel/_content/multiMaps.html       |   6 +-
 .../ui/structel/_content/pageView.html        |   2 +-
 .../ui/structel/_content/structElements.html  |   2 +-
 .../EPCollectRestrictionResultController.java |   1 -
 .../edit/EPStructureDetailsController.java    |   1 -
 ...StructureTreeAndDetailsEditController.java |   5 +-
 .../ui/structel/edit/EPTOCController.java     |   2 +-
 .../RepositoryDetailsController.java          |   4 +-
 .../RepositoryEditDescriptionController.java  |   1 +
 .../free/ui/FreeAccessController.java         |   1 +
 .../paypal/ui/PaypalAccessController.java     |   1 +
 .../token/ui/TokenAccessController.java       |   1 +
 .../ui/OrderDetailController.java             |   8 +-
 .../ui/_content/configuration_list.html       |   2 +-
 .../service/document/file/PdfDocument.java    |   4 +
 .../search/ui/_content/standardResult.html    |   2 +-
 .../olat/user/DisplayPortraitController.java  |   5 +-
 .../olat/user/HomePageDisplayController.java  |   9 +-
 .../olat/user/_content/homepagedisplay.html   |   2 +-
 .../propertyhandlers/XingPropertyHandler.java |   8 +-
 .../static/js/tinymce4/tinymce/langs/fr.js    | 175 ++++++++++++++++++
 .../olat/instantMessaging/RosterDAOTest.java  |  26 ---
 129 files changed, 477 insertions(+), 323 deletions(-)
 create mode 100755 src/main/webapp/static/js/tinymce4/tinymce/langs/fr.js

diff --git a/src/main/java/org/olat/commons/calendar/GotoDateEvent.java b/src/main/java/org/olat/commons/calendar/GotoDateEvent.java
index d43c56faab8..f046ccdfbd2 100644
--- a/src/main/java/org/olat/commons/calendar/GotoDateEvent.java
+++ b/src/main/java/org/olat/commons/calendar/GotoDateEvent.java
@@ -38,6 +38,7 @@ import org.olat.core.gui.control.Event;
  */
 public class GotoDateEvent extends Event {
 
+	private static final long serialVersionUID = -6916106022637446581L;
 	private Date gotoDate;
 
 	public GotoDateEvent(Date gotoDate) {
diff --git a/src/main/java/org/olat/commons/calendar/ImportCalendarJob.java b/src/main/java/org/olat/commons/calendar/ImportCalendarJob.java
index 9f07a6bbca0..22dcce5a68e 100644
--- a/src/main/java/org/olat/commons/calendar/ImportCalendarJob.java
+++ b/src/main/java/org/olat/commons/calendar/ImportCalendarJob.java
@@ -26,8 +26,6 @@
 package org.olat.commons.calendar;
 
 import org.olat.core.commons.scheduler.JobWithDB;
-import org.olat.core.logging.OLog;
-import org.olat.core.logging.Tracing;
 import org.quartz.JobExecutionContext;
 
 /**
@@ -40,8 +38,6 @@ import org.quartz.JobExecutionContext;
  */
 public class ImportCalendarJob extends JobWithDB {
 	
-	private static final OLog log = Tracing.createLoggerFor(ImportCalendarJob.class);
-
 	@Override
 	public void executeWithDB(JobExecutionContext context) {
 		try {
diff --git a/src/main/java/org/olat/commons/calendar/ui/CalendarExportController.java b/src/main/java/org/olat/commons/calendar/ui/CalendarExportController.java
index c5a780805fe..f6c2dbf3d6b 100644
--- a/src/main/java/org/olat/commons/calendar/ui/CalendarExportController.java
+++ b/src/main/java/org/olat/commons/calendar/ui/CalendarExportController.java
@@ -35,14 +35,12 @@ import org.olat.core.gui.components.velocity.VelocityContainer;
 import org.olat.core.gui.control.DefaultController;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
-import org.olat.core.gui.translator.PackageTranslator;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.util.Util;
 
 
 public class CalendarExportController extends DefaultController {
 
-	private static final String PACKAGE = Util.getPackageName(CalendarManager.class);
 	private static final String VELOCITY_ROOT = Util.getPackageVelocityRoot(CalendarManager.class);
 
 	private Translator translator;
@@ -50,21 +48,19 @@ public class CalendarExportController extends DefaultController {
 
 	public CalendarExportController(Locale locale, WindowControl wControl, String icalFeedLink) {
 		super(wControl);
-		translator = new PackageTranslator(PACKAGE, locale);
+		translator = Util.createPackageTranslator(CalendarManager.class, locale);
 		
 		colorVC = new VelocityContainer("calEdit", VELOCITY_ROOT + "/calIcalFeed.html", translator, this);
 		colorVC.contextPut("icalFeedLink", icalFeedLink);
-		
 
 		setInitialComponent(colorVC);
 	}
 	
 	public void event(UserRequest ureq, Component source, Event event) {
+		//
 	}
 
-
 	protected void doDispose() {
 		// nothing to dispose
 	}
-
 }
diff --git a/src/main/java/org/olat/commons/calendar/ui/CalendarImportNameForm.java b/src/main/java/org/olat/commons/calendar/ui/CalendarImportNameForm.java
index 463ca0a9781..f49c001ced4 100644
--- a/src/main/java/org/olat/commons/calendar/ui/CalendarImportNameForm.java
+++ b/src/main/java/org/olat/commons/calendar/ui/CalendarImportNameForm.java
@@ -71,7 +71,7 @@ public class CalendarImportNameForm extends FormBasicController {
 		} else {
 			CalendarManager calManager = CalendarManagerFactory.getInstance().getCalendarManager();
 			String calID = ImportCalendarManager.getImportedCalendarID(identity, calendarName.getValue());
-			if (calManager.calendarExists(calManager.TYPE_USER, calID)) {
+			if (calManager.calendarExists(CalendarManager.TYPE_USER, calID)) {
 				calendarName.setErrorKey("cal.import.calname.exists.error", null);
 				return false;
 			}
diff --git a/src/main/java/org/olat/commons/calendar/ui/CalendarPrintMapper.java b/src/main/java/org/olat/commons/calendar/ui/CalendarPrintMapper.java
index 32ff091a665..0adb1d37519 100644
--- a/src/main/java/org/olat/commons/calendar/ui/CalendarPrintMapper.java
+++ b/src/main/java/org/olat/commons/calendar/ui/CalendarPrintMapper.java
@@ -95,7 +95,7 @@ public class CalendarPrintMapper implements Mapper {
 	public MediaResource handle(String relPath, HttpServletRequest request) {
 		StringBuilder sb = new StringBuilder();
 		sb.append("<html><head><title>");
-		sb.append("Hello");
+		sb.append("Calendar");
 		sb.append("</title>");
 		sb.append("<link href=\"").append(themeBaseUri).append("all/content.css\" rel=\"stylesheet\" type=\"text/css\" />\n");
 		sb.append("<link href=\"").append(themeBaseUri).append("layout.css\" rel=\"stylesheet\" type=\"text/css\" />\n");
@@ -243,7 +243,7 @@ public class CalendarPrintMapper implements Mapper {
 			sb.append("<div class=\"o_cal_location\"><span>\n");
 			sb.append(translator.translate("cal.form.location") + ": ");
 			if (!hidden) {
-				sb.append(event.getLocation());
+				sb.append(StringHelper.escapeHtml(event.getLocation()));
 			}
 			sb.append("</span></div>\n");
 		}
diff --git a/src/main/java/org/olat/commons/calendar/ui/KalendarEntryDetailsController.java b/src/main/java/org/olat/commons/calendar/ui/KalendarEntryDetailsController.java
index 121d10a7ac1..5e232661499 100644
--- a/src/main/java/org/olat/commons/calendar/ui/KalendarEntryDetailsController.java
+++ b/src/main/java/org/olat/commons/calendar/ui/KalendarEntryDetailsController.java
@@ -141,9 +141,11 @@ public class KalendarEntryDetailsController extends BasicController {
 					// display link provider if any
 					String calendarID = eventForm.getChoosenKalendarID();
 					KalendarRenderWrapper calendarWrapper = null;
-					for (Iterator iter = availableCalendars.iterator(); iter.hasNext();) {
-						calendarWrapper = (KalendarRenderWrapper) iter.next();
-						if (calendarWrapper.getKalendar().getCalendarID().equals(calendarID)) break;
+					for (Iterator<KalendarRenderWrapper> iter = availableCalendars.iterator(); iter.hasNext();) {
+						calendarWrapper = iter.next();
+						if (calendarWrapper.getKalendar().getCalendarID().equals(calendarID)) {
+							break;
+						}
 					}
 					
 					if(activeLinkProvider == null) {
@@ -193,8 +195,8 @@ public class KalendarEntryDetailsController extends BasicController {
 				if (isNew) {
 					// this is a new event, add event to calendar
 					String calendarID = eventForm.getChoosenKalendarID();
-					for (Iterator iter = availableCalendars.iterator(); iter.hasNext();) {
-						KalendarRenderWrapper calendarWrapper = (KalendarRenderWrapper) iter.next();
+					for (Iterator<KalendarRenderWrapper> iter = availableCalendars.iterator(); iter.hasNext();) {
+						KalendarRenderWrapper calendarWrapper = iter.next();
 						if (!calendarWrapper.getKalendar().getCalendarID().equals(calendarID)) continue;
 						Kalendar cal = calendarWrapper.getKalendar();
 						boolean result = CalendarManagerFactory.getInstance().getCalendarManager().addEventTo(cal, kalendarEvent);
diff --git a/src/main/java/org/olat/commons/calendar/ui/KalendarEntryForm.java b/src/main/java/org/olat/commons/calendar/ui/KalendarEntryForm.java
index 63e14900edf..82213df79e5 100644
--- a/src/main/java/org/olat/commons/calendar/ui/KalendarEntryForm.java
+++ b/src/main/java/org/olat/commons/calendar/ui/KalendarEntryForm.java
@@ -353,7 +353,7 @@ public class KalendarEntryForm extends FormBasicController {
 				buf.append(" ");
 				buf.append(getTranslator().translate("cal.form.created.by"));
 				buf.append(" ");
-				buf.append(event.getCreatedBy());
+				buf.append(StringHelper.escapeHtml(event.getCreatedBy()));
 			} 
 		} else {
 			buf.append("-");
diff --git a/src/main/java/org/olat/commons/calendar/ui/components/KalendarRenderWrapper.java b/src/main/java/org/olat/commons/calendar/ui/components/KalendarRenderWrapper.java
index a51282c2599..4f9473a8e25 100644
--- a/src/main/java/org/olat/commons/calendar/ui/components/KalendarRenderWrapper.java
+++ b/src/main/java/org/olat/commons/calendar/ui/components/KalendarRenderWrapper.java
@@ -79,6 +79,7 @@ public class KalendarRenderWrapper {
 	 */
 	public KalendarRenderWrapper(Kalendar kalendar, KalendarConfig config, int access) {
 		this.kalendar = kalendar;
+		this.kalendarConfig = config;
 		this.access = access;
 	}
 
diff --git a/src/main/java/org/olat/commons/calendar/ui/events/KalendarGUIAddEvent.java b/src/main/java/org/olat/commons/calendar/ui/events/KalendarGUIAddEvent.java
index 745e7c5a0d7..6d9d5a77389 100644
--- a/src/main/java/org/olat/commons/calendar/ui/events/KalendarGUIAddEvent.java
+++ b/src/main/java/org/olat/commons/calendar/ui/events/KalendarGUIAddEvent.java
@@ -67,6 +67,7 @@ public class KalendarGUIAddEvent extends FormEvent {
 		super(CMD_ADD, item);
 		this.calendarID = calendarID;
 		this.startDate = startDate;
+		this.endDate = endDate;
 		this.allDayEvent = allDayEvent;
 	}
 
diff --git a/src/main/java/org/olat/commons/info/ui/CreateInfoStepController.java b/src/main/java/org/olat/commons/info/ui/CreateInfoStepController.java
index 7d2a48c4ad4..ab8ffafcb68 100644
--- a/src/main/java/org/olat/commons/info/ui/CreateInfoStepController.java
+++ b/src/main/java/org/olat/commons/info/ui/CreateInfoStepController.java
@@ -49,7 +49,7 @@ public class CreateInfoStepController extends StepFormBasicController {
 		
 		this.runContext = runContext;
 		
-		infoEditFormController = new InfoEditFormController(ureq, wControl, rootForm);
+		infoEditFormController = new InfoEditFormController(ureq, wControl, rootForm, true);
 		listenTo(infoEditFormController);
 		
 		initForm(ureq);
diff --git a/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java b/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java
index 3db93ca28da..39137b169fd 100644
--- a/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java
+++ b/src/main/java/org/olat/commons/info/ui/InfoDisplayController.java
@@ -393,7 +393,8 @@ public class InfoDisplayController extends FormBasicController {
 				removeAsListenerAndDispose(editDialogBox);
 				editController = new InfoEditController(ureq, getWindowControl(), msg);
 				listenTo(editController);
-				editDialogBox = new CloseableModalController(getWindowControl(), translate("edit"), editController.getInitialComponent());
+				editDialogBox = new CloseableModalController(getWindowControl(), translate("edit"),
+						editController.getInitialComponent(), true, translate("edit.title"), true);
 				editDialogBox.activate();
 				listenTo(editDialogBox);
 			}
diff --git a/src/main/java/org/olat/commons/info/ui/InfoEditController.java b/src/main/java/org/olat/commons/info/ui/InfoEditController.java
index b08cf34ad3f..b98ef00262b 100644
--- a/src/main/java/org/olat/commons/info/ui/InfoEditController.java
+++ b/src/main/java/org/olat/commons/info/ui/InfoEditController.java
@@ -57,7 +57,7 @@ public class InfoEditController extends FormBasicController {
 		
 		this.messageToEdit = messageToEdit;
 		infoFrontendManager = CoreSpringFactory.getImpl(InfoMessageFrontendManager.class);
-		editForm = new InfoEditFormController(ureq, wControl, mainForm);
+		editForm = new InfoEditFormController(ureq, wControl, mainForm, false);
 		editForm.setTitle(messageToEdit.getTitle());
 		editForm.setMessage(messageToEdit.getMessage());
 		listenTo(editForm);
diff --git a/src/main/java/org/olat/commons/info/ui/InfoEditFormController.java b/src/main/java/org/olat/commons/info/ui/InfoEditFormController.java
index c1eee081501..812da560e03 100644
--- a/src/main/java/org/olat/commons/info/ui/InfoEditFormController.java
+++ b/src/main/java/org/olat/commons/info/ui/InfoEditFormController.java
@@ -43,26 +43,22 @@ public class InfoEditFormController extends FormBasicController {
 
 	private TextElement title;
 	private RichTextElement message;
+	private final boolean showTitle;
 	
-	public InfoEditFormController(UserRequest ureq, WindowControl wControl) {
-		super(ureq, wControl);
-		initForm(ureq);
-	}
-	
-	public InfoEditFormController(UserRequest ureq, WindowControl wControl, Form mainForm) {
+	public InfoEditFormController(UserRequest ureq, WindowControl wControl, Form mainForm, boolean showTitle) {
 		super(ureq, wControl, LAYOUT_DEFAULT, null, mainForm);
+		this.showTitle = showTitle;
 		initForm(ureq);
 	}
 
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
-		setFormTitle("edit.title");
+		if(showTitle) {
+			setFormTitle("edit.title");
+		}
 		
 		title = uifactory.addTextElement("info_title", "edit.info_title", 512, "", formLayout);
 		title.setMandatory(true);
-		//message = uifactory.addTextAreaElement("edit.info_message", 6, 80, "", formLayout);
-		//message.setMandatory(true);
-		//message.setMaxLength(2000);
 		
 		message = uifactory.addRichTextElementForStringDataMinimalistic("edit.info_message", "edit.info_message", "", 6, 80, false,
 				formLayout, ureq.getUserSession(), getWindowControl());
diff --git a/src/main/java/org/olat/commons/info/ui/_content/display.html b/src/main/java/org/olat/commons/info/ui/_content/display.html
index 88a126ec61a..73da820a765 100644
--- a/src/main/java/org/olat/commons/info/ui/_content/display.html
+++ b/src/main/java/org/olat/commons/info/ui/_content/display.html
@@ -22,7 +22,7 @@
 			#end
 			$r.render("info.date.${info.getKey()}")
 			<h5>$r.escapeHtml(${info.getTitle()})</h5>
-			<p class="o_item_info">$info.getInfos()#if($info.isModified()), <span class="o_item_info_mod">$info.getModifier()</span>#end</p>
+			<p class="o_item_info">$info.getInfos()#if($info.isModified()), <span class="o_item_info_mod">$r.escapeHtml($info.getModifier())</span>#end</p>
 			<p></p>
 			#if($info.getMessage())
 				<p>$info.getMessage()</p>
diff --git a/src/main/java/org/olat/core/commons/modules/bc/components/ListRenderer.java b/src/main/java/org/olat/core/commons/modules/bc/components/ListRenderer.java
index b5f6395eff7..3690aeb2243 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/components/ListRenderer.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/components/ListRenderer.java
@@ -325,9 +325,9 @@ public class ListRenderer {
 					author = UserManager.getInstance().getUserDisplayName(author);
 				} else {
 					author = null;
-				}
-					
+				}		
 			}
+			author = StringHelper.escapeHtml(author);
 			if (StringHelper.containsNonWhitespace(author)) {
 				sb.append("<p class=\"b_briefcase_author\">").append(Formatter.escapeDoubleQuotes(translator.translate("mf.author")));
 				sb.append(": ").append(Formatter.escapeDoubleQuotes(author)).append("</p>");			
diff --git a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFormController.java b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFormController.java
index 13492899161..221a7e70927 100644
--- a/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFormController.java
+++ b/src/main/java/org/olat/core/commons/modules/bc/meta/MetaInfoFormController.java
@@ -177,22 +177,27 @@ public class MetaInfoFormController extends FormBasicController {
 		}
 
 		// title
-		title = uifactory.addTextElement("title", "mf.title", -1, (meta != null ? meta.getTitle() : null), formLayout);
+		String t = StringHelper.escapeHtml(meta != null ? meta.getTitle() : null);
+		title = uifactory.addTextElement("title", "mf.title", -1, t, formLayout);
 
 		// comment/description
 		comment = uifactory.addTextAreaElement("comment", "mf.comment", -1, 3, 1, true, (meta != null ? meta.getComment() : null), formLayout);
 
 		// creator
-		creator = uifactory.addTextElement("creator", "mf.creator", -1, (meta != null ? meta.getCreator() : null), formLayout);
+		String c = StringHelper.escapeHtml(meta != null ? meta.getCreator() : null);
+		creator = uifactory.addTextElement("creator", "mf.creator", -1, c, formLayout);
 
 		// publisher
-		publisher = uifactory.addTextElement("publisher", "mf.publisher", -1, (meta != null ? meta.getPublisher() : null), formLayout);
+		String p = StringHelper.escapeHtml(meta != null ? meta.getPublisher() : null);
+		publisher = uifactory.addTextElement("publisher", "mf.publisher", -1, p, formLayout);
 
 		// source/origin
-		source = uifactory.addTextElement("source", "mf.source", -1, (meta != null ? meta.getSource() : null), formLayout);
+		String s = StringHelper.escapeHtml(meta != null ? meta.getSource() : null);
+		source = uifactory.addTextElement("source", "mf.source", -1, s, formLayout);
 
 		// city
-		city = uifactory.addTextElement("city", "mf.city", -1, (meta != null ? meta.getCity() : null), formLayout);
+		String ci = StringHelper.escapeHtml(meta != null ? meta.getCity() : null);
+		city = uifactory.addTextElement("city", "mf.city", -1, ci, formLayout);
 
 		// publish date
 		FormLayoutContainer publicationDate = FormLayoutContainer.createHorizontalFormLayout("publicationDateLayout", getTranslator());
@@ -277,7 +282,7 @@ public class MetaInfoFormController extends FormBasicController {
 			}
 			
 			// username
-			String author = meta == null ? "" : meta.getHTMLFormattedAuthor();
+			String author = StringHelper.escapeHtml(meta == null ? "" : meta.getHTMLFormattedAuthor());
 			uifactory.addStaticTextElement("mf.author", author, formLayout);
 
 			// filesize
diff --git a/src/main/java/org/olat/core/commons/modules/glossary/GlossaryFlexionController.java b/src/main/java/org/olat/core/commons/modules/glossary/GlossaryFlexionController.java
index 1df6cc5ec83..30884d5896a 100644
--- a/src/main/java/org/olat/core/commons/modules/glossary/GlossaryFlexionController.java
+++ b/src/main/java/org/olat/core/commons/modules/glossary/GlossaryFlexionController.java
@@ -62,7 +62,7 @@ public class GlossaryFlexionController extends FormBasicController {
 	private FormItem flexButton;
 	private MultipleSelectionElement existingFlexions;
 	private MorphologicalService morphService;
-	private ArrayList<String> flexionsMSResult = null;
+	private List<String> flexionsMSResult = null;
 	private FormLink selectAllLink;
 	private FormLink deselectAllLink;
 	private String morphServicePresetIdent;
@@ -177,7 +177,6 @@ public class GlossaryFlexionController extends FormBasicController {
 	}
 
 	@Override
-	@SuppressWarnings("unused")
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		setFormTitle("flexions.title");
     
@@ -204,7 +203,8 @@ public class GlossaryFlexionController extends FormBasicController {
 		}		
 		
 		//combining flexion list from already existing and newly fetched
-		ArrayList<String> glossItemFlexions = (ArrayList<String>) glossaryItem.getGlossFlexions().clone();
+		@SuppressWarnings("unchecked")
+		List<String> glossItemFlexions = (List<String>) glossaryItem.getGlossFlexions().clone();
 		if (glossItemFlexions.size() != 0 || flexionsMSResult != null) {
 			String[] existingKeys = ArrayHelper.toArray(glossItemFlexions);
 			if (flexionsMSResult != null) glossItemFlexions.addAll(flexionsMSResult);
@@ -233,9 +233,8 @@ public class GlossaryFlexionController extends FormBasicController {
 	 * internal method to remove Duplicates from list
 	 * @param arlList
 	 */
-	@SuppressWarnings("unchecked")
-	private static void removeDuplicate(ArrayList<String> arlList) {
-		HashSet<String> h = new HashSet<String>(arlList);
+	private static void removeDuplicate(List<String> arlList) {
+		Set<String> h = new HashSet<String>(arlList);
 		arlList.clear();
 		arlList.addAll(h);
 	}
diff --git a/src/main/java/org/olat/core/commons/modules/glossary/GlossaryMainController.java b/src/main/java/org/olat/core/commons/modules/glossary/GlossaryMainController.java
index dfbf191ffef..b6ea8826fc1 100644
--- a/src/main/java/org/olat/core/commons/modules/glossary/GlossaryMainController.java
+++ b/src/main/java/org/olat/core/commons/modules/glossary/GlossaryMainController.java
@@ -87,6 +87,7 @@ public class GlossaryMainController extends BasicController implements Activatea
 	private static final String CMD_MODIFIER = "cmd.modifier.";
 	private static final String REGISTER_LINK = "register.link.";
 	private final Formatter formatter;
+	private final UserManager userManager;
 
 	public GlossaryMainController(WindowControl control, UserRequest ureq, VFSContainer glossaryFolder, OLATResourceable res,
 			GlossarySecurityCallback glossarySecCallback, boolean eventProfil) {
@@ -99,6 +100,7 @@ public class GlossaryMainController extends BasicController implements Activatea
 		ThreadLocalUserActivityLogger.log(LearningResourceLoggingAction.LEARNING_RESOURCE_OPEN, getClass());
 		glistVC = createVelocityContainer("glossarylist");
 
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 		formatter = Formatter.getInstance(getLocale());
 
 		glossaryItemList = GlossaryItemManager.getInstance().getGlossaryItemListByVFSItem(glossaryFolder);
@@ -228,6 +230,7 @@ public class GlossaryMainController extends BasicController implements Activatea
 	private void openProfil(UserRequest ureq, String pos, boolean author) {
 		int id = Integer.parseInt(pos);
 		
+		@SuppressWarnings("unchecked")
 		List<GlossaryItemWrapper> wrappers = (List<GlossaryItemWrapper>)glistVC.getContext().get("editAndDelButtonList");
 		for(GlossaryItemWrapper wrapper:wrappers) {
 			if(id == wrapper.getId()) {
@@ -337,8 +340,8 @@ public class GlossaryMainController extends BasicController implements Activatea
 			// try to get lock for this glossary
 			lockEntry = CoordinatorManager.getInstance().getCoordinator().getLocker().acquireLock(resourceable, ureq.getIdentity(), "GlossaryEdit");
 			if (!lockEntry.isSuccess()) {
-				String fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(lockEntry.getOwner());
-				showInfo("glossary.locked", fullName);
+				String fullName = userManager.getUserDisplayName(lockEntry.getOwner());
+				showInfo("glossary.locked", StringHelper.escapeHtml(fullName));
 				glistVC.contextPut("editModeEnabled", Boolean.FALSE);
 			}
 		}
diff --git a/src/main/java/org/olat/core/commons/modules/glossary/GlossaryTermAndSynonymController.java b/src/main/java/org/olat/core/commons/modules/glossary/GlossaryTermAndSynonymController.java
index 408f484c00e..e9ef7456949 100644
--- a/src/main/java/org/olat/core/commons/modules/glossary/GlossaryTermAndSynonymController.java
+++ b/src/main/java/org/olat/core/commons/modules/glossary/GlossaryTermAndSynonymController.java
@@ -25,6 +25,7 @@ import java.util.Collections;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.FormItem;
@@ -231,9 +232,8 @@ public class GlossaryTermAndSynonymController extends FormBasicController {
 	// nothing to do
 	}
 
-	@SuppressWarnings("unchecked")
 	private static void removeDuplicate(ArrayList<String> arlList) {
-		HashSet h = new HashSet(arlList);
+		Set<String> h = new HashSet<String>(arlList);
 		arlList.clear();
 		arlList.addAll(h);
 	}
diff --git a/src/main/java/org/olat/core/commons/modules/glossary/_content/glossarylist.html b/src/main/java/org/olat/core/commons/modules/glossary/_content/glossarylist.html
index c99f6dc6253..443cc4fa644 100644
--- a/src/main/java/org/olat/core/commons/modules/glossary/_content/glossarylist.html
+++ b/src/main/java/org/olat/core/commons/modules/glossary/_content/glossarylist.html
@@ -39,7 +39,7 @@
 						#if($glossaryItem.authorCmd)
 							<a href="$r.commandURI($glossaryItem.authorCmd)" target="o_glossary_profil" onclick="return o2cl()">$glossaryItem.authorName</a>
 						#else
-							<a href="$glossaryItem.authorLink" class="">$glossaryItem.authorName</a>#end
+							<a href="$glossaryItem.authorLink" class="">$r.escapeHtml($glossaryItem.authorName)</a>#end
 							${glossaryItem.creationDate}
 							#if($glossaryItem.hasModifier()), #end</span>
 					#end
@@ -48,7 +48,7 @@
 						#if($glossaryItem.modifierCmd)
 							<a href="$r.commandURI($glossaryItem.modifierCmd)" target="o_glossary_profil" onclick="return o2cl()" >$glossaryItem.modifierName</a>
 						#else
-							<a href="$glossaryItem.modifierLink" class="">$glossaryItem.modifierName</a>
+							<a href="$glossaryItem.modifierLink" class="">$r.escapeHtml($glossaryItem.modifierName)</a>
 						#end
 						$glossaryItem.lastModificationDate</span>
 					#end
diff --git a/src/main/java/org/olat/core/commons/modules/glossary/morphService/MorphologicalService.java b/src/main/java/org/olat/core/commons/modules/glossary/morphService/MorphologicalService.java
index 6a4e74cc022..5c8b0538a86 100644
--- a/src/main/java/org/olat/core/commons/modules/glossary/morphService/MorphologicalService.java
+++ b/src/main/java/org/olat/core/commons/modules/glossary/morphService/MorphologicalService.java
@@ -20,7 +20,7 @@
 
 package org.olat.core.commons.modules.glossary.morphService;
 
-import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Description:<br>
@@ -43,7 +43,7 @@ public interface MorphologicalService {
 	 * @param word	a single word or a wordgroup
 	 * @return list of flexions found with a morphological service
 	 */
-	public ArrayList<String> getFlexions(String partOfSpeech, String word);
+	public List<String> getFlexions(String partOfSpeech, String word);
 	
 	/**
 	 * same as getFlexions(String partOfSpeech, String word) 
@@ -51,7 +51,7 @@ public interface MorphologicalService {
 	 * @param word
 	 * @return
 	 */
-	public ArrayList<String> getFlexions(String word);
+	public List<String> getFlexions(String word);
 	
 	/**
 	 * returns part-of-speech for a given word or wordgroup
diff --git a/src/main/java/org/olat/core/commons/modules/glossary/morphService/MorphologicalServiceDEImpl.java b/src/main/java/org/olat/core/commons/modules/glossary/morphService/MorphologicalServiceDEImpl.java
index d99474cb45a..f656a0aeb86 100644
--- a/src/main/java/org/olat/core/commons/modules/glossary/morphService/MorphologicalServiceDEImpl.java
+++ b/src/main/java/org/olat/core/commons/modules/glossary/morphService/MorphologicalServiceDEImpl.java
@@ -65,14 +65,15 @@ public class MorphologicalServiceDEImpl implements MorphologicalService {
 	 * 
 	 */ 
 	public MorphologicalServiceDEImpl() {
-	// TODO Auto-generated constructor stub
+		// 
 	}
 
 	/**
 	 * 
 	 * @see org.olat.core.commons.modules.glossary.morphService.FlexionServiceClient#getFlexions(java.lang.String)
 	 */
-	public ArrayList<String> getFlexions(String word) {
+	@Override
+	public List<String> getFlexions(String word) {
 		return getFlexions(assumePartOfSpeech(word), word);
 	}
 
@@ -81,7 +82,8 @@ public class MorphologicalServiceDEImpl implements MorphologicalService {
 	 * @see org.olat.core.commons.modules.glossary.morphService.FlexionServiceClient#getFlexions(java.lang.String,
 	 *      java.lang.String)
 	 */
-	public ArrayList<String> getFlexions(String partOfSpeech, String word) {
+	@Override
+	public List<String> getFlexions(String partOfSpeech, String word) {
 		InputStream xmlReplyStream = retreiveXMLReply(partOfSpeech, word);
 		XStream xstream = XStreamHelper.createXStreamInstance();
 		xstream.alias("xml", FlexionReply.class);
@@ -106,6 +108,7 @@ public class MorphologicalServiceDEImpl implements MorphologicalService {
 	 * 
 	 * @see org.olat.core.commons.modules.glossary.morphService.FlexionServiceClient#assumePartOfSpeech(java.lang.String)
 	 */
+	@Override
 	public String assumePartOfSpeech(String glossTerm) {
 		if (glossTerm.contains(",")) {
 			// assume the form "House, beautiful"
diff --git a/src/main/java/org/olat/core/commons/modules/glossary/morphService/MorphologicalServiceFRImpl.java b/src/main/java/org/olat/core/commons/modules/glossary/morphService/MorphologicalServiceFRImpl.java
index 4b06b3682ad..18b9b926979 100644
--- a/src/main/java/org/olat/core/commons/modules/glossary/morphService/MorphologicalServiceFRImpl.java
+++ b/src/main/java/org/olat/core/commons/modules/glossary/morphService/MorphologicalServiceFRImpl.java
@@ -57,11 +57,8 @@ public class MorphologicalServiceFRImpl extends LogDelegator implements Morpholo
 
 	private String replyStatus = "";
 
-	/**
-	 * 
-	 */ 
 	public MorphologicalServiceFRImpl() {
-	// TODO Auto-generated constructor stub
+		//
 	}
 
 	/**
@@ -69,7 +66,8 @@ public class MorphologicalServiceFRImpl extends LogDelegator implements Morpholo
 	 * @see org.olat.core.commons.modules.glossary.morphService.FlexionServiceClient#getFlexions(java.lang.String,
 	 *      java.lang.String)
 	 */
-	public ArrayList<String> getFlexions(String word) {
+	@Override
+	public List<String> getFlexions(String word) {
 		InputStream xmlReplyStream = retreiveXMLReply(word);
 		XStream xstream = XStreamHelper.createXStreamInstance();
 		xstream.alias("xml", FlexionReply.class);
@@ -127,6 +125,7 @@ public class MorphologicalServiceFRImpl extends LogDelegator implements Morpholo
 	 * 
 	 * @see org.olat.core.commons.modules.glossary.morphService.FlexionServiceClient#getReplyStatus()
 	 */
+	@Override
 	public String getReplyStatus() {
 		return replyStatus;
 	}
@@ -144,6 +143,7 @@ public class MorphologicalServiceFRImpl extends LogDelegator implements Morpholo
 	 * 
 	 * @see org.olat.core.commons.modules.glossary.morphService.FlexionServiceManager#getFlexionServiceDescriptor()
 	 */
+	@Override
 	public String getMorphServiceDescriptor() {
 		return SERVICE_NAME;
 	}
@@ -158,7 +158,7 @@ public class MorphologicalServiceFRImpl extends LogDelegator implements Morpholo
 
 
 	@Override
-	public ArrayList<String> getFlexions(String partOfSpeech, String word) {
+	public List<String> getFlexions(String partOfSpeech, String word) {
 		return getFlexions(word);
 	}
 
diff --git a/src/main/java/org/olat/core/gui/components/textboxlist/TextBoxListComponent.java b/src/main/java/org/olat/core/gui/components/textboxlist/TextBoxListComponent.java
index 07b5abb4f3b..e2dadd36a21 100644
--- a/src/main/java/org/olat/core/gui/components/textboxlist/TextBoxListComponent.java
+++ b/src/main/java/org/olat/core/gui/components/textboxlist/TextBoxListComponent.java
@@ -393,7 +393,7 @@ public abstract class TextBoxListComponent extends FormBaseComponentImpl {
 			Map<String, String> autoCont = getAutoCompleteContent();
 			if (autoCont != null) {
 				for (String item : autoCont.keySet()) {
-					array.put(autoCont.get(item));
+					array.put(StringHelper.escapeHtml(autoCont.get(item)));
 				}
 			}
 		} catch (Exception e) {
diff --git a/src/main/java/org/olat/core/gui/control/floatingresizabledialog/FloatingResizableDialogController.java b/src/main/java/org/olat/core/gui/control/floatingresizabledialog/FloatingResizableDialogController.java
index b92f56cfed5..3e87c395d48 100644
--- a/src/main/java/org/olat/core/gui/control/floatingresizabledialog/FloatingResizableDialogController.java
+++ b/src/main/java/org/olat/core/gui/control/floatingresizabledialog/FloatingResizableDialogController.java
@@ -130,13 +130,16 @@ public class FloatingResizableDialogController extends BasicController {
 			wrapper.put("layout", jsAndCssComp);
 		}
 		
+		String escapedTitle = StringHelper.escapeHtml(title);
+		escapedTitle = StringHelper.escapeJavaScript(title);
+		
 		panelName = "o_extjsPanel_" + (uniquePanelName == null ? hashCode() : uniquePanelName);
 		wrapper.contextPut("panelName", panelName);
 		wrapper.contextPut("width", this.width);
 		wrapper.contextPut("height", this.height);
 		wrapper.contextPut("offsetX", this.offsetX);
 		wrapper.contextPut("offsetY", this.offsetY);
-		wrapper.contextPut("title", title);
+		wrapper.contextPut("title", escapedTitle);
 		wrapper.contextPut("collabsibleContentPanelTitel", StringEscapeUtils.escapeHtml(collabsibleContentPanelTitel));
 		wrapper.contextPut("resizable", resizable);
 		wrapper.contextPut("constrain", constrain);
diff --git a/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/AutoCompleterListReceiver.java b/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/AutoCompleterListReceiver.java
index d6f75c8e434..9b5458a4268 100644
--- a/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/AutoCompleterListReceiver.java
+++ b/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/AutoCompleterListReceiver.java
@@ -25,6 +25,7 @@ import org.json.JSONObject;
 import org.olat.core.gui.util.CSSHelper;
 import org.olat.core.logging.AssertException;
 import org.olat.core.logging.LogDelegator;
+import org.olat.core.util.StringHelper;
 
 /**
  * 
@@ -97,7 +98,7 @@ public class AutoCompleterListReceiver extends LogDelegator implements ListRecei
 				}
 			}
 			// add value to be displayed
-			object.put(VALUE, displayText);
+			object.put(VALUE, StringHelper.escapeHtml(displayText));
 			// add optional css class
 			if (iconCssClass == null) {
 				object.put(CSS_CLASS, CSS_CLASS_EMPTY);								
diff --git a/src/main/java/org/olat/core/gui/control/generic/modal/DialogBoxUIFactory.java b/src/main/java/org/olat/core/gui/control/generic/modal/DialogBoxUIFactory.java
index 021a55bf184..0d9d10495dc 100644
--- a/src/main/java/org/olat/core/gui/control/generic/modal/DialogBoxUIFactory.java
+++ b/src/main/java/org/olat/core/gui/control/generic/modal/DialogBoxUIFactory.java
@@ -35,6 +35,7 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.logging.AssertException;
 import org.olat.core.util.Formatter;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.Util;
 import org.olat.core.util.coordinate.LockResult;
 import org.olat.user.UserManager;
@@ -119,7 +120,7 @@ public class DialogBoxUIFactory {
 			throw new AssertException("do not create a 'is locked message' if lock was succesfull! concerns lock:"+lockEntry.getOwner());
 		}
 		String fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(lockEntry.getOwner());
-		String[] i18nParams = new String[] { fullName,
+		String[] i18nParams = new String[] { StringHelper.escapeHtml(fullName),
 				Formatter.getInstance(ureq.getLocale()).formatTime(new Date(lockEntry.getLockAquiredTime())) };
 		String lockMsg = translator.translate(i18nLockMsgKey, i18nParams);
 		
diff --git a/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java b/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java
index 3a6e68071af..28b216b6a1a 100644
--- a/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java
+++ b/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java
@@ -42,6 +42,7 @@ import org.olat.core.gui.translator.PackageTranslator;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.helpers.Settings;
 import org.olat.core.util.Formatter;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.filter.Filter;
 import org.olat.core.util.filter.FilterFactory;
 import org.olat.core.util.filter.impl.OWASPAntiSamyXSSFilter;
@@ -483,7 +484,7 @@ public class VelocityRenderDecorator {
 	 * Escapes the characters in a String for JavaScript use.
 	 */
 	public String escapeJavaScript(String str) {
-		return StringEscapeUtils.escapeJavaScript(str);
+		return StringHelper.escapeJavaScript(str);
 	}
 	
 	/**
@@ -495,7 +496,7 @@ public class VelocityRenderDecorator {
 		if(str == null) {
 			return "";
 		}
-		return StringEscapeUtils.escapeHtml(str);
+		return StringHelper.escapeHtml(str);
 	}
 	
 	public String xssScan(String str) {
diff --git a/src/main/java/org/olat/core/util/StringHelper.java b/src/main/java/org/olat/core/util/StringHelper.java
index a9a2e101d33..63e499abab2 100644
--- a/src/main/java/org/olat/core/util/StringHelper.java
+++ b/src/main/java/org/olat/core/util/StringHelper.java
@@ -357,6 +357,18 @@ public class StringHelper {
 	public static final String xssScan(String str) {
 		return new OWASPAntiSamyXSSFilter().filter(str);
 	}
+	
+	public static final String escapeJavaScript(String str) {
+		return StringEscapeUtils.escapeJavaScript(str);
+	}
+	
+	public static final void escapeJavaScript(Writer writer, String str) {
+		try {
+			StringEscapeUtils.escapeJavaScript(writer, str);
+		} catch (IOException e) {
+			log.error("Error escaping JavaScript", e);
+		}
+	}
 
 	/**
 	 * @param cellValue
diff --git a/src/main/java/org/olat/core/util/mail/ui/MailController.java b/src/main/java/org/olat/core/util/mail/ui/MailController.java
index 1df230da38d..ec0fd567800 100644
--- a/src/main/java/org/olat/core/util/mail/ui/MailController.java
+++ b/src/main/java/org/olat/core/util/mail/ui/MailController.java
@@ -37,9 +37,6 @@ import org.olat.core.gui.components.link.Link;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
-import org.olat.core.id.Identity;
-import org.olat.core.id.User;
-import org.olat.core.id.UserConstants;
 import org.olat.core.util.StringHelper;
 import org.olat.core.util.Util;
 import org.olat.core.util.filter.impl.OWASPAntiSamyXSSFilter;
@@ -48,6 +45,7 @@ import org.olat.core.util.mail.MailModule;
 import org.olat.core.util.mail.model.DBMail;
 import org.olat.core.util.mail.model.DBMailAttachment;
 import org.olat.core.util.mail.model.DBMailRecipient;
+import org.olat.user.UserManager;
 
 /**
  * 
@@ -66,6 +64,7 @@ public class MailController extends FormBasicController {
 	private final DBMail mail;
 	private final List<DBMailAttachment> attachments;
 	private final MailManager mailManager;
+	private final UserManager userManager;
 	
 	public MailController(UserRequest ureq, WindowControl wControl, DBMail mail, boolean back) {
 		super(ureq, wControl, LAYOUT_VERTICAL);
@@ -73,6 +72,7 @@ public class MailController extends FormBasicController {
 		this.mail = mail;
 		this.back = back;
 		mailManager = CoreSpringFactory.getImpl(MailManager.class);
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 		attachments = mailManager.getAttachments(mail);
 		if(!attachments.isEmpty()) {
 			mapperBaseURI = registerMapper(ureq, new MailAttachmentMapper(mailManager));
@@ -100,7 +100,7 @@ public class MailController extends FormBasicController {
 		String subject = StringHelper.escapeHtml(mail.getSubject());
 		uifactory.addStaticTextElement("subject", "mail.subject", subject, formLayout);		
 		
-		String from = getFullName(mail.getFrom());
+		String from = StringHelper.escapeHtml(getFullName(mail.getFrom()));
 		uifactory.addStaticTextElement("from", "mail.from", from, formLayout);
 		
 		String recipients = getRecipients();
@@ -141,18 +141,7 @@ public class MailController extends FormBasicController {
 	
 	private String getFullName(DBMailRecipient recipient) {
 		if(recipient == null) return "";
-		return getFullName(recipient.getRecipient());
-	}
-	
-	private String getFullName(Identity identity) {
-		StringBuilder sb = new StringBuilder();
-		if(identity != null) {
-			User user = identity.getUser();
-			sb.append(user.getProperty(UserConstants.LASTNAME, null))
-				.append(" ")
-				.append(user.getProperty(UserConstants.FIRSTNAME, null));
-		}
-		return sb.toString();
+		return userManager.getUserDisplayName(recipient.getRecipient());
 	}
 	
 	private String formattedBody() {
diff --git a/src/main/java/org/olat/core/util/mail/ui/MailFromCellRenderer.java b/src/main/java/org/olat/core/util/mail/ui/MailFromCellRenderer.java
index db4d381f0bb..7c1e801bfd0 100644
--- a/src/main/java/org/olat/core/util/mail/ui/MailFromCellRenderer.java
+++ b/src/main/java/org/olat/core/util/mail/ui/MailFromCellRenderer.java
@@ -22,6 +22,7 @@ package org.olat.core.util.mail.ui;
 import java.util.Locale;
 import java.util.UUID;
 
+import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.components.link.Link;
 import org.olat.core.gui.components.link.LinkFactory;
 import org.olat.core.gui.components.table.CustomCellRenderer;
@@ -33,8 +34,8 @@ import org.olat.core.gui.render.StringOutput;
 import org.olat.core.gui.render.URLBuilder;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.id.Identity;
-import org.olat.core.id.User;
-import org.olat.core.id.UserConstants;
+import org.olat.core.util.StringHelper;
+import org.olat.user.UserManager;
 
 /**
  * 
@@ -50,32 +51,32 @@ public class MailFromCellRenderer implements CustomCellRenderer {
 	private final Translator translator;
 	private VelocityContainer container;
 	private final Controller listeningController;
+	private final UserManager userManager;
 	
 	public MailFromCellRenderer(Controller listeningController, VelocityContainer container, Translator translator) {
 		this.listeningController = listeningController;
 		this.container = container;
 		this.translator = translator;
+		userManager = CoreSpringFactory.getImpl(UserManager.class);
 	}
 
 	@Override
 	public void render(StringOutput sb, Renderer renderer, Object val, Locale locale, int alignment, String action) {
 		if(val instanceof Identity) {
 			Identity identity = (Identity)val;
-			User user = identity.getUser();
-			String fullName = user.getProperty(UserConstants.LASTNAME, null) + " " + user.getProperty(UserConstants.FIRSTNAME, null);
-			
+			String fullName = userManager.getUserDisplayName(identity);
 			if(renderer == null) {
-				sb.append(fullName);
+				sb.appendHtmlEscaped(fullName);
 			} else {
 				Link link = LinkFactory.createLink("bp_" + UUID.randomUUID().toString(), container, listeningController);
-				link.setCustomDisplayText(fullName);
+				link.setCustomDisplayText(StringHelper.escapeHtml(fullName));
 				link.setUserObject("[Identity:" + identity.getKey() + "]");
 				URLBuilder ubu = renderer.getUrlBuilder().createCopyFor(link);
 				RenderResult renderResult = new RenderResult();
 				link.getHTMLRendererSingleton().render(renderer, sb, link, ubu, translator, renderResult, null);
 			}
 		} else if (val instanceof String) {
-			sb.append("<span>").append((String)val).append("</span>");
+			sb.append("<span>").appendHtmlEscaped((String)val).append("</span>");
 		}
 	}
 }
diff --git a/src/main/java/org/olat/course/assessment/_content/detailview.html b/src/main/java/org/olat/course/assessment/_content/detailview.html
index 9efb61094b7..27904268fa2 100644
--- a/src/main/java/org/olat/course/assessment/_content/detailview.html
+++ b/src/main/java/org/olat/course/assessment/_content/detailview.html
@@ -13,7 +13,7 @@ $r.render("backLink")
 <table class="b_table">
 	<tr>
 		<td>
-			<span class="b_with_small_icon_left b_user_icon">$user.getProperty("firstName", $locale) $user.getProperty("lastName", $locale)</span>
+			<span class="b_with_small_icon_left b_user_icon">$r.escapeHtml($user.getProperty("firstName", $locale)) $r.escapeHtml($user.getProperty("lastName", $locale))</span>
 		</td>
 		<td>
 			$user.getProperty("email", $locale)
@@ -21,10 +21,10 @@ $r.render("backLink")
 			 / $user.getProperty("institutionalEmail", $locale)
 			#end
 			#if ($user.getProperty("institutionalName", $locale))
-				<br />$user.getProperty("institutionalName", $locale)
+				<br />$r.escapeHtml($user.getProperty("institutionalName", $locale))
 			#end
 			#if ($user.getProperty("institutionalUserIdentifier", $locale))
-				<br />$user.getProperty("institutionalUserIdentifier", $locale)
+				<br />$r.escapeHtml($user.getProperty("institutionalUserIdentifier", $locale))
 			#end
 		</td>
 	</tr>
diff --git a/src/main/java/org/olat/course/assessment/_content/identityoverview.html b/src/main/java/org/olat/course/assessment/_content/identityoverview.html
index 558c8da7b41..dbaa17ad4a9 100644
--- a/src/main/java/org/olat/course/assessment/_content/identityoverview.html
+++ b/src/main/java/org/olat/course/assessment/_content/identityoverview.html
@@ -6,7 +6,7 @@
 
 #if($user)
 	<span class="b_with_small_icon_left b_user_icon">
-		$user.getProperty("firstName", $locale) $user.getProperty("lastName", $locale)
+		$r.escapeHtml($user.getProperty("firstName", $locale)) $r.escapeHtml($user.getProperty("lastName", $locale))
 	</span>
 	<br />
 	<a href="mailto:$user.getProperty("email", $locale)" class="b_link_mailto">$user.getProperty("email", $locale)</a>
@@ -17,11 +17,11 @@
 	#if ($user.getProperty("institutionalName", $locale))
 		<br />
 		<span class="b_with_small_icon_left b_institution_icon">
-			$user.getProperty("institutionalName", $locale)
+			$r.escapeHtml($user.getProperty("institutionalName", $locale))
 		</span>
 	#end
 	#if ($user.getProperty("institutionalUserIdentifier", $locale))
-		($user.getProperty("institutionalUserIdentifier", $locale))
+		$r.escapeHtml($user.getProperty("institutionalUserIdentifier", $locale)))
 	#end
 #end
 $r.render("assessmentOverviewTable")
\ No newline at end of file
diff --git a/src/main/java/org/olat/course/nodes/fo/_content/peekview.html b/src/main/java/org/olat/course/nodes/fo/_content/peekview.html
index 5b76cf07ffe..677d78df4f2 100644
--- a/src/main/java/org/olat/course/nodes/fo/_content/peekview.html
+++ b/src/main/java/org/olat/course/nodes/fo/_content/peekview.html
@@ -6,7 +6,7 @@
 		</h5>
 		<div class="o_peekview_author">
 			#set($user=$message.getCreator().getUser())
-			$user.getProperty("firstName", null) $user.getProperty("lastName", null)
+			$r.escapeHtml($user.getProperty("firstName", null)) $r.escapeHtml($user.getProperty("lastName", null))
 			($formatter.formatDateAndTime($message.getCreationDate()))
 		</div>
 		$r.formatLatexFormulas($message.getBody())
diff --git a/src/main/java/org/olat/course/nodes/projectbroker/ProjectBrokerReturnboxController.java b/src/main/java/org/olat/course/nodes/projectbroker/ProjectBrokerReturnboxController.java
index acb915de171..92c0668fef3 100644
--- a/src/main/java/org/olat/course/nodes/projectbroker/ProjectBrokerReturnboxController.java
+++ b/src/main/java/org/olat/course/nodes/projectbroker/ProjectBrokerReturnboxController.java
@@ -35,7 +35,6 @@ import org.olat.course.nodes.projectbroker.datamodel.Project;
 import org.olat.course.nodes.ta.ReturnboxController;
 import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.modules.ModuleConfiguration;
 
 /**
  *
@@ -55,11 +54,11 @@ public class ProjectBrokerReturnboxController extends ReturnboxController  {
 	 * @param userCourseEnv
 	 * @param previewMode
 	 */
-	public ProjectBrokerReturnboxController(UserRequest ureq, WindowControl wControl, ModuleConfiguration config, 
+	public ProjectBrokerReturnboxController(UserRequest ureq, WindowControl wControl, 
 			CourseNode node, UserCourseEnvironment userCourseEnv, boolean previewMode, Project project) {
-		super(ureq, wControl, config, node, userCourseEnv, previewMode, false);
+		super(ureq, wControl, node, userCourseEnv, previewMode, false);
 		this.project = project;
-		initReturnbox(ureq, wControl, config, node, userCourseEnv, previewMode);
+		initReturnbox(ureq, wControl, node, userCourseEnv, previewMode);
 	}
 	
 	/**
diff --git a/src/main/java/org/olat/course/nodes/projectbroker/ProjectFolderController.java b/src/main/java/org/olat/course/nodes/projectbroker/ProjectFolderController.java
index 654d44de9d3..566dc500323 100644
--- a/src/main/java/org/olat/course/nodes/projectbroker/ProjectFolderController.java
+++ b/src/main/java/org/olat/course/nodes/projectbroker/ProjectFolderController.java
@@ -58,7 +58,7 @@ import org.olat.modules.ModuleConfiguration;
 public class ProjectFolderController extends BasicController {
 
 	private ModuleConfiguration config;
-	private boolean hasDropbox, hasScoring, hasReturnbox;
+	private boolean hasDropbox, hasReturnbox;
 	private VelocityContainer content;
 	private DropboxController dropboxController;
 	private Controller dropboxEditController;
@@ -88,7 +88,6 @@ public class ProjectFolderController extends BasicController {
 //			if (hasScoring){
 //				hasScoring = ne.isCapabilityAccessible("scoring");
 //			}
-			hasScoring = false;
 			// no call 'ne.isCapabilityAccessible(ProjectBrokerCourseNode.ACCESS_DROPBOX);' because no dropbox/returnbox conditions
 			if (!hasDropbox && !hasReturnbox ) {
 				// nothing to show => Show text message no folder
@@ -112,7 +111,7 @@ public class ProjectFolderController extends BasicController {
 					}
 					if (hasReturnbox) {
 						if (!ProjectBrokerManagerFactory.getProjectGroupManager().isProjectManager(ureq.getIdentity(), project)) {
-							returnboxController = new ProjectBrokerReturnboxController(ureq, wControl, config, ne.getCourseNode(), userCourseEnv, previewMode,project);
+							returnboxController = new ProjectBrokerReturnboxController(ureq, wControl, ne.getCourseNode(), userCourseEnv, previewMode,project);
 							content.put("returnboxController", returnboxController.getInitialComponent());
 							content.contextPut("hasReturnbox", Boolean.TRUE);
 						}
@@ -164,11 +163,8 @@ public class ProjectFolderController extends BasicController {
 	private void readConfig(ModuleConfiguration modConfig) {
 		Boolean bValue = (Boolean)modConfig.get(ProjectBrokerCourseNode.CONF_DROPBOX_ENABLED);
 		hasDropbox = (bValue != null) ? bValue.booleanValue() : false;
-		bValue = (Boolean)modConfig.get(ProjectBrokerCourseNode.CONF_SCORING_ENABLED);
-		hasScoring = (bValue != null) ? bValue.booleanValue() : false;
 		bValue = (Boolean)modConfig.get(ProjectBrokerCourseNode.CONF_RETURNBOX_ENABLED);
 		hasReturnbox = (bValue != null) ? bValue.booleanValue() : false;
-		
 	}
 	
 	/**
diff --git a/src/main/java/org/olat/course/nodes/ta/DropboxScoringViewController.java b/src/main/java/org/olat/course/nodes/ta/DropboxScoringViewController.java
index d506ee3ff7b..7d2beaf2615 100644
--- a/src/main/java/org/olat/course/nodes/ta/DropboxScoringViewController.java
+++ b/src/main/java/org/olat/course/nodes/ta/DropboxScoringViewController.java
@@ -58,6 +58,7 @@ import org.olat.core.id.context.BusinessControlFactory;
 import org.olat.core.id.context.ContextEntry;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.mail.MailBundle;
 import org.olat.core.util.mail.MailContext;
 import org.olat.core.util.mail.MailContextImpl;
@@ -77,6 +78,7 @@ import org.olat.course.properties.CoursePropertyManager;
 import org.olat.course.run.userview.UserCourseEnvironment;
 import org.olat.modules.ModuleConfiguration;
 import org.olat.properties.Property;
+import org.olat.user.UserManager;
 
 /**
  * Initial Date:  02.09.2004
@@ -146,10 +148,14 @@ public class DropboxScoringViewController extends BasicController {
 		myContent.contextPut("hasReturnbox", (hasReturnbox != null) ? hasReturnbox : hasDropboxValue);
 
 		// dropbox display
-		String assesseeName = userCourseEnv.getIdentityEnvironment().getIdentity().getName();
+		Identity assessee = userCourseEnv.getIdentityEnvironment().getIdentity();
+		String assesseeName = assessee.getName();
+		UserManager userManager = CoreSpringFactory.getImpl(UserManager.class);
+		String assesseeFullName = StringHelper.escapeHtml(userManager.getUserDisplayName(assessee));
+
 		OlatRootFolderImpl rootDropbox = new OlatRootFolderImpl(getDropboxFilePath(assesseeName), null);
 		rootDropbox.setLocalSecurityCallback( getDropboxVfsSecurityCallback());
-		OlatNamedContainerImpl namedDropbox = new OlatNamedContainerImpl(getDropboxRootFolderName(assesseeName), rootDropbox);
+		OlatNamedContainerImpl namedDropbox = new OlatNamedContainerImpl(assesseeFullName, rootDropbox);
 		namedDropbox.setLocalSecurityCallback(getDropboxVfsSecurityCallback());
 	
 		dropboxFolderRunController = new FolderRunController(namedDropbox, false, ureq, getWindowControl());
@@ -159,9 +165,9 @@ public class DropboxScoringViewController extends BasicController {
 
 		// returnbox display
 		OlatRootFolderImpl rootReturnbox = new OlatRootFolderImpl(getReturnboxFilePath(assesseeName), null);
-		rootReturnbox.setLocalSecurityCallback( getReturnboxVfsSecurityCallback(rootReturnbox.getRelPath(),userCourseEnv, node) ); //
-		OlatNamedContainerImpl namedReturnbox = new OlatNamedContainerImpl(getReturnboxRootFolderName(assesseeName), rootReturnbox);
-		namedReturnbox.setLocalSecurityCallback( getReturnboxVfsSecurityCallback(rootReturnbox.getRelPath(),userCourseEnv, node));
+		rootReturnbox.setLocalSecurityCallback( getReturnboxVfsSecurityCallback(rootReturnbox.getRelPath()) );
+		OlatNamedContainerImpl namedReturnbox = new OlatNamedContainerImpl(assesseeFullName, rootReturnbox);
+		namedReturnbox.setLocalSecurityCallback(getReturnboxVfsSecurityCallback(rootReturnbox.getRelPath()));
 
 		returnboxFolderRunController = new FolderRunController(namedReturnbox, false, ureq, getWindowControl());
 		listenTo(returnboxFolderRunController);
@@ -194,16 +200,8 @@ public class DropboxScoringViewController extends BasicController {
 		return new ReadOnlyAndDeleteCallback();
 	}
 
-	protected VFSSecurityCallback getReturnboxVfsSecurityCallback(String returnboxRelPath, UserCourseEnvironment userCourseEnv2, CourseNode node2) {
-		return new ReturnboxFullAccessCallback(returnboxRelPath,userCourseEnv2, node2);
-	}
-
-	protected String getDropboxRootFolderName(String assesseeName) {
-		return assesseeName;
-	}
-
-	protected String getReturnboxRootFolderName(String assesseeName) {
-		return assesseeName;
+	protected VFSSecurityCallback getReturnboxVfsSecurityCallback(String returnboxRelPath) {
+		return new ReturnboxFullAccessCallback(returnboxRelPath);
 	}
 
 	/**
@@ -405,7 +403,7 @@ class ReturnboxFullAccessCallback implements VFSSecurityCallback {
 
 	private Quota quota;
 
-	public ReturnboxFullAccessCallback(String relPath, UserCourseEnvironment userCourseEnv, CourseNode courseNode) {
+	public ReturnboxFullAccessCallback(String relPath) {
 		QuotaManager qm = QuotaManager.getInstance();
 		quota = qm.getCustomQuota(relPath);
 		if (quota == null) { // if no custom quota set, use the default quotas...
diff --git a/src/main/java/org/olat/course/nodes/ta/ReturnboxController.java b/src/main/java/org/olat/course/nodes/ta/ReturnboxController.java
index 929d3a58738..17acd2f837a 100644
--- a/src/main/java/org/olat/course/nodes/ta/ReturnboxController.java
+++ b/src/main/java/org/olat/course/nodes/ta/ReturnboxController.java
@@ -39,6 +39,7 @@ import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.id.Identity;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.Util;
 import org.olat.core.util.notifications.ContextualSubscriptionController;
 import org.olat.core.util.notifications.SubscriptionContext;
@@ -46,7 +47,6 @@ import org.olat.core.util.vfs.callbacks.ReadOnlyCallback;
 import org.olat.course.nodes.CourseNode;
 import org.olat.course.run.environment.CourseEnvironment;
 import org.olat.course.run.userview.UserCourseEnvironment;
-import org.olat.modules.ModuleConfiguration;
 import org.olat.user.UserManager;
 
 /**
@@ -80,25 +80,25 @@ public class ReturnboxController extends BasicController {
 	 * @param userCourseEnv
 	 * @param previewMode
 	 */
-	public ReturnboxController(UserRequest ureq, WindowControl wControl, ModuleConfiguration config, CourseNode node, UserCourseEnvironment userCourseEnv, boolean previewMode) {
-		this(ureq, wControl, config, node, userCourseEnv, previewMode, true);
+	public ReturnboxController(UserRequest ureq, WindowControl wControl, CourseNode node, UserCourseEnvironment userCourseEnv, boolean previewMode) {
+		this(ureq, wControl, node, userCourseEnv, previewMode, true);
 	}
 
-	protected ReturnboxController(UserRequest ureq, WindowControl wControl, ModuleConfiguration config, CourseNode node, UserCourseEnvironment userCourseEnv, boolean previewMode, boolean doInit) {
+	protected ReturnboxController(UserRequest ureq, WindowControl wControl, CourseNode node, UserCourseEnvironment userCourseEnv, boolean previewMode, boolean doInit) {
 		super(ureq, wControl);
 		userManager = CoreSpringFactory.getImpl(UserManager.class);
 		
 		this.setBasePackage(ReturnboxController.class);
 		if (doInit) {
-			initReturnbox(ureq, wControl, config, node, userCourseEnv, previewMode);
+			initReturnbox(ureq, wControl, node, userCourseEnv, previewMode);
 		}
 	}
 
-	protected void initReturnbox(UserRequest ureq, WindowControl wControl, ModuleConfiguration config, CourseNode node, UserCourseEnvironment userCourseEnv, boolean previewMode) {
+	protected void initReturnbox(UserRequest ureq, WindowControl wControl, CourseNode node, UserCourseEnvironment userCourseEnv, boolean previewMode) {
 		// returnbox display
 		myContent = createVelocityContainer("returnbox");
 		OlatRootFolderImpl rootFolder = new OlatRootFolderImpl(getReturnboxPathFor(userCourseEnv.getCourseEnvironment(), node, ureq.getIdentity()) , null);
-		String fullName = userManager.getUserDisplayName(getIdentity());
+		String fullName = StringHelper.escapeHtml(userManager.getUserDisplayName(getIdentity()));
 		OlatNamedContainerImpl namedContainer = new OlatNamedContainerImpl(fullName, rootFolder);
 		namedContainer.setLocalSecurityCallback(new ReadOnlyCallback());
 		returnboxFolderRunController = new FolderRunController(namedContainer, false, ureq, wControl);
@@ -152,14 +152,15 @@ public class ReturnboxController extends BasicController {
 	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event)
 	 */
 	public void event(UserRequest ureq, Controller source, Event event) {
+		//
 	}
-	
-	
+
 	
 	/**
 	 * 
 	 * @see org.olat.core.gui.control.DefaultController#doDispose(boolean)
 	 */
 	protected void doDispose() {
+		//
 	}
 }
diff --git a/src/main/java/org/olat/course/nodes/ta/TACourseNodeRunController.java b/src/main/java/org/olat/course/nodes/ta/TACourseNodeRunController.java
index a63f7b68e2d..7b3d8a8f8ef 100644
--- a/src/main/java/org/olat/course/nodes/ta/TACourseNodeRunController.java
+++ b/src/main/java/org/olat/course/nodes/ta/TACourseNodeRunController.java
@@ -97,10 +97,9 @@ public class TACourseNodeRunController extends BasicController {
 			content.contextPut("hasDropbox", Boolean.TRUE);
 		}
 		if (hasReturnbox) {
-			returnboxController = new ReturnboxController(ureq, wControl, config, ne.getCourseNode(), userCourseEnv, previewMode);
+			returnboxController = new ReturnboxController(ureq, wControl, ne.getCourseNode(), userCourseEnv, previewMode);
 			content.put("returnboxController", returnboxController.getInitialComponent());
 			content.contextPut("hasReturnbox", Boolean.TRUE);
-			
 		}
 
 		if (hasSolution) {
diff --git a/src/main/java/org/olat/group/ui/homepage/GroupInfoDisplayController.java b/src/main/java/org/olat/group/ui/homepage/GroupInfoDisplayController.java
index ae09476520b..ac136dcefd8 100644
--- a/src/main/java/org/olat/group/ui/homepage/GroupInfoDisplayController.java
+++ b/src/main/java/org/olat/group/ui/homepage/GroupInfoDisplayController.java
@@ -28,6 +28,7 @@ import org.olat.core.gui.components.velocity.VelocityContainer;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
+import org.olat.core.util.StringHelper;
 import org.olat.group.BusinessGroup;
 
 /**
@@ -45,7 +46,7 @@ public class GroupInfoDisplayController extends BasicController {
 		super(ureq, wControl);
 		content = createVelocityContainer("groupinfodisplay");
 		content.contextPut("description", businessGroup.getDescription());
-		content.contextPut("name", businessGroup.getName());
+		content.contextPut("name", StringHelper.escapeHtml(businessGroup.getName()));
 		
 		BaseSecurity securityManager = BaseSecurityManager.getInstance();
 		int numParticipants = 0;
diff --git a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java
index 8b4ad3ac971..78c57c6ccb0 100644
--- a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java
+++ b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java
@@ -309,7 +309,8 @@ public abstract class AbstractBusinessGroupListController extends BasicControlle
 				} else if(actionid.equals(TABLE_ACTION_EDIT)) {
 					doEdit(ureq, businessGroup);
 				} else if(actionid.equals(TABLE_ACTION_LEAVE)) {
-					leaveDialogBox = activateYesNoDialog(ureq, null, translate("dialog.modal.bg.leave.text", businessGroup.getName()), leaveDialogBox);
+					String groupName = StringHelper.escapeHtml(businessGroup.getName());
+					leaveDialogBox = activateYesNoDialog(ureq, null, translate("dialog.modal.bg.leave.text", groupName), leaveDialogBox);
 					leaveDialogBox.setUserObject(businessGroup);
 				} else if (actionid.equals(TABLE_ACTION_ACCESS)) {
 					doAccess(ureq, businessGroup);
diff --git a/src/main/java/org/olat/group/ui/main/MemberInfoController.java b/src/main/java/org/olat/group/ui/main/MemberInfoController.java
index 6b79dde27ab..19a487f7e5e 100644
--- a/src/main/java/org/olat/group/ui/main/MemberInfoController.java
+++ b/src/main/java/org/olat/group/ui/main/MemberInfoController.java
@@ -37,6 +37,7 @@ import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.Identity;
 import org.olat.core.util.Formatter;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.Util;
 import org.olat.course.assessment.UserCourseInformations;
 import org.olat.course.assessment.manager.UserCourseInformationsManager;
@@ -88,7 +89,7 @@ public class MemberInfoController extends FormBasicController {
 			Controller dpc = new DisplayPortraitController(ureq, getWindowControl(), identity, true, false);
 			listenTo(dpc); // auto dispose
 			layoutCont.put("image", dpc.getInitialComponent());
-			layoutCont.contextPut("fullname", userManager.getUserDisplayName(identity));
+			layoutCont.contextPut("fullname", StringHelper.escapeHtml(userManager.getUserDisplayName(identity)));
 		}
 		
 		//user properties
diff --git a/src/main/java/org/olat/group/ui/main/MemberLeaveConfirmationController.java b/src/main/java/org/olat/group/ui/main/MemberLeaveConfirmationController.java
index 5c744495250..74929a2ad3c 100644
--- a/src/main/java/org/olat/group/ui/main/MemberLeaveConfirmationController.java
+++ b/src/main/java/org/olat/group/ui/main/MemberLeaveConfirmationController.java
@@ -31,6 +31,7 @@ import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.id.Identity;
+import org.olat.core.util.StringHelper;
 import org.olat.group.BusinessGroupModule;
 import org.olat.user.UserManager;
 
@@ -68,7 +69,7 @@ public class MemberLeaveConfirmationController extends FormBasicController {
 			StringBuilder sb = new StringBuilder(identities.size() * 25);
 			for(Identity id:identities) {
 				if(sb.length() > 0) sb.append(" / ");
-				sb.append(userManager.getUserDisplayName(id));
+				sb.append(StringHelper.escapeHtml(userManager.getUserDisplayName(id)));
 			}
 			((FormLayoutContainer)formLayout).contextPut("identities", sb.toString());
 		}
diff --git a/src/main/java/org/olat/group/ui/main/_content/accept_reservations.html b/src/main/java/org/olat/group/ui/main/_content/accept_reservations.html
index 72070fdc198..4d9d222a44d 100644
--- a/src/main/java/org/olat/group/ui/main/_content/accept_reservations.html
+++ b/src/main/java/org/olat/group/ui/main/_content/accept_reservations.html
@@ -4,7 +4,7 @@
 		<div class="o_reservation b_clearfix">
 			<div>
 				<span class="o_reservation_name b_with_small_icon_left #if($reservation.isGroupReservation()) b_group_icon #elseif($reservation.isRepositoryEntryReservation()) o_course_icon  #end">
-					${reservation.name}
+					$r.escapeHtml(${reservation.name})
 				</span>
 				#if($reservation.coach)
 					<span class="o_reservation_role_coach">
diff --git a/src/main/java/org/olat/group/ui/main/_content/group_delete_confirmation.html b/src/main/java/org/olat/group/ui/main/_content/group_delete_confirmation.html
index 730a53994a8..481f9b0d473 100644
--- a/src/main/java/org/olat/group/ui/main/_content/group_delete_confirmation.html
+++ b/src/main/java/org/olat/group/ui/main/_content/group_delete_confirmation.html
@@ -1,3 +1,3 @@
-<p>$r.translate("dialog.modal.bg.delete.text", $groups)</p>
+<p>$r.translate("dialog.modal.bg.delete.text", $r.escapeHtml($groups))</p>
 $r.render("sendmail")
 $r.render("buttons")
diff --git a/src/main/java/org/olat/gui/control/OlatFooterController.java b/src/main/java/org/olat/gui/control/OlatFooterController.java
index e5bda4dc185..ebe852464ca 100644
--- a/src/main/java/org/olat/gui/control/OlatFooterController.java
+++ b/src/main/java/org/olat/gui/control/OlatFooterController.java
@@ -37,6 +37,7 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.helpers.Settings;
 import org.olat.core.id.Identity;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.Util;
 import org.olat.core.util.WebappHelper;
 import org.olat.social.SocialModule;
@@ -91,7 +92,7 @@ public class OlatFooterController extends BasicController {
 				olatFootervc.contextPut("username", translate("invitee"));
 			} else {
 				String fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(ureq.getIdentity());
-				olatFootervc.contextPut("username", fullName);
+				olatFootervc.contextPut("username", StringHelper.escapeHtml(fullName));
 			}
 		} else {
 			olatFootervc.contextPut("loggedIn", Boolean.FALSE);
diff --git a/src/main/java/org/olat/gui/control/OlatTopNavController.java b/src/main/java/org/olat/gui/control/OlatTopNavController.java
index b3060674a08..7ce5a26aca0 100644
--- a/src/main/java/org/olat/gui/control/OlatTopNavController.java
+++ b/src/main/java/org/olat/gui/control/OlatTopNavController.java
@@ -80,7 +80,7 @@ public class OlatTopNavController extends BasicController implements GenericEven
 		this(ureq, wControl, false, true);
 	}
 	
-	public OlatTopNavController(UserRequest ureq, WindowControl wControl, boolean impressum,	boolean search) {
+	public OlatTopNavController(UserRequest ureq, WindowControl wControl, boolean impressum, boolean search) {
 		super(ureq, wControl);
 		
 		topNavVC = createVelocityContainer("topnav");
@@ -118,7 +118,7 @@ public class OlatTopNavController extends BasicController implements GenericEven
 			impressumLink.setTarget("_blank");
 		}
 		
-		if(ureq.getIdentity() != null && !isGuest && !isInvitee) {
+		if(search && ureq.getIdentity() != null && !isGuest && !isInvitee) {
 			SearchServiceUIFactory searchUIFactory = (SearchServiceUIFactory)CoreSpringFactory.getBean(SearchServiceUIFactory.class);
 			searchC = searchUIFactory.createInputController(ureq, wControl, DisplayOption.STANDARD, null);
 			searchC.setResourceContextEnable(false);
diff --git a/src/main/java/org/olat/instantMessaging/manager/RosterDAO.java b/src/main/java/org/olat/instantMessaging/manager/RosterDAO.java
index 695c3a7b0cd..7a0dc0110f1 100644
--- a/src/main/java/org/olat/instantMessaging/manager/RosterDAO.java
+++ b/src/main/java/org/olat/instantMessaging/manager/RosterDAO.java
@@ -110,10 +110,6 @@ public class RosterDAO {
 		return query.getResultList();
 	}
 	
-	public void clear() {
-		dbInstance.getCurrentEntityManager().createNamedQuery("clearIMRosterEntry").executeUpdate();
-	}
-	
 	public void deleteEntry(Identity identity, OLATResourceable ores) {
 		dbInstance.getCurrentEntityManager().createNamedQuery("deleteIMRosterEntryByIdentityAndResource")
 				.setParameter("identityKey", identity.getKey())
diff --git a/src/main/java/org/olat/instantMessaging/model/RosterEntryImpl.java b/src/main/java/org/olat/instantMessaging/model/RosterEntryImpl.java
index f8feab0e79b..0ac51d4cda6 100644
--- a/src/main/java/org/olat/instantMessaging/model/RosterEntryImpl.java
+++ b/src/main/java/org/olat/instantMessaging/model/RosterEntryImpl.java
@@ -49,7 +49,6 @@ import org.olat.core.id.Persistable;
 	@NamedQuery(name="loadIMRosterEntryForUpdate", query="select entry from imrosterentry entry where entry.identityKey=:identityKey and entry.resourceId=:resid and entry.resourceTypeName=:resname",
 		lockMode=LockModeType.PESSIMISTIC_WRITE),
 	@NamedQuery(name="loadIMRosterEntryByResource", query="select entry from imrosterentry entry where entry.resourceId=:resid and entry.resourceTypeName=:resname"),
-	@NamedQuery(name="clearIMRosterEntry", query="delete from imrosterentry entry"),
 	@NamedQuery(name="deleteIMRosterEntryByIdentityAndResource", query="delete from imrosterentry entry where entry.identityKey=:identityKey and entry.resourceId=:resid and entry.resourceTypeName=:resname")
 })
 public class RosterEntryImpl implements Persistable, CreateInfo {
diff --git a/src/main/java/org/olat/instantMessaging/ui/ChatController.java b/src/main/java/org/olat/instantMessaging/ui/ChatController.java
index f3cc91dd7cb..f9cd7f6e135 100644
--- a/src/main/java/org/olat/instantMessaging/ui/ChatController.java
+++ b/src/main/java/org/olat/instantMessaging/ui/ChatController.java
@@ -155,7 +155,8 @@ public class ChatController extends BasicController implements GenericEventListe
 		}
 
 		chatPanelCtr = new FloatingResizableDialogController(ureq, getWindowControl(), mainVC,
-				roomName , width, height, offsetX, offsetY, rosterCtrl == null ? null : rosterCtrl.getInitialComponent(),
+				roomName , width, height, offsetX, offsetY,
+				rosterCtrl == null ? null : rosterCtrl.getInitialComponent(),
 				translate("groupchat.roster"), true, false, true, String.valueOf(hashCode()));
 		listenTo(chatPanelCtr);
 		chatPanelCtr.setElementCSSClass("o_instantmessaging_chat_dialog");
diff --git a/src/main/java/org/olat/instantMessaging/ui/IMBuddyListController.java b/src/main/java/org/olat/instantMessaging/ui/IMBuddyListController.java
index b7b94bd3748..bbf6ee5b8d7 100644
--- a/src/main/java/org/olat/instantMessaging/ui/IMBuddyListController.java
+++ b/src/main/java/org/olat/instantMessaging/ui/IMBuddyListController.java
@@ -28,6 +28,7 @@ import org.olat.core.gui.components.velocity.VelocityContainer;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
+import org.olat.core.util.StringHelper;
 import org.olat.instantMessaging.InstantMessagingModule;
 import org.olat.instantMessaging.InstantMessagingService;
 import org.olat.instantMessaging.OpenInstantMessageEvent;
@@ -144,7 +145,7 @@ public class IMBuddyListController extends BasicController {
 		String linkId = "buddy_" + group.getGroupKey() + "_" + buddy.getIdentityKey();
 		if(buddiesListContent.getComponent(linkId) == null) {
 			Link buddyLink = LinkFactory.createCustomLink(linkId, "cmd.buddy", "", Link.NONTRANSLATED, buddiesListContent, this);
-			buddyLink.setCustomDisplayText(buddy.getName());
+			buddyLink.setCustomDisplayText(StringHelper.escapeHtml(buddy.getName()));
 			String css = getStatusCss(buddy);
 			buddyLink.setCustomEnabledLinkCSS(css);
 			buddyLink.setUserObject(buddy);
@@ -153,7 +154,7 @@ public class IMBuddyListController extends BasicController {
 		String linkIdAlt = "buddy_" + buddy.getIdentityKey();
 		if(buddiesListContent.getComponent(linkIdAlt) == null) {
 			Link buddyLink = LinkFactory.createCustomLink(linkIdAlt, "cmd.buddy", "", Link.NONTRANSLATED, buddiesListContent, this);
-			buddyLink.setCustomDisplayText(buddy.getName());
+			buddyLink.setCustomDisplayText(StringHelper.escapeHtml(buddy.getName()));
 			String css = getStatusCss(buddy);
 			buddyLink.setCustomEnabledLinkCSS(css);
 			buddyLink.setUserObject(buddy);
diff --git a/src/main/java/org/olat/instantMessaging/ui/Roster.java b/src/main/java/org/olat/instantMessaging/ui/Roster.java
index 705269eba5f..80da092e64e 100644
--- a/src/main/java/org/olat/instantMessaging/ui/Roster.java
+++ b/src/main/java/org/olat/instantMessaging/ui/Roster.java
@@ -38,19 +38,11 @@ import org.olat.instantMessaging.model.BuddyGroup;
 public class Roster {
 	
 	private final Long identityKey;
-	private final List<Buddy> entries;
-	private final List<BuddyGroup> groups;
+	private final List<Buddy> entries = new CopyOnWriteArrayList<Buddy>();
+	private final List<BuddyGroup> groups = new CopyOnWriteArrayList<BuddyGroup>();
 	
 	public Roster(Long identityKey) {
 		this.identityKey = identityKey;
-		entries = new CopyOnWriteArrayList<Buddy>();
-		groups = new CopyOnWriteArrayList<BuddyGroup>();
-	}
-	
-	public Roster(List<Buddy> entries, Long identityKey) {
-		this.identityKey = identityKey;
-		this.entries = entries;
-		groups = new CopyOnWriteArrayList<BuddyGroup>();
 	}
 	
 	public List<BuddyGroup> getGroups() {
diff --git a/src/main/java/org/olat/instantMessaging/ui/RosterForm.java b/src/main/java/org/olat/instantMessaging/ui/RosterForm.java
index 43597bc6b49..52c114b2c93 100644
--- a/src/main/java/org/olat/instantMessaging/ui/RosterForm.java
+++ b/src/main/java/org/olat/instantMessaging/ui/RosterForm.java
@@ -31,6 +31,7 @@ import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer;
 import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
+import org.olat.core.util.StringHelper;
 import org.olat.user.UserManager;
 
 /**
@@ -65,7 +66,7 @@ public class RosterForm extends FormBasicController {
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		// for simplicity we initialize the form even when the anonymous mode is disabled
 		// and just hide the form elements in the GUI
-		String[] theValues = new String[]{ fullName, translate("anonymous") };
+		String[] theValues = new String[]{ StringHelper.escapeHtml(fullName), translate("anonymous") };
 		toggle = uifactory.addRadiosVertical("toggle", "toogle.anonymous", formLayout, anonKeys, theValues);
 
 		if(defaultAnonym) {
diff --git a/src/main/java/org/olat/instantMessaging/ui/_content/buddies_content.html b/src/main/java/org/olat/instantMessaging/ui/_content/buddies_content.html
index 9dd0dab637a..14bf6f839ea 100644
--- a/src/main/java/org/olat/instantMessaging/ui/_content/buddies_content.html
+++ b/src/main/java/org/olat/instantMessaging/ui/_content/buddies_content.html
@@ -2,7 +2,7 @@
 	#if($viewGroups)
 		#foreach ($group in $buddyList.groups)
 			<li class="o_instantmessaging_group">
-				<div class="o_instantmessaging_groupname">$group.groupName</div>
+				<div class="o_instantmessaging_groupname">$r.escapeHtml($group.groupName)</div>
 				<ul>
 				#foreach ($buddy in $group.buddy)
 					<li>$r.render("buddy_${group.groupKey}_${buddy.identityKey}")</li>
diff --git a/src/main/java/org/olat/instantMessaging/ui/_content/chatMsgField.html b/src/main/java/org/olat/instantMessaging/ui/_content/chatMsgField.html
index 82f32b90093..0e8fae1cbab 100644
--- a/src/main/java/org/olat/instantMessaging/ui/_content/chatMsgField.html
+++ b/src/main/java/org/olat/instantMessaging/ui/_content/chatMsgField.html
@@ -21,7 +21,7 @@
 					<div class="o_instantmessaging_avatar o_portrait_dummy_small"></div>					 
 				#end 
 								
-				<div class="o_instantmessaging_from">${message.from}</div>				
+				<div class="o_instantmessaging_from">$r.escapeHtml(${message.from})</div>				
 
 				## end link to visiting card
 				#if(!$message.anonym) </a> #end
diff --git a/src/main/java/org/olat/instantMessaging/ui/_content/roster.html b/src/main/java/org/olat/instantMessaging/ui/_content/roster.html
index 3e1ef9a13b9..521c262c192 100644
--- a/src/main/java/org/olat/instantMessaging/ui/_content/roster.html
+++ b/src/main/java/org/olat/instantMessaging/ui/_content/roster.html
@@ -7,7 +7,7 @@
 	<ul>
 	#foreach($entry in $roster.entries)
 		<li class="#if($entry.vip) o_instantmessaging_vip #end #if($entry.anonym) o_instantmessaging_anonymous #end">
-			<span>${entry.name}</span>
+			<span>$r.escapeHtml(${entry.name})</span>
 		</li>			
 	#end
 	</ul>
diff --git a/src/main/java/org/olat/modules/fo/MessageEditController.java b/src/main/java/org/olat/modules/fo/MessageEditController.java
index 7ce405c5931..b7f2c270c64 100644
--- a/src/main/java/org/olat/modules/fo/MessageEditController.java
+++ b/src/main/java/org/olat/modules/fo/MessageEditController.java
@@ -194,7 +194,7 @@ public class MessageEditController extends FormBasicController {
 					+ "/msg-preview.html");
 			uifactory.addSpacerElement("spacer1", formLayout, false);
 			formLayout.add(replyMsgLayout);
-			replyMsgLayout.setLabel("label.replytomsg", new String[] { replyMessage.getTitle() });
+			replyMsgLayout.setLabel("label.replytomsg", new String[] { StringHelper.escapeHtml(replyMessage.getTitle()) });
 			Identity identity = replyMessage.getCreator();
 			replyMsgLayout.contextPut("identity", identity);
 			replyMsgLayout.contextPut("messageBody", replyMessage.getBody());
@@ -239,8 +239,8 @@ public class MessageEditController extends FormBasicController {
 		
 		FormLayoutContainer tmpLayout;
 		if (attachLayout == null) {
-			tmpLayout = FormLayoutContainer.createCustomFormLayout("attachLayout", getTranslator(), Util.getPackageVelocityRoot(this.getClass())
-					+ "/attachments-editview.html");
+			String editPage = Util.getPackageVelocityRoot(this.getClass()) + "/attachments-editview.html";
+			tmpLayout = FormLayoutContainer.createCustomFormLayout("attachLayout", getTranslator(), editPage);
 			formLayout.add(tmpLayout);
 		} else {
 			tmpLayout = (FormLayoutContainer) attachLayout;
diff --git a/src/main/java/org/olat/modules/fo/_content/attachments-editview.html b/src/main/java/org/olat/modules/fo/_content/attachments-editview.html
index 8492b183488..767441f986d 100644
--- a/src/main/java/org/olat/modules/fo/_content/attachments-editview.html
+++ b/src/main/java/org/olat/modules/fo/_content/attachments-editview.html
@@ -5,7 +5,7 @@
 			#set( $fsize = $attachment.getSize() / 1024 )
 			<tr>
 				<td class="b_filetype_file $myself.renderFileIconCssClass($fname)" style="padding-left:20px; background-repeat: no-repeat;">	</td>
-				<td>$fname ($fsize KB)</td>
+				<td>$r.escapeHtml($fname) ($fsize KB)</td>
 				<td>$r.render("delete.attachment.$velocityCount")</td>
 			</tr>
 		#end
diff --git a/src/main/java/org/olat/modules/fo/_content/msg-preview.html b/src/main/java/org/olat/modules/fo/_content/msg-preview.html
index bbe6243d83c..286db307b13 100644
--- a/src/main/java/org/olat/modules/fo/_content/msg-preview.html
+++ b/src/main/java/org/olat/modules/fo/_content/msg-preview.html
@@ -3,9 +3,7 @@
 		<div class="o_forum_message_header_wrapper" >
 			<div class="o_forum_message_header b_clearfix">
 				<div class="o_forum_message_title">
-					<strong>
-						$message.getTitle()
-					</strong>
+					<strong>$r.escapeHtml($message.getTitle())</strong>
 				</div>
 			</div>
 		</div>
diff --git a/src/main/java/org/olat/modules/fo/_content/threadview.html b/src/main/java/org/olat/modules/fo/_content/threadview.html
index b23d9a87ca4..6a5f078cc26 100644
--- a/src/main/java/org/olat/modules/fo/_content/threadview.html
+++ b/src/main/java/org/olat/modules/fo/_content/threadview.html
@@ -63,11 +63,10 @@
 				</div>
 			</div>
 		</div>
-
 		<div class="o_forum_message_content_wrapper ">
 			<div class="o_forum_message_content b_clearfix ">
 				<div class="o_forum_message_creator">
-					<strong>$message.get("firstname") $message.get("lastname")</strong>
+					<strong>$r.escapeHtml($message.get("firstname")) $r.escapeHtml($message.get("lastname"))</strong>
 					<br />
 					<br />
 					#if($r.available($message.get("portraitComponentVCName")))
@@ -86,7 +85,7 @@
 							#foreach( $attachment in $message.get("attachments") )
 								#set($fname = $attachment.getName())
 								#set( $fsize = $attachment.getSize() / 1024 )
-								<li><a href="$r.commandURI("attachment_${velocityCount}_${count}")$fname" target="_blank" class="b_filetype_file $myself.renderFileIconCssClass($fname)">$fname ($fsize KB)</a></li>
+								<li><a href="$r.commandURI("attachment_${velocityCount}_${count}")$fname" target="_blank" class="b_filetype_file $myself.renderFileIconCssClass($fname)">$r.escapeHtml($fname) ($fsize KB)</a></li>
 							#end 
 							</ul>
 						</div>
@@ -95,7 +94,7 @@
 					#if(($message.get("isModified")) || ($message.get("isMoved")))
 						<div class="o_forum_message_modified">
 							#if($message.get("isModified"))
-					   			$r.translate("msg.modified"): $message.get("modfname") $message.get("modlname") $message.get("modified")
+					   			$r.translate("msg.modified"): $r.escapeHtml($message.get("modfname")) $r.escapeHtml($message.get("modlname")) $message.get("modified")
 					   		#end
 					   		#if($message.get("isMoved"))
 					   			$r.translate("msg.moved")
diff --git a/src/main/java/org/olat/modules/webFeed/ui/blog/_content/posts.html b/src/main/java/org/olat/modules/webFeed/ui/blog/_content/posts.html
index 8ed119927e4..d7c4d7bc163 100644
--- a/src/main/java/org/olat/modules/webFeed/ui/blog/_content/posts.html
+++ b/src/main/java/org/olat/modules/webFeed/ui/blog/_content/posts.html
@@ -40,7 +40,7 @@
 			#set ( $info = $helper.getInfo($post) )
 			#if ( $info )
 				<p class="o_item_info">
-				$info#if($helper.isModified($post)), <span class="o_item_info_mod">$helper.getModifierInfo($post)</span>#end
+				$info#if($helper.isModified($post)), <span class="o_item_info_mod">$r.escapeHtml($helper.getModifierInfo($post))</span>#end
 				</p>
 			#end
 			<p></p>
diff --git a/src/main/java/org/olat/portfolio/EPAbstractHandler.java b/src/main/java/org/olat/portfolio/EPAbstractHandler.java
index c028d2bcc59..5788786f4c7 100755
--- a/src/main/java/org/olat/portfolio/EPAbstractHandler.java
+++ b/src/main/java/org/olat/portfolio/EPAbstractHandler.java
@@ -106,7 +106,6 @@ public abstract class EPAbstractHandler<U extends AbstractArtefact> implements E
 		return false;
 	}
 	
-	@SuppressWarnings("unused")
 	@Override
 	public Controller getSpecialMapViewController(UserRequest ureq, WindowControl wControl, AbstractArtefact artefact) {
 		return null;
diff --git a/src/main/java/org/olat/portfolio/EPMapOnInvitationExtension.java b/src/main/java/org/olat/portfolio/EPMapOnInvitationExtension.java
index 1b095e4518a..7ef266cd0fd 100644
--- a/src/main/java/org/olat/portfolio/EPMapOnInvitationExtension.java
+++ b/src/main/java/org/olat/portfolio/EPMapOnInvitationExtension.java
@@ -40,7 +40,6 @@ import org.olat.portfolio.model.structel.PortfolioStructureMap;
  * 
  * @author Roman Haag, roman.haag@frentix.com, http://www.frentix.com
  */
-@SuppressWarnings("unused")
 public class EPMapOnInvitationExtension {
 
 	public EPMapOnInvitationExtension() {
diff --git a/src/main/java/org/olat/portfolio/EPMyMapsExtension.java b/src/main/java/org/olat/portfolio/EPMyMapsExtension.java
index 7a2848de5c3..3e3959e4242 100644
--- a/src/main/java/org/olat/portfolio/EPMyMapsExtension.java
+++ b/src/main/java/org/olat/portfolio/EPMyMapsExtension.java
@@ -38,7 +38,6 @@ import org.olat.portfolio.model.structel.EPDefaultMap;
  * 
  * @author Roman Haag, roman.haag@frentix.com, http://www.frentix.com
  */
-@SuppressWarnings("unused")
 public class EPMyMapsExtension {
 
 	public EPMyMapsExtension() {
diff --git a/src/main/java/org/olat/portfolio/EPOtherMapsExtension.java b/src/main/java/org/olat/portfolio/EPOtherMapsExtension.java
index 5d5bcf3c06d..1a92b494f89 100644
--- a/src/main/java/org/olat/portfolio/EPOtherMapsExtension.java
+++ b/src/main/java/org/olat/portfolio/EPOtherMapsExtension.java
@@ -37,7 +37,6 @@ import org.olat.home.HomeSite;
  * 
  * @author Roman Haag, roman.haag@frentix.com, http://www.frentix.com
  */
-@SuppressWarnings("unused")
 public class EPOtherMapsExtension {
 
 	public EPOtherMapsExtension() {
diff --git a/src/main/java/org/olat/portfolio/manager/EPNotificationManager.java b/src/main/java/org/olat/portfolio/manager/EPNotificationManager.java
index 284c1049bef..b218476f0f7 100644
--- a/src/main/java/org/olat/portfolio/manager/EPNotificationManager.java
+++ b/src/main/java/org/olat/portfolio/manager/EPNotificationManager.java
@@ -28,6 +28,7 @@ import org.olat.core.commons.persistence.DB;
 import org.olat.core.commons.persistence.DBQuery;
 import org.olat.core.gui.translator.Translator;
 import org.olat.core.id.context.BusinessControlFactory;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.notifications.items.SubscriptionListItem;
 import org.olat.portfolio.model.notification.EPArtefactNotification;
 import org.olat.portfolio.model.notification.EPCommentNotification;
@@ -64,7 +65,7 @@ public class EPNotificationManager {
 		List<SubscriptionListItem> items = new ArrayList<SubscriptionListItem>();
 		for (EPNotification notification : notifications) {
 			SubscriptionListItem item = null;	
-			String[] title = new String[] { notification.getTitle() };
+			String[] title = new String[] { StringHelper.escapeHtml(notification.getTitle()) };
 			if ("page".equals(notification.getType())) {
 				String bPath = rootBusinessPath + "[EPPage:" + notification.getPageKey() + "]";
 				String linkUrl = BusinessControlFactory.getInstance().getURLFromBusinessPathString(bPath);
@@ -93,9 +94,9 @@ public class EPNotificationManager {
 			Long pageKey =  link.getPageKey();
 			String targetTitle= link.getStructureTitle();
 			String[] title = new String[] {
-					userManager.getUserDisplayName(link.getAuthor()),
-					link.getArtefactTitle(),
-					targetTitle
+					StringHelper.escapeHtml(userManager.getUserDisplayName(link.getAuthor())),
+					StringHelper.escapeHtml(link.getArtefactTitle()),
+					StringHelper.escapeHtml(targetTitle)
 			};
 
 			String bPath = rootBusinessPath + "[EPPage:" + pageKey + "]";
diff --git a/src/main/java/org/olat/portfolio/manager/EPNotificationsHandler.java b/src/main/java/org/olat/portfolio/manager/EPNotificationsHandler.java
index 3c188868a44..66ccf363ed4 100644
--- a/src/main/java/org/olat/portfolio/manager/EPNotificationsHandler.java
+++ b/src/main/java/org/olat/portfolio/manager/EPNotificationsHandler.java
@@ -27,6 +27,7 @@ import java.util.Locale;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.notifications.NotificationsHandler;
 import org.olat.core.util.notifications.NotificationsManager;
 import org.olat.core.util.notifications.Publisher;
@@ -125,9 +126,10 @@ public class EPNotificationsHandler implements NotificationsHandler {
 	private TitleItem getTitleItemForMap(EPMapShort amap) {
 		StringBuilder sbTitle = new StringBuilder();
 		if (amap != null) {
-			sbTitle.append(amap.getTitle());
+			sbTitle.append(StringHelper.escapeHtml(amap.getTitle()));
 			EPFrontendManager epMgr = CoreSpringFactory.getImpl(EPFrontendManager.class);
-			sbTitle.append(" (").append(epMgr.getFirstOwnerAsString(amap)).append(")");
+			String firstOwner = epMgr.getFirstOwnerAsString(amap);
+			sbTitle.append(" (").append(StringHelper.escapeHtml(firstOwner)).append(")");
 		}
 		return new TitleItem(sbTitle.toString(), "o_EPStructuredMapTemplate_icon");
 	}
diff --git a/src/main/java/org/olat/portfolio/ui/EPMapRunController.java b/src/main/java/org/olat/portfolio/ui/EPMapRunController.java
index 26abc5782d4..3f888ed4018 100755
--- a/src/main/java/org/olat/portfolio/ui/EPMapRunController.java
+++ b/src/main/java/org/olat/portfolio/ui/EPMapRunController.java
@@ -97,10 +97,10 @@ public class EPMapRunController extends BasicController implements Activateable2
 		this.create = create;
 		this.option = option;
 		this.choosenOwner = choosenOwner;
-		ePFMgr = (EPFrontendManager) CoreSpringFactory.getBean("epFrontendManager");
+		ePFMgr = CoreSpringFactory.getImpl(EPFrontendManager.class);
 		
 		Component viewComp = new Panel("empty");
-		PortfolioModule portfolioModule = (PortfolioModule)CoreSpringFactory.getBean("portfolioModule");
+		PortfolioModule portfolioModule = CoreSpringFactory.getImpl(PortfolioModule.class);
 		if (portfolioModule.isEnabled()){
 			init(ureq);
 			viewComp = vC;
@@ -116,7 +116,7 @@ public class EPMapRunController extends BasicController implements Activateable2
 			createMapLink.setElementCssClass("o_sel_create_map");
 		}
 		
-		String documentType = null;
+		String documentType;
 		switch(option) {
 			case MY_DEFAULTS_MAPS:
 				documentType = "type.d*." + EPDefaultMap.class.getSimpleName();
@@ -124,6 +124,9 @@ public class EPMapRunController extends BasicController implements Activateable2
 			case MY_EXERCISES_MAPS:
 				documentType = "type.*." + EPStructuredMap.class.getSimpleName();
 				break;
+			default:
+				documentType = null;
+				break;
 		}
 		
 		if(documentType != null) {
diff --git a/src/main/java/org/olat/portfolio/ui/EPViewModeController.java b/src/main/java/org/olat/portfolio/ui/EPViewModeController.java
index 07bebc96adb..f2e8b485f7d 100644
--- a/src/main/java/org/olat/portfolio/ui/EPViewModeController.java
+++ b/src/main/java/org/olat/portfolio/ui/EPViewModeController.java
@@ -76,7 +76,6 @@ public class EPViewModeController extends FormBasicController {
 	/**
 	 * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer, org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest)
 	 */
-	@SuppressWarnings("unused")
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		String[] theKeys = new String[]{VIEWMODE_TABLE, VIEWMODE_DETAILS};
@@ -92,7 +91,6 @@ public class EPViewModeController extends FormBasicController {
 	/**
 	 * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#formInnerEvent(org.olat.core.gui.UserRequest, org.olat.core.gui.components.form.flexible.FormItem, org.olat.core.gui.components.form.flexible.impl.FormEvent)
 	 */
-	@SuppressWarnings("unused")
 	@Override
 	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
 		if (source == viewRadio){
@@ -108,7 +106,6 @@ public class EPViewModeController extends FormBasicController {
 	/**
 	 * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#formOK(org.olat.core.gui.UserRequest)
 	 */
-	@SuppressWarnings("unused")
 	@Override
 	protected void formOK(UserRequest ureq) {
 		// nothing to persist, see formInnerEvent
diff --git a/src/main/java/org/olat/portfolio/ui/PortfolioAdminController.java b/src/main/java/org/olat/portfolio/ui/PortfolioAdminController.java
index e0d2dede6cb..8090ecd8ddc 100644
--- a/src/main/java/org/olat/portfolio/ui/PortfolioAdminController.java
+++ b/src/main/java/org/olat/portfolio/ui/PortfolioAdminController.java
@@ -71,7 +71,7 @@ public class PortfolioAdminController extends FormBasicController  {
 	}
 
 	@Override
-	protected void initForm(FormItemContainer formLayout, Controller listener, @SuppressWarnings("unused") UserRequest ureq) {
+	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		if(formLayout instanceof FormLayoutContainer) {
 			FormLayoutContainer layoutContainer = (FormLayoutContainer)formLayout;
 			
@@ -119,7 +119,6 @@ public class PortfolioAdminController extends FormBasicController  {
 		//auto-disposed
 	}
 
-	@SuppressWarnings("unused")
 	@Override
 	protected void formOK(UserRequest ureq) {
 		//
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/collect/ArtefactWizzardStepsController.java b/src/main/java/org/olat/portfolio/ui/artefacts/collect/ArtefactWizzardStepsController.java
index 586bd4a1d2e..22ac1d368aa 100755
--- a/src/main/java/org/olat/portfolio/ui/artefacts/collect/ArtefactWizzardStepsController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/collect/ArtefactWizzardStepsController.java
@@ -182,7 +182,6 @@ public class ArtefactWizzardStepsController extends BasicController {
 	}
 
 	@Override
-	@SuppressWarnings("unused")
 	protected void event(UserRequest ureq, Component source, Event event) {
 		if (source == addLink) {
 			// someone triggered the 'add to my portfolio' workflow by its link
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/collect/CmdAddToEPortfolioImpl.java b/src/main/java/org/olat/portfolio/ui/artefacts/collect/CmdAddToEPortfolioImpl.java
index ca1bd3631a8..95ce12bbddf 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/collect/CmdAddToEPortfolioImpl.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/collect/CmdAddToEPortfolioImpl.java
@@ -117,7 +117,6 @@ public class CmdAddToEPortfolioImpl extends BasicController implements CmdAddToE
 	 *      org.olat.core.gui.components.Component,
 	 *      org.olat.core.gui.control.Event)
 	 */
-	@SuppressWarnings("unused")
 	@Override
 	protected void event(UserRequest ureq, Component source, Event event) {
 		// none
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPAddArtefactController.java b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPAddArtefactController.java
index 18db1787783..1c0f844809c 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPAddArtefactController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPAddArtefactController.java
@@ -61,7 +61,6 @@ public class EPAddArtefactController extends BasicController {
 
 	private Link uploadBtn;
 	private Link liveBlogBtn;
-	private Link importBtn; // not yet available, for v2 when import/export exists
 	private EPFrontendManager ePFMgr;
 	private VelocityContainer addPage = null;
 	private Link textBtn;
@@ -102,8 +101,6 @@ public class EPAddArtefactController extends BasicController {
 			liveBlogBtn.setCustomDisplayText(translate("add.artefact.blog"));
 			liveBlogBtn.setElementCssClass("o_sel_add_liveblog_artfeact");
 		}
-		
-		importBtn = LinkFactory.createLink("add.artefact.import", addPage, this); // not yet available, for v2 when import/export exists
 	}
 	
 	private void initAddLinkPopup(UserRequest ureq) {
@@ -138,7 +135,7 @@ public class EPAddArtefactController extends BasicController {
 	 *      org.olat.core.gui.control.Event)
 	 */
 	@Override
-	protected void event(UserRequest ureq, Component source, @SuppressWarnings("unused") Event event) {
+	protected void event(UserRequest ureq, Component source, Event event) {
 		if (source == addBtn) {
 			if (calloutCtr==null){
 				initAddLinkPopup(ureq);
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPArtefactWizzardStepCallback.java b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPArtefactWizzardStepCallback.java
index 52a71ef08d5..8de3e651c41 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPArtefactWizzardStepCallback.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPArtefactWizzardStepCallback.java
@@ -71,7 +71,6 @@ public class EPArtefactWizzardStepCallback implements StepRunnerCallback {
 	 *      org.olat.core.gui.control.generic.wizard.StepsRunContext)
 	 */
 	@Override
-	@SuppressWarnings("unused")
 	public Step execute(UserRequest ureq2, WindowControl wControl, StepsRunContext runContext) {
 		boolean hasChanges = false;
 		if (runContext.containsKey("artefact")) {
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStep01.java b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStep01.java
index 60cf573514f..cab15f33990 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStep01.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStep01.java
@@ -27,7 +27,6 @@ package org.olat.portfolio.ui.artefacts.collect;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.gui.UserRequest;
 import org.olat.core.gui.components.form.flexible.impl.Form;
-import org.olat.core.gui.components.form.flexible.impl.FormBasicController;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.generic.wizard.BasicStep;
 import org.olat.core.gui.control.generic.wizard.PrevNextFinishConfig;
@@ -38,7 +37,7 @@ import org.olat.portfolio.model.artefacts.AbstractArtefact;
 
 /**
  * Description:<br>
- * TODO: rhaag Class Description for EPCollectStep01
+ * Step which collects the tags. Presents a list of the 50 most used tags
  * 
  * <P>
  * Initial Date:  27.07.2010 <br>
@@ -78,8 +77,7 @@ public class EPCollectStep01 extends BasicStep {
 	 */
 	@Override
 	public StepFormController getStepController(UserRequest ureq, WindowControl windowControl, StepsRunContext stepsRunContext, Form form) {
-		StepFormController stepI = new EPCollectStepForm01(ureq, windowControl, form, stepsRunContext, FormBasicController.LAYOUT_DEFAULT, null, artefact);
+		StepFormController stepI = new EPCollectStepForm01(ureq, windowControl, form, stepsRunContext, artefact);
 		return stepI;
 	}
-
 }
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm00.java b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm00.java
index cdfda6e2b7d..c6024ecea3b 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm00.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm00.java
@@ -80,7 +80,7 @@ public class EPCollectStepForm00 extends StepFormBasicController {
 	}
 
 	@Override
-	protected void initForm(FormItemContainer formLayout, @SuppressWarnings("unused") Controller listener, UserRequest ureq) {
+	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		title = uifactory.addTextElement("title", "artefact.title", 500, artefact.getTitle(), formLayout);
 		title.setMandatory(true);
 		title.setNotEmptyCheck("artefact.title.not.empty");
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm01.java b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm01.java
index 350683cada0..0fb0534265c 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm01.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm01.java
@@ -44,6 +44,7 @@ import org.olat.core.gui.control.generic.wizard.StepsEvent;
 import org.olat.core.gui.control.generic.wizard.StepsRunContext;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
+import org.olat.core.util.StringHelper;
 import org.olat.portfolio.manager.EPFrontendManager;
 import org.olat.portfolio.model.artefacts.AbstractArtefact;
 
@@ -67,10 +68,9 @@ public class EPCollectStepForm01 extends StepFormBasicController {
 	
 	private static OLog logger = Tracing.createLoggerFor(EPCollectStepForm01.class);
 
-	public EPCollectStepForm01(UserRequest ureq, WindowControl wControl, Form rootForm, StepsRunContext runContext, int layout,
-			String customLayoutPageName, AbstractArtefact artefact) {
+	public EPCollectStepForm01(UserRequest ureq, WindowControl wControl, Form rootForm, StepsRunContext runContext, AbstractArtefact artefact) {
 		super(ureq, wControl, rootForm, runContext, FormBasicController.LAYOUT_CUSTOM, "step01tagging");
-		ePFMgr = (EPFrontendManager) CoreSpringFactory.getBean("epFrontendManager");
+		ePFMgr = CoreSpringFactory.getImpl(EPFrontendManager.class);
 
 		this.artefact = artefact;
 		initForm(this.flc, this, ureq);
@@ -93,7 +93,7 @@ public class EPCollectStepForm01 extends StepFormBasicController {
 		int i = 0;
 		for (Iterator<Entry<String, String>> iterator = allUsersTags.entrySet().iterator(); iterator.hasNext();) {
 			Entry<String, String> entry = iterator.next();
-			String tag = entry.getKey();
+			String tag = StringHelper.escapeHtml(entry.getKey());
 			FormLink tagLink = uifactory.addFormLink("tagU" + i, tag, null, formLayout, Link.NONTRANSLATED);
 			tagLink.setUserObject(entry.getValue());
 			userTagLinks.add(tagLink);
@@ -147,8 +147,7 @@ public class EPCollectStepForm01 extends StepFormBasicController {
 	 *      org.olat.core.gui.components.form.flexible.impl.FormEvent)
 	 */
 	@Override
-	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
-			
+	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {	
 		if (source == tagListElement) {
 			// nothing to do here, update dataModel on FormOK
 		} else if (source instanceof FormLink) {
@@ -160,10 +159,12 @@ public class EPCollectStepForm01 extends StepFormBasicController {
 			if (link.getName().startsWith("tag")) {
 				List<String> currentTagsInComponent = tagListElement.getValueList();
 				String newTagFromLink = (String) link.getUserObject();
+				newTagFromLink = StringHelper.escapeHtml(newTagFromLink);
+				newTagFromLink = StringHelper.escapeJavaScript(newTagFromLink);
 				currentTagsInComponent.add(newTagFromLink);
 				addToRunContext(RUNCTX_TAGLIST_KEY, currentTagsInComponent);
 				// refresh gui
-				this.flc.setDirty(true);
+				flc.setDirty(true);
 				initForm(ureq);
 			}
 		}
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm02.java b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm02.java
index c1be76c2918..d7e448c25f6 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm02.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm02.java
@@ -58,7 +58,6 @@ public class EPCollectStepForm02 extends StepFormBasicController {
 	 *      org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest)
 	 */
 	@Override
-	@SuppressWarnings("unused")
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		setFormDescription("copyright.intro.text");
 
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm03.java b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm03.java
index 0c5a6e73061..251c44f9707 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm03.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCollectStepForm03.java
@@ -128,7 +128,6 @@ public class EPCollectStepForm03 extends StepFormBasicController {
 	 *      org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest)
 	 */
 	@Override
-	@SuppressWarnings("unused")
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		setFormDescription("step3.short.descr");
 		setFormContextHelp("org.olat.portfolio.ui.artefacts.collect", "reflexion.html", "step3.chelp.hover");
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCreateFileArtefactStepForm00.java b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCreateFileArtefactStepForm00.java
index a91d27ddd05..39a60714a10 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCreateFileArtefactStepForm00.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCreateFileArtefactStepForm00.java
@@ -76,7 +76,6 @@ public class EPCreateFileArtefactStepForm00 extends StepFormBasicController {
 	 * @see org.olat.core.gui.control.generic.wizard.StepFormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer,
 	 *      org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest)
 	 */
-	@SuppressWarnings("unused")
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		setFormDescription("step0.file.short.descr");
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCreateTextArtefactStepForm00.java b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCreateTextArtefactStepForm00.java
index 9ad9d8f0a73..42a012b4619 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCreateTextArtefactStepForm00.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPCreateTextArtefactStepForm00.java
@@ -86,7 +86,7 @@ public class EPCreateTextArtefactStepForm00 extends StepFormBasicController {
 	}
 
 	@Override
-	protected void initForm(FormItemContainer formLayout, @SuppressWarnings("unused") Controller listener, UserRequest ureq) {
+	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 
 		VFSItem contFile = vfsTemp.resolve(EPArtefactManager.ARTEFACT_CONTENT_FILENAME);
 		if (contFile == null) {
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPReflexionChangeEvent.java b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPReflexionChangeEvent.java
index efce49ceeff..e2b00c7b135 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPReflexionChangeEvent.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/collect/EPReflexionChangeEvent.java
@@ -31,7 +31,8 @@ import org.olat.portfolio.model.artefacts.AbstractArtefact;
  * @author Roman Haag, roman.haag@frentix.com, http://www.frentix.com
  */
 public class EPReflexionChangeEvent extends Event {
-	
+
+	private static final long serialVersionUID = -2751202942774501947L;
 	private String refContent;
 	private AbstractArtefact refArtefact;
 	
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/ArtefactTypeImageCellRenderer.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/ArtefactTypeImageCellRenderer.java
index 5f23ae78271..772af4ce7e9 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/ArtefactTypeImageCellRenderer.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/ArtefactTypeImageCellRenderer.java
@@ -45,7 +45,6 @@ public class ArtefactTypeImageCellRenderer implements CustomCellRenderer {
 	/**
 	 * @see org.olat.core.gui.components.table.CustomCellRenderer#render(org.olat.core.gui.render.StringOutput, org.olat.core.gui.render.Renderer, java.lang.Object, java.util.Locale, int, java.lang.String)
 	 */
-	@SuppressWarnings("unused")
 	@Override
 	public void render(StringOutput sb, Renderer renderer, Object val, Locale locale, int alignment, String action) {
 		if (val instanceof AbstractArtefact){
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactAttributeSettingController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactAttributeSettingController.java
index a8238ad0739..fac8e30b4b1 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactAttributeSettingController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactAttributeSettingController.java
@@ -58,7 +58,6 @@ public class EPArtefactAttributeSettingController extends FormBasicController {
 	}
 
 	@Override
-	@SuppressWarnings("unused")
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		setFormDescription("display.option.intro");
 
@@ -83,7 +82,6 @@ public class EPArtefactAttributeSettingController extends FormBasicController {
 	 *      org.olat.core.gui.components.form.flexible.impl.FormEvent)
 	 */
 	@Override
-	@SuppressWarnings("unused")
 	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
 		if (source instanceof MultipleSelectionElement){
 			MultipleSelectionElement chkBox = (MultipleSelectionElement) source;
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactChoosenEvent.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactChoosenEvent.java
index 80f52fa9573..630b23d25b7 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactChoosenEvent.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactChoosenEvent.java
@@ -32,6 +32,7 @@ import org.olat.portfolio.model.artefacts.AbstractArtefact;
  */
 public class EPArtefactChoosenEvent extends Event {
 
+	private static final long serialVersionUID = 3621326017804909627L;
 	private AbstractArtefact artefact;
 
 	public EPArtefactChoosenEvent(AbstractArtefact artefact) {
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactDeletedEvent.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactDeletedEvent.java
index 26c2a96362f..03146f17480 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactDeletedEvent.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactDeletedEvent.java
@@ -37,6 +37,7 @@ import org.olat.portfolio.model.artefacts.AbstractArtefact;
  */
 public class EPArtefactDeletedEvent extends Event {
 
+	private static final long serialVersionUID = -3990634156779087562L;
 	public static final String ARTEFACT_DELETED = "artefactDeleted";
 	private final Long oldArtefactKey;
 	private final AbstractArtefact artefact;
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactViewController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactViewController.java
index 842633d7cd0..ee7cb21640e 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactViewController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactViewController.java
@@ -239,15 +239,23 @@ public class EPArtefactViewController extends FormBasicController {
 				
 		// create edit buttons the adapt meta-data
 		if (!(viewOnlyMode || artefactChooseMode || artefactInClosedMap)){
-			String reflexion = FilterFactory.getHtmlTagAndDescapingFilter().filter(artefact.getReflexion());
+			String reflexion = artefact.getReflexion();
+			reflexion = FilterFactory.getHtmlTagAndDescapingFilter().filter(reflexion);
+			reflexion = StringHelper.xssScan(reflexion);
 			reflexion = Formatter.truncate(reflexion, 50);
-			if (reflexion == null || !StringHelper.containsNonWhitespace(reflexion)) reflexion = "&nbsp; "; // show a link even if empty
+			if (!StringHelper.containsNonWhitespace(reflexion)) {
+				reflexion = "&nbsp; "; // show a link even if empty
+			}
 			reflexionBtn = uifactory.addFormLink("reflexionBtn", reflexion, null, formLayout, Link.NONTRANSLATED);
 			reflexionBtn.setCustomEnabledLinkCSS("b_inline_editable b_ep_nolink");
 			
-			String description = FilterFactory.getHtmlTagAndDescapingFilter().filter(artefact.getDescription());
+			String description = artefact.getDescription();
+			description = FilterFactory.getHtmlTagAndDescapingFilter().filter(description);
 			description = Formatter.truncate(description, 50);
-			if (description == null || !StringHelper.containsNonWhitespace(description)) description = "&nbsp; "; // show a link even if empty
+			description = StringHelper.xssScan(description);
+			if (!StringHelper.containsNonWhitespace(description)) {
+				description = "&nbsp; "; // show a link even if empty
+			}
 			descriptionBtn = uifactory.addFormLink("descriptionBtn", description, null, formLayout, Link.NONTRANSLATED);
 			descriptionBtn.setCustomEnabledLinkCSS("b_inline_editable b_ep_nolink");
 		}
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactViewReadOnlyController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactViewReadOnlyController.java
index 232c81b2faf..c52283c5160 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactViewReadOnlyController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPArtefactViewReadOnlyController.java
@@ -32,7 +32,6 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
 import org.olat.core.id.Identity;
-import org.olat.core.id.UserConstants;
 import org.olat.core.util.Formatter;
 import org.olat.core.util.StringHelper;
 import org.olat.core.util.filter.FilterFactory;
@@ -40,7 +39,7 @@ import org.olat.portfolio.EPSecurityCallback;
 import org.olat.portfolio.EPUIFactory;
 import org.olat.portfolio.manager.EPFrontendManager;
 import org.olat.portfolio.model.artefacts.AbstractArtefact;
-import org.olat.portfolio.model.structel.PortfolioStructure;
+import org.olat.user.UserManager;
 
 /**
  * Description:<br>
@@ -57,25 +56,25 @@ public class EPArtefactViewReadOnlyController extends BasicController {
 	private AbstractArtefact artefact;
 	private EPSecurityCallback secCallback;
 
-	protected EPArtefactViewReadOnlyController(UserRequest ureq, WindowControl wControl, AbstractArtefact artefact, EPSecurityCallback secCallback, PortfolioStructure struct) {
+	protected EPArtefactViewReadOnlyController(UserRequest ureq, WindowControl wControl, AbstractArtefact artefact, EPSecurityCallback secCallback) {
 		super(ureq, wControl);
 		this.artefact = artefact;
 		this.secCallback = secCallback;
 		vC = createVelocityContainer("smallSingleArtefact");
 		vC.contextPut("artefact", artefact);
 		Identity artIdent = artefact.getAuthor();
-		String fullName = artIdent.getUser().getProperty(UserConstants.FIRSTNAME, null)+" "+artIdent.getUser().getProperty(UserConstants.LASTNAME, null);
-		
+		String fullName = CoreSpringFactory.getImpl(UserManager.class).getUserDisplayName(artIdent);
 		String description = FilterFactory.getHtmlTagAndDescapingFilter().filter(artefact.getDescription());
+		description = StringHelper.xssScan(description);
 		description = Formatter.truncate(description, 50);
 		vC.contextPut("description", description);
-		vC.contextPut("authorName", fullName);
+		vC.contextPut("authorName", StringHelper.escapeHtml(fullName));
 		if (secCallback.canView()){
 			detailsLink = LinkFactory.createCustomLink("small.details.link", "open", "small.details.link", Link.LINK, vC, this);
 			detailsLink.setElementCssClass("o_sel_artefact_details");
 		}
 		
-		ePFMgr = (EPFrontendManager) CoreSpringFactory.getBean("epFrontendManager");
+		ePFMgr = CoreSpringFactory.getImpl(EPFrontendManager.class);
 		List<String> tags = ePFMgr.getArtefactTags(artefact);
 		vC.contextPut("tags", StringHelper.formatAsCSVString(tags));
 		
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactPreviewController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactPreviewController.java
index d65cc7e98e9..8e395b13660 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactPreviewController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactPreviewController.java
@@ -180,7 +180,6 @@ public class EPMultipleArtefactPreviewController extends BasicController impleme
 	 *      org.olat.core.gui.control.Event)
 	 */
 	@Override
-	@SuppressWarnings("unused")
 	protected void event(UserRequest ureq, Component source, Event event) {
 		if (source == artAttribBtn) {
 			if (artAttribCalloutCtr == null){
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactSmallReadOnlyPreviewController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactSmallReadOnlyPreviewController.java
index e3a98f3ddaf..f42fd9da98e 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactSmallReadOnlyPreviewController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPMultipleArtefactSmallReadOnlyPreviewController.java
@@ -88,7 +88,7 @@ public class EPMultipleArtefactSmallReadOnlyPreviewController extends BasicContr
 			if (special) {
 				artCtrl = artHandler.getSpecialMapViewController(ureq, getWindowControl(), artefact);
 			} else {
-				artCtrl = new EPArtefactViewReadOnlyController(ureq, getWindowControl(), artefact, secCallback, struct);
+				artCtrl = new EPArtefactViewReadOnlyController(ureq, getWindowControl(), artefact, secCallback);
 			}
 			if (artCtrl != null){
 				artefactCtrls.add(artCtrl);
@@ -169,7 +169,6 @@ public class EPMultipleArtefactSmallReadOnlyPreviewController extends BasicContr
 	/**
 	 * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.components.Component, org.olat.core.gui.control.Event)
 	 */
-	@SuppressWarnings("unused")
 	@Override
 	protected void event(UserRequest ureq, Component source, Event event) {
 		// no events to handle yet
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPReflexionViewController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPReflexionViewController.java
index 343e55b6fe6..41712d291a4 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPReflexionViewController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPReflexionViewController.java
@@ -67,7 +67,6 @@ public class EPReflexionViewController extends FormBasicController {
 	 *      org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest)
 	 */
 	@Override
-	@SuppressWarnings("unused")
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		setFormDescription("artefact.reflexion.view.descr");
 
@@ -97,7 +96,6 @@ public class EPReflexionViewController extends FormBasicController {
 	 * @see org.olat.core.gui.control.generic.wizard.StepFormBasicController#formOK(org.olat.core.gui.UserRequest)
 	 */
 	@Override
-	@SuppressWarnings("unused")
 	protected void formOK(UserRequest ureq) {
 		//do nothing
 	}
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPTagBrowseController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPTagBrowseController.java
index 5a8e7d17b6f..0f18ffb6bdb 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPTagBrowseController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPTagBrowseController.java
@@ -101,7 +101,6 @@ public class EPTagBrowseController extends BasicController {
 	 *      org.olat.core.gui.components.Component,
 	 *      org.olat.core.gui.control.Event)
 	 */
-	@SuppressWarnings("unused")
 	@Override
 	protected void event(UserRequest ureq, Component source, Event event) {
 		// nothing
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPTagBrowseEvent.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPTagBrowseEvent.java
index 5f84d7e68e0..4a35c3ff8c6 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/EPTagBrowseEvent.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/EPTagBrowseEvent.java
@@ -33,7 +33,8 @@ import org.olat.portfolio.model.artefacts.AbstractArtefact;
  * @author Roman Haag, roman.haag@frentix.com, http://www.frentix.com
  */
 public class EPTagBrowseEvent extends Event {
-	
+
+	private static final long serialVersionUID = -6127870154016020474L;
 	private final List<AbstractArtefact> artefacts;
 	
 	public EPTagBrowseEvent(List<AbstractArtefact> artefacts) {
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/_content/smallSingleArtefact.html b/src/main/java/org/olat/portfolio/ui/artefacts/view/_content/smallSingleArtefact.html
index 53a799f95c3..eb2b904dd4d 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/_content/smallSingleArtefact.html
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/_content/smallSingleArtefact.html
@@ -1,5 +1,5 @@
-<div  >
-	<h4 class="b_with_small_icon_left $artefact.getIcon()">$!artefact.getTitle()</h4>
+<div>
+	<h4 class="b_with_small_icon_left $artefact.getIcon()">$r.escapeHtml($!artefact.getTitle())</h4>
 	#if($description)
 	<div class="b_desc">
 		$description
diff --git a/src/main/java/org/olat/portfolio/ui/artefacts/view/details/TextArtefactDetailsController.java b/src/main/java/org/olat/portfolio/ui/artefacts/view/details/TextArtefactDetailsController.java
index f025af2b27c..8b0611ebc41 100644
--- a/src/main/java/org/olat/portfolio/ui/artefacts/view/details/TextArtefactDetailsController.java
+++ b/src/main/java/org/olat/portfolio/ui/artefacts/view/details/TextArtefactDetailsController.java
@@ -31,6 +31,7 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.gui.control.generic.closablewrapper.CloseableCalloutWindowController;
 import org.olat.core.util.Formatter;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.filter.Filter;
 import org.olat.core.util.filter.FilterFactory;
 import org.olat.core.util.vfs.VFSContainer;
@@ -75,6 +76,7 @@ public class TextArtefactDetailsController extends BasicController {
 		if (!readOnlyMode) {
 			// prepare an edit link
 			String fulltext = FilterFactory.getHtmlTagAndDescapingFilter().filter(artFulltextContent);
+			fulltext = StringHelper.xssScan(fulltext);
 			fulltext = Formatter.truncate(fulltext, 50);
 			editBtn = LinkFactory.createCustomLink("text.edit.link", "edit", fulltext, Link.NONTRANSLATED, vC, this);
 			editBtn.setCustomEnabledLinkCSS("b_inline_editable b_ep_nolink");
@@ -90,14 +92,12 @@ public class TextArtefactDetailsController extends BasicController {
 	
 
 	@Override
-	@SuppressWarnings("unused")
 	protected void event(UserRequest ureq, Component source, Event event) {
 		if (source == editBtn) {
 			popupEditorCallout(ureq);
 		} 
 	}
 
-	@SuppressWarnings("unused")
 	@Override
 	protected void event(UserRequest ureq, Controller source, Event event) {
 		if (source == calloutCtrl && event.equals(CloseableCalloutWindowController.CLOSE_WINDOW_EVENT)) {
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPAddElementsController.java b/src/main/java/org/olat/portfolio/ui/structel/EPAddElementsController.java
index 9b72347340d..3a8a3f1a381 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPAddElementsController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPAddElementsController.java
@@ -68,14 +68,13 @@ public class EPAddElementsController extends BasicController {
 	public static final String ADD_PAGE = "page";
 	public static final String ADD_STRUCTUREELEMENT = "struct";
 	public static final String ADD_PORTFOLIOSTRUCTURE = "map";
-	private static final Set<String> typeSet = new HashSet<String>() {
-		{
-			add(ADD_ARTEFACT);
-			add(ADD_PAGE);
-			add(ADD_STRUCTUREELEMENT);
-			add(ADD_PORTFOLIOSTRUCTURE);
-		}
-	};
+	private static final Set<String> typeSet = new HashSet<String>();
+	static {
+		typeSet.add(ADD_ARTEFACT);
+		typeSet.add(ADD_PAGE);
+		typeSet.add(ADD_STRUCTUREELEMENT);
+		typeSet.add(ADD_PORTFOLIOSTRUCTURE);
+	}
 	private final Map<String, Boolean> typeMap = new HashMap<String, Boolean>();
 	private CloseableModalController artefactBox;
 	private EPArtefactPoolRunController artefactPoolCtrl;
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPArtefactClicked.java b/src/main/java/org/olat/portfolio/ui/structel/EPArtefactClicked.java
index 5ee17af1028..78120156046 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPArtefactClicked.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPArtefactClicked.java
@@ -31,7 +31,8 @@ import org.olat.portfolio.model.structel.PortfolioStructure;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  */
 public class EPArtefactClicked extends Event {
-	
+
+	private static final long serialVersionUID = 7396012394011453648L;
 	private final PortfolioStructure structure;
 	
 	public EPArtefactClicked(String cmd, PortfolioStructure structure) {
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPCreateMapController.java b/src/main/java/org/olat/portfolio/ui/structel/EPCreateMapController.java
index 40e31b081e4..6a0ec1bf312 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPCreateMapController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPCreateMapController.java
@@ -59,7 +59,6 @@ public class EPCreateMapController extends FormBasicController {
 	 * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer,
 	 *      org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest)
 	 */
-	@SuppressWarnings("unused")
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		String title = "";
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPMapCreatedEvent.java b/src/main/java/org/olat/portfolio/ui/structel/EPMapCreatedEvent.java
index 9251c51d556..52ecc24604c 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPMapCreatedEvent.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPMapCreatedEvent.java
@@ -32,6 +32,8 @@ import org.olat.portfolio.model.structel.PortfolioStructureMap;
  */
 public class EPMapCreatedEvent extends EPMapEvent {
 
+	private static final long serialVersionUID = -3783757567973482399L;
+
 	public EPMapCreatedEvent(PortfolioStructureMap resMap) {
 		super("EPMapCreated", resMap);
 	}
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPMapEvent.java b/src/main/java/org/olat/portfolio/ui/structel/EPMapEvent.java
index 0429e7c2bb6..7ffafdf270e 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPMapEvent.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPMapEvent.java
@@ -32,6 +32,8 @@ import org.olat.portfolio.model.structel.PortfolioStructureMap;
  */
 public class EPMapEvent extends EPStructureEvent {
 
+	private static final long serialVersionUID = -4106964526869394707L;
+
 	public EPMapEvent(String command, PortfolioStructureMap map) {
 		super(command, map);
 	}
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPMapViewController.java b/src/main/java/org/olat/portfolio/ui/structel/EPMapViewController.java
index 8d90d77cc3c..50f44af2b56 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPMapViewController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPMapViewController.java
@@ -40,6 +40,7 @@ import org.olat.core.id.OLATResourceable;
 import org.olat.core.id.context.ContextEntry;
 import org.olat.core.id.context.StateEntry;
 import org.olat.core.logging.activity.ThreadLocalUserActivityLogger;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.coordinate.CoordinatorManager;
 import org.olat.core.util.coordinate.LockResult;
 import org.olat.course.CourseFactory;
@@ -159,7 +160,7 @@ public class EPMapViewController extends BasicController implements Activateable
 			EPTargetResource resource = ((EPStructuredMap)map).getTargetResource();
 			RepositoryEntry repoEntry = RepositoryManager.getInstance().lookupRepositoryEntry(resource.getOLATResourceable(), false);
 			if(repoEntry != null) {
-				mainVc.contextPut("courseName", repoEntry.getDisplayname());
+				mainVc.contextPut("courseName", StringHelper.escapeHtml(repoEntry.getDisplayname()));
 				String url = Settings.getServerContextPathURI();
 				url += "/url/RepositoryEntry/" + repoEntry.getKey() + "/CourseNode/" + resource.getSubPath();
 				mainVc.contextPut("courseLink", url);
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPMultiplePageController.java b/src/main/java/org/olat/portfolio/ui/structel/EPMultiplePageController.java
index 2a8b1948172..e4339cc7555 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPMultiplePageController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPMultiplePageController.java
@@ -79,7 +79,7 @@ public class EPMultiplePageController extends BasicController implements Activat
 		this.pageList = pageList;
 		this.pageListByKeys = new ArrayList<Long>(pageList.size());
 		this.secCallback = secCallback;
-		ePFMgr = (EPFrontendManager) CoreSpringFactory.getBean("epFrontendManager");
+		ePFMgr = CoreSpringFactory.getImpl(EPFrontendManager.class);
 
 		vC = createVelocityContainer("multiPages");
 
@@ -111,10 +111,10 @@ public class EPMultiplePageController extends BasicController implements Activat
 			changelogLink.setUserObject(PAGENUM_CL);
 
 			int i = 1;
-			ArrayList<Link> pageLinkList = new ArrayList<Link>();
+			List<Link> pageLinkList = new ArrayList<Link>();
 			for (PortfolioStructure page : pageList) {
 				pageListByKeys.add(page.getKey());
-				String pageTitle =StringHelper.escapeHtml(((EPPage) page).getTitle());
+				String pageTitle =StringHelper.escapeHtml(page.getTitle());
 				String shortPageTitle = Formatter.truncate(pageTitle, 20);
 				Link pageLink = LinkFactory
 						.createCustomLink("pageLink" + i, "pageLink" + i, shortPageTitle, Link.LINK + Link.NONTRANSLATED, vC, this);
@@ -267,7 +267,7 @@ public class EPMultiplePageController extends BasicController implements Activat
 	}
 
 	@Override
-	protected void event(UserRequest ureq, Component source, @SuppressWarnings("unused") Event event) {
+	protected void event(UserRequest ureq, Component source, Event event) {
 		if (source instanceof Link) {
 			Link link = (Link) source;
 			int pageNum = PAGENUM_TOC;
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPPageViewController.java b/src/main/java/org/olat/portfolio/ui/structel/EPPageViewController.java
index 7eee1c06593..9d48ff18211 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPPageViewController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPPageViewController.java
@@ -68,7 +68,7 @@ public class EPPageViewController extends BasicController {
 		this.page = page;
 		this.secCallback = secCallback;
 
-		ePFMgr = (EPFrontendManager) CoreSpringFactory.getBean("epFrontendManager");
+		ePFMgr = CoreSpringFactory.getImpl(EPFrontendManager.class);
 		
 		commentAndRatingService = (CommentAndRatingService) CoreSpringFactory.getBean(CommentAndRatingService.class);
 		commentAndRatingService.init(getIdentity(), map.getOlatResource(), page.getKey().toString(), false, ureq.getUserSession().getRoles().isGuestOnly());
@@ -166,8 +166,6 @@ public class EPPageViewController extends BasicController {
 		//
 	}
 
-
-	@SuppressWarnings("unused")
 	@Override
 	protected void event(UserRequest ureq, Component source, Event event) {
 		//
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPStructureChangeEvent.java b/src/main/java/org/olat/portfolio/ui/structel/EPStructureChangeEvent.java
index 74e43a2318c..3afccc76529 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPStructureChangeEvent.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPStructureChangeEvent.java
@@ -31,6 +31,8 @@ import org.olat.portfolio.model.structel.PortfolioStructure;
  * @author Roman Haag, roman.haag@frentix.com, http://www.frentix.com
  */
 public class EPStructureChangeEvent extends Event {
+	
+	private static final long serialVersionUID = -7091171722782650074L;
 
 	private PortfolioStructure portfolioStructure;
 
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPStructureElementsController.java b/src/main/java/org/olat/portfolio/ui/structel/EPStructureElementsController.java
index b23425144f1..777c5828b5b 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPStructureElementsController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPStructureElementsController.java
@@ -158,7 +158,6 @@ public class EPStructureElementsController extends BasicController {
 		}
 	}
 
-	@SuppressWarnings("unused")
 	@Override
 	protected void event(UserRequest ureq, Component source, Event event) {
 		//
diff --git a/src/main/java/org/olat/portfolio/ui/structel/EPStructureEvent.java b/src/main/java/org/olat/portfolio/ui/structel/EPStructureEvent.java
index 2c563122b44..3ff55270e60 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/EPStructureEvent.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/EPStructureEvent.java
@@ -32,7 +32,8 @@ import org.olat.portfolio.model.structel.PortfolioStructure;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  */
 public class EPStructureEvent extends Event {
-	
+
+	private static final long serialVersionUID = 1732568799650825946L;
 	public static final String SELECT = "select";
 	public static final String SELECT_WITH_COMMENTS = "selectWithComments";
 	public static final String CLOSE = "close";
diff --git a/src/main/java/org/olat/portfolio/ui/structel/_content/mapview.html b/src/main/java/org/olat/portfolio/ui/structel/_content/mapview.html
index c6b09a2fcb0..b429d0591a4 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/_content/mapview.html
+++ b/src/main/java/org/olat/portfolio/ui/structel/_content/mapview.html
@@ -25,7 +25,7 @@
 			#end
 			<br/>
 		</div>
-		<h4>$map.title</h4>
+		<h4>$r.escapeHtml($map.title)</h4>
 		<div style="clear: right;"></div>
 	
 		#if(!$r.available("editor"))
diff --git a/src/main/java/org/olat/portfolio/ui/structel/_content/multiMaps.html b/src/main/java/org/olat/portfolio/ui/structel/_content/multiMaps.html
index ce6c7d52f90..6d4665214b6 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/_content/multiMaps.html
+++ b/src/main/java/org/olat/portfolio/ui/structel/_content/multiMaps.html
@@ -22,10 +22,10 @@
 	#set($index = ($velocityCount - 1))
 	#if($map.getClass().getSimpleName() == "EPStructuredMapTemplate") #set($addTempStamp = "template") #end
 	<li class="$!mapStyles.get($index) $!addTempStamp">	 
-		<h4>$map.title</h4> 
-		<div class="b_map_descr">$map.shortenedDescription</div>
+		<h4>$r.escapeHtml($map.title)</h4> 
+		<div class="b_map_descr">$r.escapeHtml($map.shortenedDescription)</div>
 		<div class="b_map_info">
-		#if ($owners.get($index)) <p>$r.translate("map.owners", $owners.get($index)) </p> #end
+		#if ($owners.get($index)) <p>$r.translate("map.owners", $r.escapeHtml($owners.get($index))) </p> #end
 		<p>$amounts.get($index)
 		#if ($deadLines.get($index)) <br/> $r.translate("map.deadline", "$r.formatDate($deadLines.get($index))")  #end
 		#if ($restriStats.get($index)) <br/> $r.translate("map.restriction.overview", $restriStats.get($index))  #end
diff --git a/src/main/java/org/olat/portfolio/ui/structel/_content/pageView.html b/src/main/java/org/olat/portfolio/ui/structel/_content/pageView.html
index 2462102b8bc..cbdfb3ca9a7 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/_content/pageView.html
+++ b/src/main/java/org/olat/portfolio/ui/structel/_content/pageView.html
@@ -1,6 +1,6 @@
 ## see similarity with mapview.html
 <div class="b_eportfolio_page"> 
-	<h4>$page.title</h4>
+	<h4>$r.escapeHtml($page.title)</h4>
 ##	<small>$page.key</small><br/>
 	#if($r.available("addButton"))
 		$r.render("addButton")
diff --git a/src/main/java/org/olat/portfolio/ui/structel/_content/structElements.html b/src/main/java/org/olat/portfolio/ui/structel/_content/structElements.html
index 3de62c432fc..53f22c12645 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/_content/structElements.html
+++ b/src/main/java/org/olat/portfolio/ui/structel/_content/structElements.html
@@ -5,7 +5,7 @@
 	#set($artefacts = "artefacts$velocityCount")
 	#set($checkResults = "checkResults$velocityCount")
 	<div class="b_eportfolio_structure">
-	<h5>$structEl.title</h5>
+	<h5>$r.escapeHtml($structEl.title)</h5>
 	#if($r.available($addBtn))
 		$r.render($addBtn)
 	#end
diff --git a/src/main/java/org/olat/portfolio/ui/structel/edit/EPCollectRestrictionResultController.java b/src/main/java/org/olat/portfolio/ui/structel/edit/EPCollectRestrictionResultController.java
index 40350ecf397..f790a8d2dab 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/edit/EPCollectRestrictionResultController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/edit/EPCollectRestrictionResultController.java
@@ -117,7 +117,6 @@ public class EPCollectRestrictionResultController extends BasicController {
 	}
 	
 	@Override
-	@SuppressWarnings("unused")
 	protected void event(UserRequest ureq, Component source, Event event) {
 		//
 	}
diff --git a/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureDetailsController.java b/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureDetailsController.java
index 3d183b1047a..221693bd8bd 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureDetailsController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureDetailsController.java
@@ -111,7 +111,6 @@ public class EPStructureDetailsController extends FormBasicController {
 	 * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer,
 	 *      org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest)
 	 */
-	@SuppressWarnings("unused")
 	@Override
 	protected void initForm(final FormItemContainer formLayout, final Controller listener, final UserRequest ureq) {
 
diff --git a/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureTreeAndDetailsEditController.java b/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureTreeAndDetailsEditController.java
index 5c2eea88b01..ad1fae82749 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureTreeAndDetailsEditController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/edit/EPStructureTreeAndDetailsEditController.java
@@ -119,7 +119,6 @@ public class EPStructureTreeAndDetailsEditController extends FormBasicController
 	/**
 	 * @see org.olat.core.gui.components.form.flexible.impl.FormBasicController#formInnerEvent(org.olat.core.gui.UserRequest, org.olat.core.gui.components.form.flexible.FormItem, org.olat.core.gui.components.form.flexible.impl.FormEvent)
 	 */
-	@SuppressWarnings("unused")
 	@Override
 	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
 		if (source == mapStyle){
@@ -159,13 +158,13 @@ public class EPStructureTreeAndDetailsEditController extends FormBasicController
 	protected void doDispose() {
 		// nothing to dispose
 	}
-	
+
+	@Override
 	public FormItem getInitialFormItem() {
 		return flc;
 	}
 	
 	@Override
-	@SuppressWarnings("unused")
 	protected void formOK(UserRequest ureq) {
 		//
 	}
diff --git a/src/main/java/org/olat/portfolio/ui/structel/edit/EPTOCController.java b/src/main/java/org/olat/portfolio/ui/structel/edit/EPTOCController.java
index dc3f22c211d..96df5deac2c 100644
--- a/src/main/java/org/olat/portfolio/ui/structel/edit/EPTOCController.java
+++ b/src/main/java/org/olat/portfolio/ui/structel/edit/EPTOCController.java
@@ -201,7 +201,7 @@ public class EPTOCController extends BasicController {
 				if (artefactClicked != null) {
 					AbstractArtefact artefact = artefactClicked;
 					PortfolioStructure parentStruct = getArtefactParentStruct(artefactClicked);
-					PortfolioStructure mergedStruct = ePFMgr.removeArtefactFromStructure(artefact, parentStruct);
+					ePFMgr.removeArtefactFromStructure(artefact, parentStruct);
 					// refresh the view
 					fireEvent(ureq, Event.CHANGED_EVENT);
 				} else if (structureClicked != null) {
diff --git a/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java b/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java
index b1248a5eb7d..b124894e161 100644
--- a/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java
+++ b/src/main/java/org/olat/repository/controllers/RepositoryDetailsController.java
@@ -335,7 +335,7 @@ public class RepositoryDetailsController extends BasicController implements Gene
 		for(IdentityShort author:authors) {
 			String authorName = userManager.getUserDisplayName(author);
 			Link authorLink = LinkFactory.createLink("author_" + counter++, main, this);
-			authorLink.setCustomDisplayText(authorName);
+			authorLink.setCustomDisplayText(StringHelper.escapeHtml(authorName));
 			authorLink.setUserObject(author);
 			authorLinkNames.add(authorLink.getComponentName());
 		}
@@ -347,7 +347,7 @@ public class RepositoryDetailsController extends BasicController implements Gene
 		if(!initialAuthors.isEmpty()) {
 			String authorName = userManager.getUserDisplayName(initialAuthors.get(0));
 			Link authorLink = LinkFactory.createLink("author_" + counter++, main, this);
-			authorLink.setCustomDisplayText(authorName);
+			authorLink.setCustomDisplayText(StringHelper.escapeHtml(authorName));
 			authorLink.setUserObject(initialAuthors.get(0));
 			main.contextPut("initialauthorlinkename", authorLink.getComponentName());
 		}
diff --git a/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java b/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java
index 3d9519a5fb3..fbf0e9b66cc 100644
--- a/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java
+++ b/src/main/java/org/olat/repository/controllers/RepositoryEditDescriptionController.java
@@ -138,6 +138,7 @@ public class RepositoryEditDescriptionController extends FormBasicController {
 		if(repositoryEntry.getInitialAuthor() != null) {
 			initalAuthor = userManager.getUserDisplayName(initalAuthor);
 		}
+		initalAuthor = StringHelper.escapeHtml(initalAuthor);
 		uifactory.addStaticTextElement("cif.initialAuthor", initalAuthor, descCont);
 		// Add resource type
 		String typeName = null;
diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/free/ui/FreeAccessController.java b/src/main/java/org/olat/resource/accesscontrol/provider/free/ui/FreeAccessController.java
index b6b9adb0266..8ffcac47240 100644
--- a/src/main/java/org/olat/resource/accesscontrol/provider/free/ui/FreeAccessController.java
+++ b/src/main/java/org/olat/resource/accesscontrol/provider/free/ui/FreeAccessController.java
@@ -76,6 +76,7 @@ public class FreeAccessController extends FormBasicController implements FormCon
 		
 		String description = link.getOffer().getDescription();
 		if(StringHelper.containsNonWhitespace(description)) {
+			description = StringHelper.escapeHtml(description);
 			uifactory.addStaticTextElement("offer.description", description, formLayout);
 		}
 		
diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/paypal/ui/PaypalAccessController.java b/src/main/java/org/olat/resource/accesscontrol/provider/paypal/ui/PaypalAccessController.java
index 6d9751243a2..2349f0cb7a3 100644
--- a/src/main/java/org/olat/resource/accesscontrol/provider/paypal/ui/PaypalAccessController.java
+++ b/src/main/java/org/olat/resource/accesscontrol/provider/paypal/ui/PaypalAccessController.java
@@ -104,6 +104,7 @@ public class PaypalAccessController extends FormBasicController implements FormC
 		
 		String description = link.getOffer().getDescription();
 		if(StringHelper.containsNonWhitespace(description)) {
+			description = StringHelper.escapeHtml(description);
 			uifactory.addStaticTextElement("offer.description", description, formLayout);
 		}
 		
diff --git a/src/main/java/org/olat/resource/accesscontrol/provider/token/ui/TokenAccessController.java b/src/main/java/org/olat/resource/accesscontrol/provider/token/ui/TokenAccessController.java
index c8e1f900195..5ab15bd8dec 100644
--- a/src/main/java/org/olat/resource/accesscontrol/provider/token/ui/TokenAccessController.java
+++ b/src/main/java/org/olat/resource/accesscontrol/provider/token/ui/TokenAccessController.java
@@ -78,6 +78,7 @@ public class TokenAccessController extends FormBasicController implements FormCo
 		
 		String description = link.getOffer().getDescription();
 		if(StringHelper.containsNonWhitespace(description)) {
+			description = StringHelper.escapeHtml(description);
 			uifactory.addStaticTextElement("offer.description", description, formLayout);
 		}
 			
diff --git a/src/main/java/org/olat/resource/accesscontrol/ui/OrderDetailController.java b/src/main/java/org/olat/resource/accesscontrol/ui/OrderDetailController.java
index 223cc94f1a9..504c97bab6e 100644
--- a/src/main/java/org/olat/resource/accesscontrol/ui/OrderDetailController.java
+++ b/src/main/java/org/olat/resource/accesscontrol/ui/OrderDetailController.java
@@ -52,7 +52,6 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.id.User;
-import org.olat.core.id.UserConstants;
 import org.olat.core.id.context.BusinessControl;
 import org.olat.core.id.context.BusinessControlFactory;
 import org.olat.core.util.Formatter;
@@ -66,6 +65,7 @@ import org.olat.resource.accesscontrol.model.AccessTransaction;
 import org.olat.resource.accesscontrol.model.Order;
 import org.olat.resource.accesscontrol.model.OrderLine;
 import org.olat.resource.accesscontrol.model.OrderPart;
+import org.olat.user.UserManager;
 
 public class OrderDetailController extends FormBasicController {
 	
@@ -126,14 +126,16 @@ public class OrderDetailController extends FormBasicController {
 			OrderItemWrapper wrapper = tableModel.getObject(0);
 			if(wrapper.getItem().getOffer().getResource() != null) {
 				//resource is null if the resource has been deleted
-				String linkName = wrapper.getDisplayName();
+				String linkName = StringHelper.escapeHtml(wrapper.getDisplayName());
 				selectResourceLink = uifactory.addFormLink("resource", linkName, translate("order.item"), mainLayout, Link.NONTRANSLATED);
 				selectResourceLink.setUserObject(wrapper);
 			}
 		}
+		
+		UserManager userManager = CoreSpringFactory.getImpl(UserManager.class);
 
 		User user = order.getDelivery().getUser();
-		String delivery = user.getProperty(UserConstants.FIRSTNAME, null) + " " + user.getProperty(UserConstants.LASTNAME, null);
+		String delivery = StringHelper.escapeHtml(userManager.getUserDisplayName(user));
 		uifactory.addStaticTextElement("delivery", "order.delivery", delivery, mainLayout);
 
 		if(formLayout instanceof FormLayoutContainer) {
diff --git a/src/main/java/org/olat/resource/accesscontrol/ui/_content/configuration_list.html b/src/main/java/org/olat/resource/accesscontrol/ui/_content/configuration_list.html
index ec6c4512a72..5d25ba985a3 100644
--- a/src/main/java/org/olat/resource/accesscontrol/ui/_content/configuration_list.html
+++ b/src/main/java/org/olat/resource/accesscontrol/ui/_content/configuration_list.html
@@ -22,7 +22,7 @@
 			#set($desc = $confController.getLink().getOffer().getDescription())
 			#if ($desc)
 				<tr class="$css b_access_desc">
-					<td colspan="5">$desc</td>
+					<td colspan="5">$r.escapeHtml($desc)</td>
 				</tr>
 			#end
 		#end
diff --git a/src/main/java/org/olat/search/service/document/file/PdfDocument.java b/src/main/java/org/olat/search/service/document/file/PdfDocument.java
index 436baaf0dec..311b7dde3d6 100644
--- a/src/main/java/org/olat/search/service/document/file/PdfDocument.java
+++ b/src/main/java/org/olat/search/service/document/file/PdfDocument.java
@@ -98,6 +98,10 @@ public class PdfDocument extends FileDocument {
 			String bean = externalIndexer ? "pdfExternalIndexer" : "pdfInternalIndexer";
 			PdfExtractor extractor = (PdfExtractor)CoreSpringFactory.getBean(bean);
 			
+			if("xss-content.pdf".equals(leaf.getName())) {
+				System.out.println();
+			}
+			
 			File pdfTextFile = new File(pdfTextBufferPath, getFilePath() + ".tmp");
 			if (isNewPdfFile(leaf, pdfTextFile)) {
 				//prepare dirs
diff --git a/src/main/java/org/olat/search/ui/_content/standardResult.html b/src/main/java/org/olat/search/ui/_content/standardResult.html
index e864394bbaa..4b2a5a91e6f 100644
--- a/src/main/java/org/olat/search/ui/_content/standardResult.html
+++ b/src/main/java/org/olat/search/ui/_content/standardResult.html
@@ -27,7 +27,7 @@
     <div class="o_search_result_details" style="display: none" id="o_search_result_$id">
 		#if (!$author.equals("") ) 
 			<div class="o_search_result_author">
-		    	<strong>$r.translate("label.search.author"):</strong> $author.
+		    	<strong>$r.translate("label.search.author"):</strong> $r.escapeHtml($author).
 			</div>
 		#end
 		#if ($result.lastChange )
diff --git a/src/main/java/org/olat/user/DisplayPortraitController.java b/src/main/java/org/olat/user/DisplayPortraitController.java
index 3c334bd09b3..48041ce78aa 100644
--- a/src/main/java/org/olat/user/DisplayPortraitController.java
+++ b/src/main/java/org/olat/user/DisplayPortraitController.java
@@ -40,6 +40,7 @@ import org.olat.core.gui.media.MediaResource;
 import org.olat.core.id.Identity;
 import org.olat.core.id.UserConstants;
 import org.olat.core.logging.AssertException;
+import org.olat.core.util.StringHelper;
 import org.olat.user.propertyhandlers.GenderPropertyHandler;
 
 /**
@@ -143,8 +144,8 @@ public class DisplayPortraitController extends BasicController {
 		myContent.contextPut("hasPortrait", (portrait != null) ? Boolean.TRUE : Boolean.FALSE);
 		myContent.contextPut("identityKey", portraitIdent.getKey().toString());
 		myContent.contextPut("displayUserFullName", displayUserFullName);
-		myContent.contextPut("firstname", portraitIdent.getUser().getProperty(UserConstants.FIRSTNAME, null));
-		myContent.contextPut("lastname",portraitIdent.getUser().getProperty(UserConstants.LASTNAME, null));
+		myContent.contextPut("firstname", StringHelper.escapeHtml(portraitIdent.getUser().getProperty(UserConstants.FIRSTNAME, null)));
+		myContent.contextPut("lastname",StringHelper.escapeHtml(portraitIdent.getUser().getProperty(UserConstants.LASTNAME, null)));
 		
 		
 		putInitialPanel(myContent);
diff --git a/src/main/java/org/olat/user/HomePageDisplayController.java b/src/main/java/org/olat/user/HomePageDisplayController.java
index 15bdb7b9efb..5c200f4221e 100644
--- a/src/main/java/org/olat/user/HomePageDisplayController.java
+++ b/src/main/java/org/olat/user/HomePageDisplayController.java
@@ -42,6 +42,7 @@ import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.id.Identity;
 import org.olat.core.id.User;
 import org.olat.core.id.UserConstants;
+import org.olat.core.util.StringHelper;
 import org.olat.instantMessaging.ImPreferences;
 import org.olat.instantMessaging.InstantMessagingModule;
 import org.olat.instantMessaging.InstantMessagingService;
@@ -76,9 +77,11 @@ public class HomePageDisplayController extends BasicController {
 		// use property handler translator for translating of user fields
 		setTranslator(UserManager.getInstance().getPropertyHandlerTranslator(getTranslator()));
 		VelocityContainer mainVC = createVelocityContainer("homepagedisplay");
-
+		
+		String fullname = StringHelper.escapeHtml(userManager.getUserDisplayName(homeIdentity));
 		mainVC.contextPut("deleted", homeIdentity.getStatus().equals(Identity.STATUS_DELETED));
 		mainVC.contextPut("user", homeIdentity.getUser());
+		mainVC.contextPut("userFullname", fullname);
 		mainVC.contextPut("locale", getLocale());
 		
 		// add configured property handlers and the homepage config
@@ -104,8 +107,8 @@ public class HomePageDisplayController extends BasicController {
 			ImPreferences prefs = imService.getImPreferences(homeIdentity);
 			if(prefs.isVisibleToOthers()) {
 				User user = homeIdentity.getUser();
-				String fName = user.getProperty(UserConstants.FIRSTNAME, getLocale());
-				String lName = user.getProperty(UserConstants.LASTNAME, getLocale());
+				String fName = StringHelper.escapeHtml(user.getProperty(UserConstants.FIRSTNAME, getLocale()));
+				String lName = StringHelper.escapeHtml(user.getProperty(UserConstants.LASTNAME, getLocale()));
 				imLink = LinkFactory.createCustomLink("im.link", "im.link", "im.link", Link.NONTRANSLATED, mainVC, this);
 				imLink.setCustomDisplayText(translate("im.link", new String[] {fName,lName}));
 				Buddy buddy = imService.getBuddyById(homeIdentity.getKey());
diff --git a/src/main/java/org/olat/user/_content/homepagedisplay.html b/src/main/java/org/olat/user/_content/homepagedisplay.html
index 73ec16853e1..95a9dd5e7a0 100644
--- a/src/main/java/org/olat/user/_content/homepagedisplay.html
+++ b/src/main/java/org/olat/user/_content/homepagedisplay.html
@@ -1,5 +1,5 @@
 <div class="o_visitingcard b_clearfix"><div class="b_floatscrollbox">
-	<h4>$r.translate("menu.homepage") $user.getProperty("firstName", $locale) $user.getProperty("lastName", $locale)</h4>
+	<h4>$r.translate("menu.homepage") $userFullname</h4>
 	#if ($deleted) 
 		<p>
 			<i><strong>$r.translate("user.deleted")</strong></i>
diff --git a/src/main/java/org/olat/user/propertyhandlers/XingPropertyHandler.java b/src/main/java/org/olat/user/propertyhandlers/XingPropertyHandler.java
index 3cbff3505e9..e071d0c373d 100644
--- a/src/main/java/org/olat/user/propertyhandlers/XingPropertyHandler.java
+++ b/src/main/java/org/olat/user/propertyhandlers/XingPropertyHandler.java
@@ -85,9 +85,11 @@ public class XingPropertyHandler extends Generic127CharTextPropertyHandler {
 		// FXOLAT-343 ::  can't search by user-email on xing... just link to xing-homepage
 		String xingname = getUserProperty(user, locale);
 		if (StringHelper.containsNonWhitespace(xingname)) {
-			StringBuffer stringBuffer = new StringBuffer();
-			stringBuffer.append("<a href=\"http://www.xing.com\" target=\"_blank\">" + xingname + "</a>");
-			return stringBuffer.toString();
+			StringBuilder sb = new StringBuilder();
+			sb.append("<a href=\"http://www.xing.com\" target=\"_blank\">")
+			  .append(StringHelper.escapeHtml(xingname))
+			  .append("</a>");
+			return sb.toString();
 		} else {
 			return null;
 		}
diff --git a/src/main/webapp/static/js/tinymce4/tinymce/langs/fr.js b/src/main/webapp/static/js/tinymce4/tinymce/langs/fr.js
new file mode 100755
index 00000000000..b2978b868c6
--- /dev/null
+++ b/src/main/webapp/static/js/tinymce4/tinymce/langs/fr.js
@@ -0,0 +1,175 @@
+tinymce.addI18n('fr_FR',{
+"Cut": "Couper",
+"Header 2": "En-t\u00eate 2",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre navigateur ne supporte pas la copie directe. Merci d'utiliser les touches Ctrl+X\/C\/V.",
+"Div": "Div",
+"Paste": "Coller",
+"Close": "Fermer",
+"Pre": "Pre",
+"Align right": "Aligner \u00e0 droite",
+"New document": "Nouveau document",
+"Blockquote": "Citation",
+"Numbered list": "Num\u00e9rotation",
+"Increase indent": "Augmenter le retrait",
+"Formats": "Formats",
+"Headers": "En-t\u00eates",
+"Select all": "Tout s\u00e9lectionner",
+"Header 3": "En-t\u00eate 3",
+"Blocks": "Blocs",
+"Undo": "Annuler",
+"Strikethrough": "Barr\u00e9",
+"Bullet list": "Puces",
+"Header 1": "En-t\u00eate 1",
+"Superscript": "Exposant",
+"Clear formatting": "Effacer la mise en forme",
+"Subscript": "Indice",
+"Header 6": "En-t\u00eate 6",
+"Redo": "R\u00e9tablir",
+"Paragraph": "Paragraphe",
+"Ok": "Ok",
+"Bold": "Gras",
+"Code": "Code",
+"Italic": "Italique",
+"Align center": "Aligner au centre",
+"Header 5": "En-t\u00eate 5",
+"Decrease indent": "Diminuer le retrait",
+"Header 4": "En-t\u00eate 4",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.",
+"Underline": "Soulign\u00e9",
+"Cancel": "Annuler",
+"Justify": "Justifi\u00e9",
+"Inline": "en place",
+"Copy": "Copier",
+"Align left": "Aligner \u00e0 gauche",
+"Visual aids": "Aides visuelle",
+"Lower Greek": "Grec minuscule",
+"Square": "Carr\u00e9",
+"Default": "Par d\u00e9faut",
+"Lower Alpha": "Alpha inf\u00e9rieure",
+"Circle": "Cercle",
+"Disc": "Disque",
+"Upper Alpha": "Alpha majuscule",
+"Upper Roman": "Romain majuscule",
+"Lower Roman": "Romain minuscule",
+"Name": "Nom",
+"Anchor": "Ancre",
+"You have unsaved changes are you sure you want to navigate away?": "Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?",
+"Restore last draft": "Restaurer le dernier brouillon",
+"Special character": "Caract\u00e8res sp\u00e9ciaux",
+"Source code": "Code source",
+"Right to left": "Droite \u00e0 gauche",
+"Left to right": "Gauche \u00e0 droite",
+"Emoticons": "Emotic\u00f4nes",
+"Robots": "Robots",
+"Document properties": "Propri\u00e9t\u00e9 du document",
+"Title": "Titre",
+"Keywords": "Mots-cl\u00e9s",
+"Encoding": "Encodage",
+"Description": "Description",
+"Author": "Auteur",
+"Fullscreen": "Plein \u00e9cran",
+"Horizontal line": "Ligne horizontale",
+"Horizontal space": "Espacement horizontal",
+"Insert\/edit image": "Ins\u00e9rer\/\u00e9diter une image",
+"General": "G\u00e9n\u00e9ral",
+"Advanced": "Avanc\u00e9",
+"Source": "Source",
+"Border": "Bordure",
+"Constrain proportions": "Contraindre les proportions",
+"Vertical space": "Espacement vertical",
+"Image description": "Description de l'image",
+"Style": "Style",
+"Dimensions": "Dimensions",
+"Insert image": "Ins\u00e9rer une image",
+"Insert date\/time": "Ins\u00e9rer date\/heure",
+"Remove link": "Enlever le lien",
+"Url": "Url",
+"Text to display": "Texte \u00e0 afficher",
+"Anchors": "Ancre",
+"Insert link": "Ins\u00e9rer un lien",
+"New window": "Nouvelle fen\u00eatre",
+"None": "n\/a",
+"Target": "Cible",
+"Insert\/edit link": "Ins\u00e9rer\/\u00e9diter un lien",
+"Insert\/edit video": "Ins\u00e9rer\/\u00e9diter une vid\u00e9o",
+"Poster": "Afficher",
+"Alternative source": "Source alternative",
+"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :",
+"Insert video": "Ins\u00e9rer une vid\u00e9o",
+"Embed": "Int\u00e9grer",
+"Nonbreaking space": "Espace ins\u00e9cable",
+"Page break": "Saut de page",
+"Paste as text": "Coller comme texte",
+"Preview": "Pr\u00e9visualiser",
+"Print": "Imprimer",
+"Save": "Enregistrer",
+"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.",
+"Replace": "Remplacer",
+"Next": "Suiv",
+"Whole words": "Mots entiers",
+"Find and replace": "Trouver et remplacer",
+"Replace with": "Remplacer par",
+"Find": "Chercher",
+"Replace all": "Tout remplacer",
+"Match case": "Respecter la casse",
+"Prev": "Pr\u00e9c ",
+"Spellcheck": "V\u00e9rification orthographique",
+"Finish": "Finie",
+"Ignore all": "Tout ignorer",
+"Ignore": "Ignorer",
+"Insert row before": "Ins\u00e9rer une ligne avant",
+"Rows": "Lignes",
+"Height": "Hauteur",
+"Paste row after": "Coller la ligne apr\u00e8s",
+"Alignment": "Alignement",
+"Column group": "Groupe de colonnes",
+"Row": "Ligne",
+"Insert column before": "Ins\u00e9rer une colonne avant",
+"Split cell": "Diviser la cellule",
+"Cell padding": "Espacement interne cellule",
+"Cell spacing": "Espacement inter-cellulles",
+"Row type": "Type de ligne",
+"Insert table": "Ins\u00e9rer un tableau",
+"Body": "Corps",
+"Caption": "Titre",
+"Footer": "Pied",
+"Delete row": "Effacer la ligne",
+"Paste row before": "Coller la ligne avant",
+"Scope": "Etendue",
+"Delete table": "Supprimer le tableau",
+"Header cell": "Cellule d'en-t\u00eate",
+"Column": "Colonne",
+"Cell": "Cellule",
+"Header": "En-t\u00eate",
+"Cell type": "Type de cellule",
+"Copy row": "Copier la ligne",
+"Row properties": "Propri\u00e9t\u00e9s de la ligne",
+"Table properties": "Propri\u00e9t\u00e9s du tableau",
+"Row group": "Groupe de lignes",
+"Right": "Droite",
+"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s",
+"Cols": "Colonnes",
+"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s",
+"Width": "Largeur",
+"Cell properties": "Propri\u00e9t\u00e9s de la cellule",
+"Left": "Gauche",
+"Cut row": "Couper la ligne",
+"Delete column": "Effacer la colonne",
+"Center": "Centr\u00e9",
+"Merge cells": "Fusionner les cellules",
+"Insert template": "Ajouter un th\u00e8me",
+"Templates": "Th\u00e8mes",
+"Background color": "Couleur d'arri\u00e8re-plan",
+"Text color": "Couleur du texte",
+"Show blocks": "Afficher les blocs",
+"Show invisible characters": "Afficher les caract\u00e8res invisibles",
+"Words: {0}": "Mots : {0}",
+"Insert": "Ins\u00e9rer",
+"File": "Fichier",
+"Edit": "Editer",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.",
+"Tools": "Outils",
+"View": "Voir",
+"Table": "Tableau",
+"Format": "Format"
+});
\ No newline at end of file
diff --git a/src/test/java/org/olat/instantMessaging/RosterDAOTest.java b/src/test/java/org/olat/instantMessaging/RosterDAOTest.java
index d12fc1ce982..9ae23306357 100644
--- a/src/test/java/org/olat/instantMessaging/RosterDAOTest.java
+++ b/src/test/java/org/olat/instantMessaging/RosterDAOTest.java
@@ -144,30 +144,4 @@ public class RosterDAOTest extends OlatTestCase {
 		Assert.assertNotNull(reloadedEntries);
 		Assert.assertTrue(reloadedEntries.isEmpty());
 	}
-	
-	@Test
-	public void testClearRosterEntries() {
-		//create an entry
-		OLATResourceable chatResource = OresHelper.createOLATResourceableInstance("unit-test-4-" + UUID.randomUUID().toString(), System.currentTimeMillis());
-		for(int i=0; i<10; i++) {
-			Identity id = JunitTestHelper.createAndPersistIdentityAsAdmin("im-roster-4-" + UUID.randomUUID().toString());
-			rosterDao.createRosterEntry(chatResource, id, "My full name", "A nick name", false, false);
-		}
-		dbInstance.commitAndCloseSession();
-		
-		//check the presence of the entries
-		List<RosterEntryImpl> entries = rosterDao.getRoster(chatResource, 0, -1);
-		Assert.assertNotNull(entries);
-		Assert.assertEquals(10, entries.size());
-		dbInstance.commitAndCloseSession();
-		
-		//delete the entry
-		rosterDao.clear();
-		dbInstance.commitAndCloseSession();
-		
-		//check the absence of the entry
-		List<RosterEntryImpl> reloadedEntries = rosterDao.getRoster(chatResource, 0, -1);
-		Assert.assertNotNull(reloadedEntries);
-		Assert.assertTrue(reloadedEntries.isEmpty());
-	}
 }
-- 
GitLab