From bcef17ce0250eba55fe45425bf3518efb9cc2ad1 Mon Sep 17 00:00:00 2001
From: aboeckle <alexander.boeckle@frentix.com>
Date: Thu, 14 May 2020 11:31:15 +0200
Subject: [PATCH] OO-4562 Translation and placeholder fix

---
 .../olat/admin/help/ui/HelpAdminEditController.java    | 10 ++++++----
 .../olat/gui/control/OlatGuestTopNavController.java    |  5 +++++
 .../org/olat/gui/control/OlatTopNavController.java     |  6 ++++++
 3 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/olat/admin/help/ui/HelpAdminEditController.java b/src/main/java/org/olat/admin/help/ui/HelpAdminEditController.java
index 69d0ac04322..a1c7945c4e9 100644
--- a/src/main/java/org/olat/admin/help/ui/HelpAdminEditController.java
+++ b/src/main/java/org/olat/admin/help/ui/HelpAdminEditController.java
@@ -184,11 +184,13 @@ public class HelpAdminEditController extends FormBasicController {
 			String translation = i18nManager.getLocalizedString(HelpAdminController.class.getPackage().getName(), "help." + helpPlugin, null, Locale.forLanguageTag(locale), false, false, false, false, 0);
 			String overlayTranslation = i18nManager.getLocalizedString(HelpAdminController.class.getPackage().getName(), "help." + helpPlugin, null, Locale.forLanguageTag(locale), true, false, false, false, 0);
 			
-			if (translation != null && overlayTranslation != null && translation.equals(overlayTranslation)) {
-				labelElementsMap.get(locale).setPlaceholderText(translation);
-			} else {
+			// Value must be placed before placeholder
+			// If not, placeholder is not visible when removing content in GUI
+			if (translation != null && overlayTranslation != null && !translation.equals(overlayTranslation)) {
 				labelElementsMap.get(locale).setValue(overlayTranslation);
 			}
+			
+			labelElementsMap.get(locale).setPlaceholderText(translation);
 		}
 	}
 
@@ -211,7 +213,7 @@ public class HelpAdminEditController extends FormBasicController {
 		}
 		iconEl = uifactory.addTextElement("help.admin.icon", 255, "", formLayout);
 		iconEl.setValue(HelpModule.DEFAULT_ICON);
-		iconEl.setExampleKey("help.admin.icon.examples", new String[] {"o_icon_help, o_icon_video, o_icon_wiki, o_course_icon, o_icon_external_link, o_icon_link, ..."});
+		iconEl.setExampleKey("help.admin.icon.examples", new String[] {"o_icon_help, o_icon_manual, o_icon_mail, o_icon_video, o_icon_wiki, o_course_icon, o_icon_external_link, o_icon_link, ..."});
 		iconEl.setMandatory(true);
 		inputEl = uifactory.addTextElement("help.admin.input.support", 255, "", formLayout);
 		inputEl.setMandatory(true);
diff --git a/src/main/java/org/olat/gui/control/OlatGuestTopNavController.java b/src/main/java/org/olat/gui/control/OlatGuestTopNavController.java
index 356e8ff03de..d5c09a6a3be 100644
--- a/src/main/java/org/olat/gui/control/OlatGuestTopNavController.java
+++ b/src/main/java/org/olat/gui/control/OlatGuestTopNavController.java
@@ -28,6 +28,7 @@ package org.olat.gui.control;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.olat.admin.help.ui.HelpAdminController;
 import org.olat.admin.user.tools.UserTool;
 import org.olat.basesecurity.AuthHelper;
 import org.olat.core.CoreSpringFactory;
@@ -49,6 +50,7 @@ import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
 import org.olat.core.gui.control.creator.ControllerCreator;
 import org.olat.core.gui.control.generic.popup.PopupBrowserWindow;
+import org.olat.core.util.Util;
 import org.olat.gui.control.OlatTopNavController.Tool;
 import org.olat.search.SearchModule;
 import org.olat.search.SearchUserToolExtension;
@@ -71,6 +73,9 @@ public class OlatGuestTopNavController extends BasicController implements Lockab
 	
 	public OlatGuestTopNavController(UserRequest ureq, WindowControl wControl) {
 		super(ureq, wControl);
+		
+		setTranslator(Util.createPackageTranslator(HelpAdminController.class, getLocale(), getTranslator()));
+		
 		VelocityContainer vc = createVelocityContainer("guesttopnav");
 		vc.setDomReplacementWrapperRequired(false); // we provide our own DOM replacement ID
 		
diff --git a/src/main/java/org/olat/gui/control/OlatTopNavController.java b/src/main/java/org/olat/gui/control/OlatTopNavController.java
index 165c88ddddd..fdb29758b26 100644
--- a/src/main/java/org/olat/gui/control/OlatTopNavController.java
+++ b/src/main/java/org/olat/gui/control/OlatTopNavController.java
@@ -24,6 +24,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+import org.olat.admin.help.ui.HelpAdminController;
 import org.olat.admin.user.tools.UserTool;
 import org.olat.admin.user.tools.UserToolCategory;
 import org.olat.admin.user.tools.UserToolExtension;
@@ -46,6 +47,7 @@ import org.olat.core.id.Roles;
 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.prefs.Preferences;
 import org.olat.user.DisplayPortraitController;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -69,6 +71,10 @@ public class OlatTopNavController extends BasicController implements LockableCon
 	
 	public OlatTopNavController(UserRequest ureq, WindowControl wControl) {
 		super(ureq, wControl);
+		
+		// Include translator for help
+		setTranslator(Util.createPackageTranslator(HelpAdminController.class, getLocale(), getTranslator()));
+		
 		topNavVC = createVelocityContainer("topnav");
 		topNavVC.setDomReplacementWrapperRequired(false); // we provide our own DOM replacmenet ID
 		
-- 
GitLab