diff --git a/src/main/java/org/olat/modules/fo/ForumController.java b/src/main/java/org/olat/modules/fo/ForumController.java
index c95004b26646f752b296c368c61de7f50dce327e..b64cf4208e23874a24c5bdd91d27a2b0a49a0d78 100644
--- a/src/main/java/org/olat/modules/fo/ForumController.java
+++ b/src/main/java/org/olat/modules/fo/ForumController.java
@@ -220,7 +220,8 @@ public class ForumController extends BasicController implements GenericEventList
 	 * @param ureq
 	 * @param wControl
 	 */
-	ForumController(Forum forum, ForumCallback focallback, UserRequest ureq, WindowControl wControl) {
+	public ForumController(UserRequest ureq, WindowControl wControl,
+			Forum forum, ForumCallback focallback, boolean showSubscriptionButton) {
 		super(ureq, wControl);
 		this.forum = forum;
 		this.focallback = focallback;
@@ -267,8 +268,7 @@ public class ForumController extends BasicController implements GenericEventList
 		// --- subscription ---
 		subsContext = focallback.getSubscriptionContext();
 		// if sc is null, then no subscription is desired
-		if (subsContext != null) {
-			// FIXME fj: implement subscription callback for group forums
+		if (subsContext != null && showSubscriptionButton) {
 			String businessPath = wControl.getBusinessControl().getAsString();
 			String data = String.valueOf(forum.getKey());
 			PublisherData pdata = new PublisherData(OresHelper.calculateTypeName(Forum.class), data, businessPath);
diff --git a/src/main/java/org/olat/modules/fo/ForumUIFactory.java b/src/main/java/org/olat/modules/fo/ForumUIFactory.java
index 73aced5bd3699e386230334143ab223446a485e9..2a0dd63ddbf8d51a493f7d036268d0a173aeb489 100644
--- a/src/main/java/org/olat/modules/fo/ForumUIFactory.java
+++ b/src/main/java/org/olat/modules/fo/ForumUIFactory.java
@@ -81,7 +81,7 @@ public class ForumUIFactory {
 	 * @return a TitledWrapperController
 	 */
   public static Controller getTitledForumController(UserRequest ureq, WindowControl wControl, Forum forum, ForumCallback forumCallback, TitleInfo titleInfo) {			
-		ForumController popupFoCtr = new ForumController(forum, forumCallback, ureq, wControl);												
+		ForumController popupFoCtr = new ForumController(ureq, wControl, forum, forumCallback, true);												
 		TitledWrapperController forumWrapperController = new TitledWrapperController(ureq, wControl, popupFoCtr, "o_course_run", titleInfo);
 		// Set CSS values to default forum icons if no values are set in the title info
 		if (!StringHelper.containsNonWhitespace(titleInfo.getIconCssClass())) {
@@ -99,7 +99,7 @@ public class ForumUIFactory {
    * @return
    */
 	public static ForumController getStandardForumController(UserRequest ureq, WindowControl wControl, Forum forum,	ForumCallback forumCallback) {
-		return new ForumController(forum, forumCallback, ureq, wControl);												
+		return new ForumController(ureq, wControl, forum, forumCallback, true);												
 	}
   
 }
diff --git a/src/main/java/org/olat/modules/wiki/WikiEditArticleForm.java b/src/main/java/org/olat/modules/wiki/WikiEditArticleForm.java
index 34d3ba54d1bf84fa9dcfccaa5091be8f6b8b12ab..5c9c612ac178dd13367d71fe3313d35a115f1005 100644
--- a/src/main/java/org/olat/modules/wiki/WikiEditArticleForm.java
+++ b/src/main/java/org/olat/modules/wiki/WikiEditArticleForm.java
@@ -52,13 +52,12 @@ public class WikiEditArticleForm extends FormBasicController {
 
 	private TextElement wikiContent;
 	private TextElement updateComment;
-	private WikiPage page;
-	
 
+	private final WikiPage page;
 	private final WikiSecurityCallback securityCallback;
 	
-	public WikiEditArticleForm(UserRequest ureq, WindowControl wControl, WikiPage page,
-			WikiSecurityCallback securityCallback) {
+	public WikiEditArticleForm(UserRequest ureq, WindowControl wControl,
+			WikiPage page, WikiSecurityCallback securityCallback) {
 		super(ureq, wControl, FormBasicController.LAYOUT_VERTICAL);
 		this.page = page;
 		this.securityCallback = securityCallback;
@@ -97,7 +96,7 @@ public class WikiEditArticleForm extends FormBasicController {
 	}
 	
 	@Override
-	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event){	
+	protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) {
 		fireEvent (ureq, new Event(source.getName()));
 	}
 	
@@ -122,6 +121,9 @@ public class WikiEditArticleForm extends FormBasicController {
 			uifactory.addFormLink("delete.page", buttonLayout, Link.BUTTON);
 		}
 		uifactory.addFormLink("preview", buttonLayout, Link.BUTTON);
+		uifactory.addFormLink("media.upload", buttonLayout, Link.BUTTON);
+		uifactory.addFormLink("manage.media", buttonLayout, Link.BUTTON);
+
 		uifactory.addFormCancelButton("cancel", buttonLayout, ureq, getWindowControl());
 	}
 
@@ -129,5 +131,4 @@ public class WikiEditArticleForm extends FormBasicController {
 	protected void doDispose() {
 		//
 	}
-
 }
diff --git a/src/main/java/org/olat/modules/wiki/WikiFileUploadController.java b/src/main/java/org/olat/modules/wiki/WikiFileUploadController.java
new file mode 100644
index 0000000000000000000000000000000000000000..ee510144b7b0555601662612232f0cc232583761
--- /dev/null
+++ b/src/main/java/org/olat/modules/wiki/WikiFileUploadController.java
@@ -0,0 +1,72 @@
+/**
+ * <a href="http://www.openolat.org">
+ * OpenOLAT - Online Learning and Training</a><br>
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); <br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at the
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
+ * <p>
+ * Unless required by applicable law or agreed to in writing,<br>
+ * software distributed under the License is distributed on an "AS IS" BASIS, <br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
+ * See the License for the specific language governing permissions and <br>
+ * limitations under the License.
+ * <p>
+ * Initial code contributed and copyrighted by<br>
+ * frentix GmbH, http://www.frentix.com
+ * <p>
+ */
+package org.olat.modules.wiki;
+
+import org.olat.core.commons.modules.bc.FileUploadController;
+import org.olat.core.commons.modules.bc.FolderConfig;
+import org.olat.core.gui.UserRequest;
+import org.olat.core.gui.components.Component;
+import org.olat.core.gui.components.velocity.VelocityContainer;
+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.gui.control.controller.BasicController;
+import org.olat.core.util.vfs.Quota;
+import org.olat.core.util.vfs.VFSContainer;
+
+/**
+ * Only a wrapper to show some informations around the file upload controller.
+ * 
+ * 
+ * Initial date: 17.07.2015<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class WikiFileUploadController extends BasicController {
+	
+	private final FileUploadController fileUplCtr;
+	
+	public WikiFileUploadController(UserRequest ureq, WindowControl wControl, VFSContainer mediaFolder) {
+		super(ureq, wControl);
+		
+		VelocityContainer mainVC = this.createVelocityContainer("upload_file");
+		
+		fileUplCtr = new FileUploadController(getWindowControl(), mediaFolder, ureq,
+				(int)FolderConfig.getLimitULKB(), Quota.UNLIMITED, null, false, false, true, true, false);
+		listenTo(fileUplCtr);
+		mainVC.put("fileUpload", fileUplCtr.getInitialComponent());
+		putInitialPanel(mainVC);
+	}
+	
+	@Override
+	protected void doDispose() {
+		//
+	}
+
+	@Override
+	protected void event(UserRequest ureq, Component source, Event event) {
+		//
+	}
+
+	@Override
+	protected void event(UserRequest ureq, Controller source, Event event) {
+		fireEvent(ureq, event);
+	}
+}
diff --git a/src/main/java/org/olat/modules/wiki/WikiForumCallback.java b/src/main/java/org/olat/modules/wiki/WikiForumCallback.java
index e5cde6149592e5dc385f312d045a93f9bc92913e..e7309b6d071b878b86779435a34a4b7d35bdad5d 100644
--- a/src/main/java/org/olat/modules/wiki/WikiForumCallback.java
+++ b/src/main/java/org/olat/modules/wiki/WikiForumCallback.java
@@ -40,40 +40,46 @@ public class WikiForumCallback implements ForumCallback {
 
 	private boolean isGuestOnly;
 	private boolean isModerator;
-	
+	private SubscriptionContext context;
 
-	public WikiForumCallback(boolean isGuestOnly, boolean isModerator) {
+	public WikiForumCallback(boolean isGuestOnly, boolean isModerator, SubscriptionContext context) {
 		this.isGuestOnly = isGuestOnly;
-		this.isModerator = isModerator;		
+		this.isModerator = isModerator;
+		this.context = context;
 	}
-	
+
+	@Override
 	public boolean mayOpenNewThread() {
 		return !isGuestOnly ;
 	}
 
+	@Override
 	public boolean mayReplyMessage() {
 		return !isGuestOnly;
 	}
 
+	@Override
 	public boolean mayEditMessageAsModerator() {		
 		return !isGuestOnly && isModerator;
 	}
 
+	@Override
 	public boolean mayDeleteMessageAsModerator() {		
 		return !isGuestOnly && isModerator;
 	}
 
+	@Override
 	public boolean mayArchiveForum() {
 		return !isGuestOnly;
 	}
 
+	@Override
 	public boolean mayFilterForUser() {
 		return !isGuestOnly && isModerator;
 	}
 
+	@Override
 	public SubscriptionContext getSubscriptionContext() {
-		// TODO Auto-generated method stub
-		return null;
+		return context;
 	}
-
 }
diff --git a/src/main/java/org/olat/modules/wiki/WikiMainController.java b/src/main/java/org/olat/modules/wiki/WikiMainController.java
index 3edb4982faa81839e4d73b8e598694fe3331dd6f..6a36b585aa28a4d6385290845d319cff0d5d06ab 100644
--- a/src/main/java/org/olat/modules/wiki/WikiMainController.java
+++ b/src/main/java/org/olat/modules/wiki/WikiMainController.java
@@ -37,8 +37,6 @@ import java.util.Map;
 import java.util.Properties;
 
 import org.olat.core.CoreSpringFactory;
-import org.olat.core.commons.modules.bc.FileUploadController;
-import org.olat.core.commons.modules.bc.FolderConfig;
 import org.olat.core.commons.modules.bc.FolderEvent;
 import org.olat.core.commons.services.notifications.NotificationsManager;
 import org.olat.core.commons.services.notifications.PublisherData;
@@ -90,7 +88,6 @@ import org.olat.core.util.StringHelper;
 import org.olat.core.util.coordinate.CoordinatorManager;
 import org.olat.core.util.coordinate.LockResult;
 import org.olat.core.util.resource.OresHelper;
-import org.olat.core.util.vfs.Quota;
 import org.olat.core.util.vfs.VFSContainer;
 import org.olat.core.util.vfs.VFSItem;
 import org.olat.core.util.vfs.VFSLeaf;
@@ -99,7 +96,6 @@ import org.olat.modules.fo.Forum;
 import org.olat.modules.fo.ForumCallback;
 import org.olat.modules.fo.ForumController;
 import org.olat.modules.fo.ForumManager;
-import org.olat.modules.fo.ForumUIFactory;
 import org.olat.modules.wiki.gui.components.wikiToHtml.ErrorEvent;
 import org.olat.modules.wiki.gui.components.wikiToHtml.FilterUtil;
 import org.olat.modules.wiki.gui.components.wikiToHtml.RequestImageEvent;
@@ -143,13 +139,13 @@ public class WikiMainController extends BasicController implements CloneableCont
 	private WikiMarkupComponent wikiArticleComp, wikiVersionDisplayComp;
 	private ContextualSubscriptionController cSubscriptionCtrl;
 	private TableController versioningTableCtr;
+	private WikiFileUploadController wikiUploadFileCtr;
 	private HistoryTableDateModel versioningTableModel;
-	private FileUploadController fileUplCtr;
 	private DialogBoxController removePageDialogCtr, archiveWikiDialogCtr;
 	private List<ChangeInfo> diffs = new ArrayList<ChangeInfo>(2);
 	private SubscriptionContext subsContext;
 	private LockResult lockEntry;
-	private Link archiveLink, closePreviewButton, createLink, manageMediaButton, toMainPageLink,
+	private Link archiveLink, closePreviewButton, createLink, toMainPageLink,
 		a2zLink, changesLink, editMenuButton, revertVersionButton;
 	private TableController mediaTableCtr;
 	private MediaFilesTableModel mediaFilesTableModel;
@@ -167,7 +163,6 @@ public class WikiMainController extends BasicController implements CloneableCont
 	public static final String ACTION_SHOW = "view.version";
 	private static final String ACTION_EDIT_MENU = "editMenu";
 	private static final String ACTION_CLOSE_PREVIEW = "preview.close";
-	private static final String ACTION_MANAGE_MEDIA = "manage.media";
 	private static final String ACTION_DELETE_MEDIAS = "delete.medias";
 	private static final String ACTION_DELETE_MEDIA = "delete.media";
 	protected static final String ACTION_SHOW_MEDIA = "show.media";
@@ -310,7 +305,6 @@ public class WikiMainController extends BasicController implements CloneableCont
 		editContent = createVelocityContainer("edit");
 		imageDisplay = createVelocityContainer("imagedisplay");
 		closePreviewButton = LinkFactory.createButtonSmall(ACTION_CLOSE_PREVIEW, editContent, this);
-		manageMediaButton = LinkFactory.createButtonSmall(ACTION_MANAGE_MEDIA, editContent, this);
 		
 		editContent.contextPut("isGuest", Boolean.valueOf(ureq.getUserSession().getRoles().isGuestOnly()));
 		wikiEditForm = new WikiEditArticleForm(ureq, wControl, page, securityCallback);
@@ -321,11 +315,6 @@ public class WikiMainController extends BasicController implements CloneableCont
 		
 		JSAndCSSComponent js = new JSAndCSSComponent("js", new String[] { "js/openolat/wiki.js" }, null);
 		content.put("js", js);
-		// FIXME:gs:a FileUploadCtr should accept vfsContainers instead of
-		// OLATrootfolderimpl. Refactor it!!!!!!!
-		fileUplCtr = new FileUploadController(getWindowControl(), WikiManager.getInstance().getMediaFolder(ores), ureq, (int)FolderConfig.getLimitULKB(), Quota.UNLIMITED, null, false);
-		listenTo(fileUplCtr);
-		editContent.put("fileUplCtr", fileUplCtr.getInitialComponent());
 		editContent.contextPut("fileList", wiki.getMediaFileList());
 		editContent.contextPut("linkList", wiki.getListOfAllPageNames());
 		
@@ -430,14 +419,14 @@ public class WikiMainController extends BasicController implements CloneableCont
 		
 		ContextEntry ce = entries.get(0);
 		String typ = ce.getOLATResourceable().getResourceableTypeName();
-		if("az".equals(typ)) {
+		if("az".equalsIgnoreCase(typ)) {
 			openAtoZPage(ureq, wiki);
-		} else if ("lastChanges".equals(typ)) {
+		} else if ("lastChanges".equalsIgnoreCase(typ)) {
 			openLastChangesPage(ureq, wiki);
-		} else if ("index".equals(typ)) {
+		} else if ("index".equalsIgnoreCase(typ)) {
 			WikiPage page = openIndexPage(ureq, wiki);
 			pageId = page.getPageId();
-		} else if ("Forum".equals(typ)) {
+		} else if ("Forum".equalsIgnoreCase(typ)) {
 			Long forumKey = ce.getOLATResourceable().getResourceableId();
 			for(WikiPage page:wiki.getAllPagesWithContent()) {
 				if(forumKey.longValue() == page.getForumKey()) {
@@ -472,8 +461,14 @@ public class WikiMainController extends BasicController implements CloneableCont
 				if(entries.size() > 1) {
 					List<ContextEntry> subEntries = entries.subList(1, entries.size());
 					String subTyp = subEntries.get(0).getOLATResourceable().getResourceableTypeName();
-					if("tab".equals(subTyp)) {
+					if("tab".equalsIgnoreCase(subTyp)) {
 						tabs.activate(ureq, subEntries, ce.getTransientState());
+					} else if("message".equalsIgnoreCase(subTyp)) {
+						OLATResourceable tabOres = OresHelper.createOLATResourceableInstance("tab", 1l);
+						ContextEntry tabCe = BusinessControlFactory.getInstance().createContextEntry(tabOres);
+						tabs.activate(ureq, Collections.singletonList(tabCe), null);
+					
+						forumController.activate(ureq, subEntries, null);		
 					}
 				}
 			}
@@ -584,18 +579,6 @@ public class WikiMainController extends BasicController implements CloneableCont
 			//nothing to do
 		} else if (source == closePreviewButton){
 			editContent.remove(wikiVersionDisplayComp);
-		} else if (source == manageMediaButton){
-			if(wiki.getMediaFileListWithMetadata().size() > 0){
-				mediaMgntContent = createVelocityContainer("media");
-				refreshTableDataModel(ureq, wiki);
-				mediaMgntContent.put("mediaMgmtTable", mediaTableCtr.getInitialComponent());
-				
-				removeAsListenerAndDispose(cmc);
-				cmc = new CloseableModalController(getWindowControl(), translate("close"), mediaMgntContent, true, translate("manage.media"));
-				listenTo(cmc);
-				
-				cmc.activate();
-			}
 		} else if (source == revertVersionButton) {
 			wikiEditForm.setPage(selectedPage);
 			tabs.setSelectedPane(2);
@@ -661,15 +644,15 @@ public class WikiMainController extends BasicController implements CloneableCont
 				page.setForumKey(forum.getKey().longValue());
 				WikiManager.getInstance().updateWikiPageProperties(ores, page);
 			}
-			// TODO enhance forum callback with subscription stuff								
+			
 			boolean isModerator = securityCallback.mayModerateForum();				
-			ForumCallback forumCallback = new WikiForumCallback(ureq.getUserSession().getRoles().isGuestOnly(), isModerator);
+			ForumCallback forumCallback = new WikiForumCallback(ureq.getUserSession().getRoles().isGuestOnly(), isModerator, subsContext);
 			
 			ContextEntry ce = BusinessControlFactory.getInstance().createContextEntry(forum);
 			WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(ce, getWindowControl());
 			
 			removeAsListenerAndDispose(forumController);
-			forumController = ForumUIFactory.getStandardForumController(ureq, bwControl, forum, forumCallback);
+			forumController = new ForumController(ureq, bwControl, forum, forumCallback, false);
 			listenTo(forumController);
 			discussionContent.put("articleforum", forumController.getInitialComponent());
 		}
@@ -862,17 +845,14 @@ public class WikiMainController extends BasicController implements CloneableCont
 					versioningContent.contextPut("page", selectedPage);
 				}
 			}
-		} else if (source == fileUplCtr) {
-			/*************************************************************************
-			 * file upload controller events
-			 ************************************************************************/
-			if (event == Event.DONE_EVENT) {
-				fileUplCtr.reset();
-			} else if (event.getCommand().equals(FolderEvent.UPLOAD_EVENT)) {
+		} else if (source == wikiUploadFileCtr) {
+			if(event.getCommand().equals(FolderEvent.UPLOAD_EVENT)) {
 				FolderEvent fEvent = (FolderEvent)event;
 				createMediaMetadataFile(fEvent.getFilename(), ureq.getIdentity().getKey());
 				editContent.contextPut("fileList", wiki.getMediaFileList());
 			}
+			cmc.deactivate();
+			cleanUp();
 		} else if (source == removePageDialogCtr) {
 			if (DialogBoxUIFactory.isOkEvent(event)) {
 				wiki.removePage(page);
@@ -958,14 +938,20 @@ public class WikiMainController extends BasicController implements CloneableCont
 				String msg = translate("question", page.getPageName());
 				removePageDialogCtr = activateOkCancelDialog(ureq, null, msg, removePageDialogCtr);
 				return;
+			} else if(event.getCommand().equals("media.upload")) {
+				doUploadFiles(ureq);
+				return;
+			} else if(event.getCommand().equals("manage.media")) {
+				doManageMedias(ureq, wiki);
+				return;
 			}
 
 			boolean dirty = !wikiEditForm.getWikiContent().equals(page.getContent());	
 			if (wantPreview) {
-					WikiPage preview = new WikiPage("temp");
-					preview.setContent(wikiEditForm.getWikiContent());
-					wikiVersionDisplayComp.setWikiContent(preview.getContent());
-					editContent.put("versionDisplay", wikiVersionDisplayComp);
+				WikiPage preview = new WikiPage("temp");
+				preview.setContent(wikiEditForm.getWikiContent());
+				wikiVersionDisplayComp.setWikiContent(preview.getContent());
+				editContent.put("versionDisplay", wikiVersionDisplayComp);
 			}
 
 			if (wantSave && dirty) {
@@ -998,6 +984,14 @@ public class WikiMainController extends BasicController implements CloneableCont
 		}
 	}
 	
+	private void cleanUp() {
+		removeAsListenerAndDispose(cmc);
+		removeAsListenerAndDispose(wikiUploadFileCtr);
+
+		cmc = null;
+		wikiUploadFileCtr = null;
+	}
+	
 	private boolean isImage(String filename) {
 		String fileSuffix = filename.substring(filename.lastIndexOf(".")+1, filename.length()).toLowerCase();
 		if (fileSuffix.equals("jpg")) return true;
@@ -1069,6 +1063,34 @@ public class WikiMainController extends BasicController implements CloneableCont
 		}
 		tabs.setEnabled(3,enable);
 	}
+	
+	private void doUploadFiles(UserRequest ureq) {
+		removeAsListenerAndDispose(cmc);
+		removeAsListenerAndDispose(wikiUploadFileCtr);
+		
+		wikiUploadFileCtr = new WikiFileUploadController(ureq, getWindowControl(), WikiManager.getInstance().getMediaFolder(ores));
+		listenTo(wikiUploadFileCtr);
+		
+		String title = translate("media.upload");
+		cmc = new CloseableModalController(getWindowControl(), translate("close"), wikiUploadFileCtr.getInitialComponent(),
+				true, title, true);
+		listenTo(cmc);
+		cmc.activate();
+	}
+	
+	private void doManageMedias(UserRequest ureq, Wiki wiki) {
+		if(wiki.getMediaFileListWithMetadata().size() > 0){
+			mediaMgntContent = createVelocityContainer("media");
+			refreshTableDataModel(ureq, wiki);
+			mediaMgntContent.put("mediaMgmtTable", mediaTableCtr.getInitialComponent());
+			
+			removeAsListenerAndDispose(cmc);
+			cmc = new CloseableModalController(getWindowControl(), translate("close"), mediaMgntContent, true, translate("manage.media"));
+			listenTo(cmc);
+			
+			cmc.activate();
+		}
+	}
 
 	@Override
 	protected void doDispose() {
diff --git a/src/main/java/org/olat/modules/wiki/WikiPageChangeOrCreateNotificationHandler.java b/src/main/java/org/olat/modules/wiki/WikiPageChangeOrCreateNotificationHandler.java
index af48339018a29f4f08a7eaf282a4ad3d11a79920..e0225a5912c3dee7b904deb6612118e9064a06f1 100644
--- a/src/main/java/org/olat/modules/wiki/WikiPageChangeOrCreateNotificationHandler.java
+++ b/src/main/java/org/olat/modules/wiki/WikiPageChangeOrCreateNotificationHandler.java
@@ -45,7 +45,8 @@ import org.olat.core.gui.translator.Translator;
 import org.olat.core.id.Identity;
 import org.olat.core.id.OLATResourceable;
 import org.olat.core.id.context.BusinessControlFactory;
-import org.olat.core.logging.LogDelegator;
+import org.olat.core.logging.OLog;
+import org.olat.core.logging.Tracing;
 import org.olat.core.util.Util;
 import org.olat.core.util.resource.OresHelper;
 import org.olat.course.CourseFactory;
@@ -59,6 +60,9 @@ import org.olat.fileresource.types.WikiResource;
 import org.olat.group.BusinessGroup;
 import org.olat.group.BusinessGroupService;
 import org.olat.modules.ModuleConfiguration;
+import org.olat.modules.fo.ForumManager;
+import org.olat.modules.fo.ForumNotificationsHandler;
+import org.olat.modules.fo.Message;
 import org.olat.repository.RepositoryEntry;
 import org.olat.repository.RepositoryManager;
 
@@ -71,9 +75,11 @@ import org.olat.repository.RepositoryManager;
  * 
  * @author guido
  */
-public class WikiPageChangeOrCreateNotificationHandler extends LogDelegator implements NotificationsHandler {
+public class WikiPageChangeOrCreateNotificationHandler implements NotificationsHandler {
+	
+	private static final OLog log = Tracing.createLoggerFor(WikiPageChangeOrCreateNotificationHandler.class);
 
-	private static final String CSS_CLASS_WIKI_PAGE_CHANGED_ICON = "o_edit_icon";
+	private static final String CSS_CLASS_WIKI_PAGE_CHANGED_ICON = "o_wiki_icon";
 	protected String businessControlString;
 
 	public WikiPageChangeOrCreateNotificationHandler() {
@@ -84,14 +90,17 @@ public class WikiPageChangeOrCreateNotificationHandler extends LogDelegator impl
 	 * @see org.olat.core.commons.services.notifications.NotificationsHandler#createSubscriptionInfo(org.olat.core.commons.services.notifications.Subscriber,
 	 *      java.util.Locale, java.util.Date)
 	 */
+	@Override
 	public SubscriptionInfo createSubscriptionInfo(Subscriber subscriber, final Locale locale, Date compareDate) {
 		Publisher p = subscriber.getPublisher();
 
 		final Date latestNews = p.getLatestNewsDate();
 		Long resId = p.getResId();
 		SubscriptionInfo si;
+		final boolean debug = log.isDebug();
+		
 		// there could be news for me, investigate deeper
-		logDebug("compareDate=" + compareDate + " ; latestNews=" + latestNews, null);
+		if(debug) log.debug("compareDate=" + compareDate + " ; latestNews=" + latestNews, null);
 		try {
 			if (NotificationsManager.getInstance().isPublisherValid(p) && compareDate.before(latestNews)) {
 				OLATResourceable ores = null;
@@ -111,61 +120,88 @@ public class WikiPageChangeOrCreateNotificationHandler extends LogDelegator impl
 					ModuleConfiguration config = ((WikiCourseNode)courseNode).getModuleConfiguration();
 					RepositoryEntry re = WikiEditController.getWikiRepoReference(config, true);
 					resId = re.getOlatResource().getResourceableId();
-					logDebug("resId=" + resId, null);
+					if(debug)  log.debug("resId=" + resId, null);
 					ores = OresHelper.createOLATResourceableInstance(WikiResource.TYPE_NAME, resId);
 					businessControlString = p.getBusinessPath() + "[path=";
 				} else {
 					// resName = 'BusinessGroup' or 'FileResource.WIKI'
-					logDebug("p.getResName()=" + p.getResName(), null);
-				  ores = OresHelper.createOLATResourceableInstance(p.getResName(), resId);
+					if(debug) log.debug("p.getResName()=" + p.getResName(), null);
+					ores = OresHelper.createOLATResourceableInstance(p.getResName(), resId);
 					businessControlString = p.getBusinessPath() + "[path=";
 				}
 				
 				Wiki wiki = WikiManager.getInstance().getOrLoadWiki(ores);
 				final List<WikiPage> pages = wiki.getPagesByDate();
 				Translator translator = Util.createPackageTranslator(WikiPageChangeOrCreateNotificationHandler.class, locale);
+				Translator forumTranslator = Util.createPackageTranslator(ForumNotificationsHandler.class, locale);
 				
 				TitleItem title = getTitleItem(p, translator);
 				si = new SubscriptionInfo(subscriber.getKey(), p.getType(), title, null);
-					SubscriptionListItem subListItem;
-						for (Iterator<WikiPage> it = pages.listIterator(); it.hasNext();) {						
-							WikiPage element = it.next();
-							
-							// do only show entries newer then the ones already seen
-							Date modDate = new Date(element.getModificationTime());
-							logDebug("modDate=" + modDate + " ; compareDate=" + compareDate, null);
-							if (modDate.after(compareDate)) {
-								if((element.getPageName().startsWith("O_") || element.getPageName().startsWith(WikiPage.WIKI_MENU_PAGE)) &&
-										(element.getModifyAuthor() <= 0)) {
-										//theses pages are created sometimes automatically. Check if this is the case
-										continue;
-								}
+					
+				for (Iterator<WikiPage> it = pages.listIterator(); it.hasNext();) {						
+					WikiPage element = it.next();
+					
+					// do only show entries newer then the ones already seen
+					Date modDate = new Date(element.getModificationTime());
+					if(debug) log.debug("modDate=" + modDate + " ; compareDate=" + compareDate, null);
+					if (modDate.after(compareDate)) {
+						if((element.getPageName().startsWith("O_") || element.getPageName().startsWith(WikiPage.WIKI_MENU_PAGE))
+								&& (element.getModifyAuthor() <= 0)) {
+								//theses pages are created sometimes automatically. Check if this is the case
+								continue;
+						}
 
-								//build Businesscontrol-Path						
-								String businessPath = null;						
-								String urlToSend = null;
-								if(p.getBusinessPath() != null) {
-									businessPath = businessControlString + element.getPageName() + "]";		
-									urlToSend = BusinessControlFactory.getInstance().getURLFromBusinessPathString(businessPath);
-								}
-								
-								// string[] gets filled into translation key by adding {0...n} to
-								// the string
-								Identity ident = BaseSecurityManager.getInstance().loadIdentityByKey(Long.valueOf(element.getModifyAuthor()));
-								String desc = translator.translate("notifications.entry", new String[] { element.getPageName(), NotificationHelper.getFormatedName(ident)});							
-								subListItem = new SubscriptionListItem(desc, urlToSend, businessPath,  modDate, CSS_CLASS_WIKI_PAGE_CHANGED_ICON);
-								si.addSubscriptionListItem(subListItem);
-							} else {
-								//there are no more new pages so we stop here
-								break;
-							}
+						//build Businesscontrol-Path						
+						String businessPath = null;						
+						String urlToSend = null;
+						if(p.getBusinessPath() != null) {
+							businessPath = businessControlString + element.getPageName() + "]";		
+							urlToSend = BusinessControlFactory.getInstance().getURLFromBusinessPathString(businessPath);
+						}
+						
+						// string[] gets filled into translation key by adding {0...n} to
+						// the string
+						Identity ident = BaseSecurityManager.getInstance().loadIdentityByKey(Long.valueOf(element.getModifyAuthor()));
+						String desc = translator.translate("notifications.entry", new String[] { element.getPageName(), NotificationHelper.getFormatedName(ident)});							
+						SubscriptionListItem subListItem = new SubscriptionListItem(desc, urlToSend, businessPath,  modDate, CSS_CLASS_WIKI_PAGE_CHANGED_ICON);
+						si.addSubscriptionListItem(subListItem);
+					}
+					
+					long forumKey = element.getForumKey();
+					List<Message> mInfos = ForumManager.getInstance().getNewMessageInfo(forumKey, compareDate);
+					
+					for (Message mInfo : mInfos) {
+						String messageTitle = mInfo.getTitle();
+						Identity creator = mInfo.getCreator();
+						Identity modifier = mInfo.getModifier();
+						Date messageModDate = mInfo.getLastModified();
+						
+						String name;
+						if(modifier != null) {
+							name = NotificationHelper.getFormatedName(modifier);
+						} else {
+							name = NotificationHelper.getFormatedName(creator);
+						}
+						final String descKey = "notifications.entry" + (mInfo.getCreationDate().equals(messageModDate) ? "" : ".modified");
+						final String desc = forumTranslator.translate(descKey, new String[] { messageTitle, name });
+						String urlToSend = null;
+						String businessPath = null;
+						if(p.getBusinessPath() != null) {
+							businessPath = businessControlString  + element.getPageName() + "][message:" + mInfo.getKey().toString() + "]";
+							urlToSend = BusinessControlFactory.getInstance().getURLFromBusinessPathString(businessPath);
 						}
+						
+						SubscriptionListItem subListItem =
+								new SubscriptionListItem(desc, urlToSend, businessPath, messageModDate, CSS_CLASS_WIKI_PAGE_CHANGED_ICON);
+						si.addSubscriptionListItem(subListItem);
+					}
+				}
 			} else {
 				//no news
 				si = NotificationsManager.getInstance().getNoSubscriptionInfo();
 			}
 		} catch (Exception e) {
-			logError("Error creating wiki's notifications for subscriber: " + subscriber.getKey(), e);
+			log.error("Error creating wiki's notifications for subscriber: " + subscriber.getKey(), e);
 			checkPublisher(p);
 			si = NotificationsManager.getInstance().getNoSubscriptionInfo();
 		}
@@ -177,22 +213,22 @@ public class WikiPageChangeOrCreateNotificationHandler extends LogDelegator impl
 			if("BusinessGroup".equals(p.getResName())) {
 				BusinessGroup bg = CoreSpringFactory.getImpl(BusinessGroupService.class).loadBusinessGroup(p.getResId());
 				if(bg == null) {
-					logInfo("deactivating publisher with key; " + p.getKey(), null);
+					log.info("deactivating publisher with key; " + p.getKey(), null);
 					NotificationsManager.getInstance().deactivate(p);
 				}
 			} else if ("CourseModule".equals(p.getResName())) {
 				if(!NotificationsUpgradeHelper.checkCourse(p)) {
-					logInfo("deactivating publisher with key; " + p.getKey(), null);
+					log.info("deactivating publisher with key; " + p.getKey(), null);
 					NotificationsManager.getInstance().deactivate(p);
 				}
 			} else {
 				if(!NotificationsUpgradeHelper.checkOLATResourceable(p)) {
-					logInfo("deactivating publisher with key; " + p.getKey(), null);
+					log.info("deactivating publisher with key; " + p.getKey(), null);
 					NotificationsManager.getInstance().deactivate(p);
 				}
 			}
 		} catch (Exception e) {
-			logError("", e);
+			log.error("", e);
 		}
 	}
 	
@@ -220,7 +256,7 @@ public class WikiPageChangeOrCreateNotificationHandler extends LogDelegator impl
 			TitleItem title = getTitleItem(subscriber.getPublisher(), translator);
 			return title.getInfoContent("text/plain");
 		} catch (Exception e) {
-			logError("Error while creating assessment notifications for subscriber: " + subscriber.getKey(), e);
+			log.error("Error while creating assessment notifications for subscriber: " + subscriber.getKey(), e);
 			checkPublisher(subscriber.getPublisher());
 			return "-";
 		}
diff --git a/src/main/java/org/olat/modules/wiki/_content/edit.html b/src/main/java/org/olat/modules/wiki/_content/edit.html
index 5dc1aea6a016786d06f8303ac0ddb5965aa2396c..caa4bd39949e1397a6df50b5641e7fafb6f8fd9d 100644
--- a/src/main/java/org/olat/modules/wiki/_content/edit.html
+++ b/src/main/java/org/olat/modules/wiki/_content/edit.html
@@ -73,20 +73,6 @@
 	<div class="o_wikimod_editform_wrapper">
 		$r.render('editForm')
 	</div>
-	
-	#o_togglebox_start("o_wikimod_uploader" $r.translate("media.upload"))
-		<span class='xsmall'>
-			$r.translate('upload.example')
-		</span>
-		$r.render('fileUplCtr')
-		<br />
-		<span class='emphasis'>
-			$r.translate('media.insert.hint')
-		</span>
-		<br /><br />
-		$r.render('manage.media')
-		<br />
-	#o_togglebox_end()
 #end
 
 #if (!$r.available("versionDisplay"))
diff --git a/src/main/java/org/olat/modules/wiki/_content/upload_file.html b/src/main/java/org/olat/modules/wiki/_content/upload_file.html
new file mode 100644
index 0000000000000000000000000000000000000000..6effb2ba01f0ff0e869fbd2f1754fec5ced5a06b
--- /dev/null
+++ b/src/main/java/org/olat/modules/wiki/_content/upload_file.html
@@ -0,0 +1,2 @@
+<div class="o_info">$r.translate('upload.example')<br/>$r.translate('media.insert.hint')</div>
+$r.render("fileUpload")
\ No newline at end of file
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_ar.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_ar.properties
index 888fc95a752e445489aa6faab66f19cc450b342b..c06c35b151f63e69b669e98d70ae53678c862efd 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_ar.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_ar.properties
@@ -51,7 +51,7 @@ link.insert=\u0625\u062F\u0631\u0627\u062C \u0631\u0627\u0628\u0637
 manage.media=\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u0645\u0648\u062C\u0648\u062F\u0629
 media.insert=\u0625\u062F\u0631\u0627\u062C \u0645\u0644\u0641
 media.insert.hint=(\u0623\u0639\u0644\u0649 \u0627\u0644\u064A\u0645\u064A\u0646) <b>\u0625\u062F\u0631\u0627\u062C \u0645\u0644\u0641</b> \u0625\u062F\u0631\u0627\u062C \u0645\u0644\u0641 \u0645\u0648\u062C\u0648\u062F \u062F\u0627\u062E\u0644 \u0627\u0644\u0648\u064A\u0643\u0649 \u0645\u0646 \u062E\u0644\u0627\u0644
-media.upload=...<b> \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0644\u0641 </b>
+media.upload=\u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0644\u0641
 nav.a-z.desc=\=\=\=\= \u0635\u0641\u062D\u0627\u062A \u0627\u0644\u0648\u064A\u0643\u0649 \u0645\u0631\u062A\u0628\u0629 \u0623\u0628\u062C\u062F\u064A\u0627 \=\=\=\=
 nav.changes.desc=\=\=\=\= \u0642\u0627\u0626\u0645\u0629 \u0628\u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0627\u0644\u0623\u062E\u064A\u0631\u0629 \=\=\=\=
 navigation.a-z=A-Z \u0645\u0646
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_bg.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_bg.properties
index 5a75a672d9ee6d6bdad7661a8324bf7d1db3b833..32323c15abd34d5d449f6599b0c19102e1f0beaa 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_bg.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_bg.properties
@@ -51,7 +51,7 @@ link.insert=\u0414\u043E\u0431\u0430\u0432\u0435\u0442\u0435 \u0432\u0440\u044A\
 manage.media=\u041C\u0435\u043D\u0430\u0436\u0438\u0440\u0430\u0439\u0442\u0435 \u0441\u044A\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430\u0449\u0438 \u0444\u0430\u0439\u043B\u043E\u0432\u0435
 media.insert=\u0414\u043E\u0431\u0430\u0432\u0435\u0442\u0435 \u0444\u0430\u0439\u043B
 media.insert.hint=\u0414\u043E\u0431\u0430\u0432\u0435\u0442\u0435 \u0441\u044A\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430\u0449 \u0444\u0430\u0439\u043B \u0432 \u0423\u0438\u043A\u0438 \u0441 \u043F\u043E\u043C\u043E\u0449\u0430 \u043D\u0430 <b>\u0414\u043E\u0431\u0430\u0432\u0435\u0442\u0435 \u0444\u0430\u0439\u043B</b> (\u0433\u043E\u0440\u0435 \u0432\u0434\u044F\u0441\u043D\u043E). 
-media.upload=<b>\u041A\u0430\u0447\u0435\u0442\u0435 \u0444\u0430\u0439\u043B</b>...
+media.upload=\u041A\u0430\u0447\u0435\u0442\u0435 \u0444\u0430\u0439\u043B
 nav.a-z.desc=\=\=\=\=\u0423\u0438\u043A\u0438 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0438 \u0432 \u0430\u0437\u0431\u0443\u0447\u0435\u043D \u0440\u0435\u0434\=\=\=\=
 nav.changes.desc=\=\=\=\=\u0421\u043F\u0438\u0441\u044A\u043A \u043D\u0430 \u043D\u0435\u043E\u0442\u0434\u0430\u0432\u043D\u044A\u0448\u043D\u0438 \u043F\u0440\u043E\u043C\u0435\u043D\u0438\=\=\=\=
 navigation.a-z=\u041E\u0442 \u0410-\u042F
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_cs.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_cs.properties
index 913f8fbaa699c1f4ae2fdcdeda570b2cc0081365..8c4535c9af4a16151671fd0a6dcc3a6ecdbdd481 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_cs.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_cs.properties
@@ -51,7 +51,7 @@ link.insert=Vlo\u017Eit odkaz
 manage.media=Spravovat existuj\u00EDc\u00ED soubory
 media.insert=Vlo\u017Eit medium
 media.insert.hint=Vlo\u017Eit existuj\u00EDc\u00ED soubor do Wiki <b>Vlo\u017Eit soubor</b> (naho\u0159e vpravo). 
-media.upload=<b>Nahr\u00E1t soubor</b> vlo\u017Eit odkaz do Wiki ve smyslu\:
+media.upload=Nahr\u00E1t soubor vlo\u017Eit odkaz do Wiki ve smyslu\:
 nav.a-z.desc=\=\=\=\=V\u0161echny str\u00E1nky ve Wiki od A do Z\=\=\=\=\n\n\n
 nav.changes.desc=\=\=\=\=Seznam sou\u010Dasn\u00FDch zm\u011Bn ve Wiki\=\=\=\=\n\n\n
 navigation.a-z=Od A-Z
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_de.properties
index 9e505a7c3bd56a83cdc06c63ff0d5ac14638a5fd..8e53fb6feb0b25f6f09d61a305cf4ed355ee6cfc 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_de.properties
@@ -51,7 +51,7 @@ link.insert=Link einf\u00FCgen
 manage.media=Bestehende Dateien verwalten
 media.insert=Datei einf\u00FCgen
 media.insert.hint=Bestehende Datei in Wiki einf\u00FCgen mittels <b>Datei einf\u00FCgen</b> (rechts oben). 
-media.upload=<b>Datei hochladen</b>...
+media.upload=Datei hochladen
 nav.a-z.desc=\=\=\=\=Wiki-Seiten alphabetisch geordnet\=\=\=\=\n\n\n
 nav.changes.desc=\=\=\=\=Liste der zuletzt ge\u00E4nderten Seiten\=\=\=\=\n\n\n
 navigation.a-z=Von A-Z
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_el.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_el.properties
index 1e548d67dc0e7671e07dd3daeb63883f14f45d1f..1591eb77991ec0ff1c396e25329c02107f0c3d47 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_el.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_el.properties
@@ -51,7 +51,7 @@ link.insert=\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03C3\u03C5\u03BD\
 manage.media=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03C5\u03C0\u03B1\u03C1\u03C7\u03CC\u03BD\u03C4\u03C9\u03BD \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD
 media.insert=\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5
 media.insert.hint=\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03C5\u03C0\u03AC\u03C1\u03C7\u03BF\u03BD\u03C4\u03BF\u03C2 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03C3\u03C4\u03BF Wiki \u03BC\u03B5 \u03C4\u03B7 \u03B2\u03BF\u03AE\u03B8\u03B5\u03B9\u03B1 \u03C4\u03BF\u03C5 <b>\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5</b> (\u03C0\u03AC\u03BD\u03C9 \u03B4\u03B5\u03BE\u03B9\u03AC). 
-media.upload=<b>\u0391\u03BD\u03AD\u03B2\u03B1\u03C3\u03BC\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5</b>...
+media.upload=\u0391\u03BD\u03AD\u03B2\u03B1\u03C3\u03BC\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5
 nav.a-z.desc=\=\=\=\=\u03A3\u03B5\u03BB\u03AF\u03B4\u03B5\u03C2 Wiki \u03BC\u03B5 \u03B1\u03BB\u03C6\u03B1\u03B2\u03B7\u03C4\u03B9\u03BA\u03AE \u03C3\u03B5\u03B9\u03C1\u03AC\=\=\=\=\n\n\n
 nav.changes.desc=\=\=\=\=\u039B\u03AF\u03C3\u03C4\u03B1 \u03C0\u03C1\u03CC\u03C3\u03C6\u03B1\u03C4\u03C9\u03BD \u03B1\u03BB\u03BB\u03B1\u03B3\u03CE\u03BD\=\=\=\=\n\n\n
 navigation.a-z=\u0391\u03C0\u03CC \u0391-\u03A9
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_en.properties
index 4ce5c0caed64c776a9f74e4cc64e9f71e682223c..cebc3ec1809fec4f30f5f8174bd6deb513843ac3 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_en.properties
@@ -51,7 +51,7 @@ link.insert=Insert link
 manage.media=Manage existing files
 media.insert=Insert file
 media.insert.hint=Insert existing file into Wiki by means of <b>Insert file</b> (top right). 
-media.upload=<b>Upload file</b>...
+media.upload=Upload file
 nav.a-z.desc=\=\=\=\=Wiki pages in alphabetic order\=\=\=\=\n\n\n
 nav.changes.desc=\=\=\=\=List of recent changes\=\=\=\=\n\n\n
 navigation.a-z=From A-Z
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_es.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_es.properties
index 315d8f33413c119a531f6661f204c5a524963389..c1170a998d174a91e6c0e8da00e54748277101e1 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_es.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_es.properties
@@ -51,7 +51,7 @@ link.insert=Insertar enlace
 manage.media=Manejar archivos existente
 media.insert=Insertar archivo
 media.insert.hint=Puedes a\u00F1adir un archivo en el Wiki con <b>Insertar archivo</b> (encimo a la derecha). 
-media.upload=<b>Subir archivo</b>...
+media.upload=Subir archivo
 nav.a-z.desc=\=\=\=\=Todo los p\u00E1ginas Wiki de A a Z\=\=\=\=\n\n\n
 nav.changes.desc=\=\=\=\=Lists de cambios recientes en el Wiki\=\=\=\=\n\n\n
 navigation.a-z=De A-Z
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_fr.properties
index a6debd54426f18935b7f4a9542047fc1b1125ed6..3b8c901ab11ef0cb9e1e86a87b2555455d4c011e 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_fr.properties
@@ -51,7 +51,7 @@ link.insert=Ins\u00E9rer lien
 manage.media=G\u00E9rer des fichiers existants
 media.insert=Ins\u00E9rer fichier
 media.insert.hint=Ins\u00E9rer fichier existant dans Wiki \u00E0 l'aide de <b>Ins\u00E9rer fichier</b> (en haut \u00E0 droite). 
-media.upload=T\u00E9l\u00E9charger fichier ...
+media.upload=T\u00E9l\u00E9charger un fichier
 nav.a-z.desc=\=\=\=les pages wiki de A \u00E0 Z\=\=\=\=\n\n\n
 nav.changes.desc=\=\=\=\=Liste des pages modifi\u00E9es derni\u00E8rement en wiki\=\=\=\=\n\n\n
 navigation.a-z=De A \u00E0 Z
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_it.properties
index d6bf30750a3e5a56761281ef77a9298ad7ffd727..8cc5a365b777a3a19e8b22bc4419fb33da10449b 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_it.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_it.properties
@@ -51,7 +51,7 @@ link.insert=Inserire link
 manage.media=Gestisci file esistenti
 media.insert=Inserire file
 media.insert.hint=Inserire il file esistente nel wiki mediante <b>Inserire file</b> (in alto a destra).
-media.upload=<b>Caricare il file</b>...
+media.upload=Caricare il file
 nav.a-z.desc=\=\=\=\=Tutte le pagine del wiki in ordine alfabetico\=\=\=\=\n\n\n
 nav.changes.desc=\=\=\=\=Lista delle pagine modificate ultimamente\=\=\=\=\n\n\n
 navigation.a-z=Da A-Z
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_jp.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_jp.properties
index 59b6101792706582cf7bf748a3f2c04e6f10fe8a..0fbd009ae36c14fabd2bff5f317e49ea4a14385b 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_jp.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_jp.properties
@@ -49,7 +49,7 @@ link.insert=\u30EA\u30F3\u30AF\u3092\u633F\u5165\u3059\u308B
 manage.media=\u65E2\u5B58\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u7BA1\u7406\u3059\u308B
 media.insert=\u30D5\u30A1\u30A4\u30EB\u3092\u633F\u5165\u3059\u308B
 media.insert.hint=<b>\u30D5\u30A1\u30A4\u30EB\u3092\u633F\u5165\u3059\u308B</b> (\u30DA\u30FC\u30B8\u53F3\u4E0A)\u3000\u3092\u4F7F\u3063\u3066\u3001\u65E2\u5B58\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u633F\u5165\u3057\u307E\u3059\u3002 
-media.upload=<b>\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B</b>...
+media.upload=\u30D5\u30A1\u30A4\u30EB\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B
 nav.a-z.desc=\=\=\=\=Wiki\u30DA\u30FC\u30B8 - \u30A2\u30EB\u30D5\u30A1\u30D9\u30C3\u30C8\u9806\=\=\=\=
 nav.changes.desc=\=\=\=\= \u6700\u8FD1\u306E\u5909\u66F4\u4E00\u89A7 \=\=\=\=
 navigation.a-z=A-Z
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_nl_NL.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_nl_NL.properties
index 474ed879e8e85a413df24b3710573dbba0967ab5..7a09a0c45d34298b854da9b0248359c0d9b4a5e5 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_nl_NL.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_nl_NL.properties
@@ -51,7 +51,7 @@ link.insert=Link invoegen
 manage.media=Bestaande bestanden beheren
 media.insert=Bestand invoegen
 media.insert.hint=Bestaand bestand in Wiki ingeven doormiddel van <b>Bestand invoegen</b> (rechtsboven).
-media.upload=<b>Bestand uploaden</b>...
+media.upload=Bestand uploaden
 nav.a-z.desc=\=\=\=\=Wiki pagina's in alfabetische volgorde\=\=\=\=
 nav.changes.desc=\=\=\=\=Lijst van recente veranderingen\=\=\=\=
 navigation.a-z=Van A-Z
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pl.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pl.properties
index 104a87476598c64fbd734a00cd9b8190e45ef548..13b3860da36f3d7ae994f166a0f736989e9a6939 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pl.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pl.properties
@@ -51,7 +51,7 @@ link.insert=Dodaj link
 manage.media=Zarz\u0105dzaj plikami
 media.insert=Dodaj plik
 media.insert.hint=Wstaw istniej\u0105cy plik do Wiki za pomoc\u0105 <b>Wstaw plik</b> (po prawej u g\u00F3ry). 
-media.upload=<b>Prze\u015Blij plik</b>... 
+media.upload=Prze\u015Blij plik
 nav.a-z.desc=\=\=\=\=Artyku\u0142y Wiki w porz\u0105dku alfabetycznym\=\=\=\=\n\n\n
 nav.changes.desc=\=\=\=\=Lista ostatnich zmian\=\=\=\=\n\n\n
 navigation.a-z=Spis A-Z
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_BR.properties
index 3a716186b614228c373ede18aaf88b2bf9a2d952..c5a63a62a7447497e9b26c01d9a8caea18699ca4 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_BR.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_BR.properties
@@ -51,7 +51,7 @@ link.insert=Inserir link
 manage.media=Administrar arquivos
 media.insert=Inserir m\u00EDdia
 media.insert.hint=Inserir arquivo existente no Wiki por meio de  <b>Inserir arquivo</b> (topo direito). 
-media.upload=<b>Carregar arquivo</b> e linkar ao Wiki por meio de\:
+media.upload=Carregar arquivo
 nav.a-z.desc=\=\=\=\=Todas as p\u00E1ginas no Wiki de A a Z\=\=\=\=\n\n\n
 nav.changes.desc=\=\=\=\=Lista de mudan\u00E7as recentes no Wiki\=\=\=\=\n\n\n
 navigation.a-z=De A a Z
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_PT.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_PT.properties
index 03438c268d99878d41af26e540b0f73dd7a98862..10ce34b7a417e6233b0c84f573510c45f9c1a1a2 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_PT.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_pt_PT.properties
@@ -50,7 +50,7 @@ link.insert=Inserir link
 manage.media=Administrar arquivos
 media.insert=Inserir m\u00EDdia
 media.insert.hint=Inserir arquivo existente no Wiki por meio de  <b>Inserir arquivo</b> (topo direito). 
-media.upload=<b>Carregar arquivo</b> e linkar ao Wiki por meio de\:
+media.upload=Carregar arquivo
 nav.a-z.desc=\=\=\=\=Todas as p\u00E1ginas no Wiki de A a Z\=\=\=\=\n\n\n
 nav.changes.desc=\=\=\=\=Lista de mudan\u00E7as recentes no Wiki\=\=\=\=\n\n\n
 navigation.a-z=De A a Z
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_ru.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_ru.properties
index 80ff7e535310f2c3bfbe30c582520fcce40ea31c..c39dd4908b0123af85dfb8c4e47485fef1f5d52c 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_ru.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_ru.properties
@@ -48,7 +48,7 @@ link.insert=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0441\u0441\u044B\
 manage.media=\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0435 \u0444\u0430\u0439\u043B\u044B 
 media.insert=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0444\u0430\u0439\u043B
 media.insert.hint=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0432 \u0412\u0438\u043A\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0449\u0438\u0439 \u0444\u0430\u0439\u043B \u0441 \u043F\u043E\u043C\u043E\u0449\u044C\u044E <b>\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0444\u0430\u0439\u043B</b> (\u0432\u0432\u0435\u0440\u0445\u0443 \u0441\u043F\u0440\u0430\u0432\u0430). 
-media.upload=<b>\u041F\u0435\u0440\u0435\u0441\u043B\u0430\u0442\u044C \u0444\u0430\u0439\u043B</b>... 
+media.upload=\u041F\u0435\u0440\u0435\u0441\u043B\u0430\u0442\u044C \u0444\u0430\u0439\u043B 
 nav.a-z.desc=\=\=\=\=\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u044B \u0412\u0438\u043A\u0438 \u0432 \u0430\u043B\u0444\u0430\u0432\u0438\u0442\u043D\u043E\u043C \u043F\u043E\u0440\u044F\u0434\u043A\u0435\=\=\=\=\n\n\n
 nav.changes.desc=\=\=\=\=\u0421\u043F\u0438\u0441\u043E\u043A \u0441\u0442\u0440\u0430\u043D\u0438\u0446 \u0441 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u043C\u0438 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F\u043C\u0438\=\=\=\=\n\n\n
 navigation.a-z=\u0410 \u2014 \u042F
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_sq.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_sq.properties
index 43581707ec0f4ed8f5308aeb5e4182c1fd10ac54..976885421f06c9c66cec8153b2cbe43f413e6a19 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_sq.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_sq.properties
@@ -49,7 +49,7 @@ historic.version=P\u00EBrmbajtja e versionit \#{0}
 link.insert=Nd\u00EBrfut vjeg\u00EBz
 manage.media=Drejto skedar\u00EBt
 media.insert=Nd\u00EBrfut skedar
-media.upload=<b>Ngarko skedar</b> dhe nj\u00EB vjeg\u00EBz te Wiki me an\u00EB t\u00EB\:
+media.upload=Ngarko skedar
 nav.a-z.desc=\=\=\=\=Wiki faqet n\u00EB renditjen alfabetike\=\=\=\=\n\n\n
 nav.changes.desc=\=\=\=\=Lista e ndryshimeve t\u00EB fundit\=\=\=\=\n\n\n
 navigation.a-z=Prej A-Zh
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_zh_CN.properties
index 8d6b29d2e94ec0963df24a0e91a0bf103631e781..398b8eebb31a8b937ed21ac51f61bbaf7584f34b 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_zh_CN.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_zh_CN.properties
@@ -51,7 +51,7 @@ link.insert=\u63D2\u5165\u94FE\u63A5
 manage.media=\u7BA1\u7406\u73B0\u6709\u7684\u6587\u4EF6
 media.insert=\u63D2\u5165\u5A92\u4F53
 media.insert.hint=\u901A\u8FC7<b>\u63D2\u5165\u6587\u4EF6</b>\u7684\u65B9\u5F0F\uFF0C\u63D2\u5165\u73B0\u6709\u7684\u6587\u4EF6\u5230\u7EF4\u57FA\u7684\u53F3\u4E0A\u89D2\u3002
-media.upload=<b>\u4E0A\u4F20\u6587\u4EF6</b>...
+media.upload=\u4E0A\u4F20\u6587\u4EF6
 nav.a-z.desc=\=\=\=\=\u6309\u5B57\u6BCD\u987A\u5E8F\u6392\u5217\u7684\u7EF4\u57FA\u8BCD\u6761\=\=\=\=
 nav.changes.desc=\=\=\=\=\u8FD1\u671F\u7EF4\u57FA\u8BCD\u6761\u7684\u66F4\u65B0\u5217\u8868\=\=\=\=
 navigation.a-z=A\u5230Z
diff --git a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_zh_TW.properties b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_zh_TW.properties
index 691820e3cfa5c6b89e08ffffa18a637717c962d4..e503dc1adff23c7976f15e6b8a69ce7e7da6708f 100644
--- a/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_zh_TW.properties
+++ b/src/main/java/org/olat/modules/wiki/_i18n/LocalStrings_zh_TW.properties
@@ -51,7 +51,7 @@ link.insert=\u63D2\u5165\u9023\u7D50
 manage.media=\u7BA1\u7406\u73FE\u6709\u7684\u6A94\u6848
 media.insert=\u63D2\u5165\u6A94\u6848
 media.insert.hint=\u63D2\u5165\u73FE\u6709\u7684\u6A94\u6848\u5230 Wiki \u5229\u7528 <b>\u63D2\u5165\u6A94\u6848</b> (\u53F3\u4E0A\u89D2)\u3002 
-media.upload=<b>\u4E0A\u50B3\u6A94\u6848</b>...
+media.upload=\u4E0A\u50B3\u6A94\u6848
 nav.a-z.desc=\=\=\=\=Wiki \u9801\u9762\u4F9D\u5B57\u6BCD\u9806\u5E8F\=\=\=\=\n\n\n
 nav.changes.desc=\=\=\=\=\u8FD1\u671F\u7570\u52D5\u6E05\u55AE\=\=\=\=\n\n\n
 navigation.a-z=\u5F9E A \u5230 Z