From 906574974170175be446da825d21132d2c068749 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Mon, 20 Jan 2020 16:29:58 +0100
Subject: [PATCH] OO-4478: add link in the HTML editor's toolbar of video
 markers

---
 .../core/gui/components/form/flexible/FormUIFactory.java  | 6 +++---
 .../impl/elements/richText/RichTextConfiguration.java     | 8 ++++++--
 .../form/flexible/impl/elements/richText/TinyConfig.java  | 7 +++++++
 .../ui/editor/interactions/MatchEditorController.java     | 2 +-
 .../ui/editor/interactions/TrueFalseEditorController.java | 2 +-
 .../modules/video/ui/marker/MarkerEditController.java     | 2 +-
 6 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/FormUIFactory.java b/src/main/java/org/olat/core/gui/components/form/flexible/FormUIFactory.java
index 2aa7fc91e42..2b16115c08c 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/FormUIFactory.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/FormUIFactory.java
@@ -854,14 +854,14 @@ public class FormUIFactory {
 		return rte;
 	}
 	
-	public RichTextElement addRichTextElementForQTI21Match(String name, String i18nLabel, String initialHTMLValue, int rows,
-			int cols, VFSContainer baseContainer, FormItemContainer formLayout, UserSession usess, WindowControl wControl) {
+	public RichTextElement addRichTextElementVeryMinimalistic(String name, String i18nLabel, String initialHTMLValue, int rows,
+			int cols, boolean withLinks,  VFSContainer baseContainer, FormItemContainer formLayout, UserSession usess, WindowControl wControl) {
 		// Create rich text element with bare bone configuration
 		RichTextElement rte = new RichTextElementImpl(name, initialHTMLValue, rows, cols, formLayout.getRootForm(), formLayout.getTranslator().getLocale());
 		setLabelIfNotNull(i18nLabel, rte);
 		// Now configure editor
 		Theme theme = wControl.getWindowBackOffice().getWindow().getGuiTheme();
-		rte.getEditorConfiguration().setConfigProfileFormVeryMinimalisticConfigEditor(usess, theme, baseContainer);
+		rte.getEditorConfiguration().setConfigProfileFormVeryMinimalisticConfigEditor(usess, theme, baseContainer, withLinks);
 		rte.getEditorConfiguration().setInvalidElements(RichTextConfiguration.INVALID_ELEMENTS_FORM_FULL_VALUE_UNSAVE_WITH_SCRIPT);
 		rte.getEditorConfiguration().setExtendedValidElements("script[src|type|defer]");
 		rte.getEditorConfiguration().disableTinyMedia();
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java
index d01ca545e98..1e0704d5b66 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/RichTextConfiguration.java
@@ -274,7 +274,7 @@ public class RichTextConfiguration implements Disposable {
 	 * @param guiTheme
 	 * @param baseContainer
 	 */
-	public void setConfigProfileFormVeryMinimalisticConfigEditor(UserSession usess, Theme guiTheme, VFSContainer baseContainer) {
+	public void setConfigProfileFormVeryMinimalisticConfigEditor(UserSession usess, Theme guiTheme, VFSContainer baseContainer, boolean withLinks) {
 		setConfigBasics(guiTheme);
 		// Add additional plugins
 		TinyMCECustomPluginFactory customPluginFactory = CoreSpringFactory.getImpl(TinyMCECustomPluginFactory.class);
@@ -285,7 +285,11 @@ public class RichTextConfiguration implements Disposable {
 		
 		// Don't allow javascript or iframes, if the file browser is there allow also media elements (the full values)
 		setQuotedConfigValue(INVALID_ELEMENTS, (baseContainer == null ? INVALID_ELEMENTS_FORM_SIMPLE_VALUE_UNSAVE : INVALID_ELEMENTS_FORM_FULL_VALUE_UNSAVE));
-		tinyConfig = TinyConfig.veryMinimalisticConfig;
+		if(withLinks) {
+			tinyConfig = TinyConfig.veryMinimalisticWithLinksConfig;
+		} else {
+			tinyConfig = TinyConfig.veryMinimalisticConfig;
+		}
 		setPathInStatusBar(false);
 		
 		// Setup file and link browser
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/TinyConfig.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/TinyConfig.java
index 0b13271d5a8..b0937013b11 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/TinyConfig.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/TinyConfig.java
@@ -32,6 +32,7 @@ public class TinyConfig {
 	protected static final TinyConfig editorCompactConfig;
 	protected static final TinyConfig fileEditorConfig;
 	protected static final TinyConfig minimalisticConfig;
+	protected static final TinyConfig veryMinimalisticWithLinksConfig;
 	protected static final TinyConfig veryMinimalisticConfig;
 	protected static final TinyConfig paragraphEditorConfig;
 
@@ -72,6 +73,12 @@ public class TinyConfig {
 		String tools1 = "bold italic underline | image olatmatheditor";
 		veryMinimalisticConfig = new TinyConfig(plugins, null, tools1);
 	}
+	static {
+		String plugins = "contextmenu,colorpicker,textcolor,hr,charmap,image,insertdatetime,table,visualchars,visualblocks,noneditable,olatsmileys,paste,link,quotespliter,olatmatheditor,olatmovieviewer,tabfocus,visualchars,visualblocks,noneditable,media";
+		String tools1 = "bold italic underline | image olatmatheditor | link unlink";
+		veryMinimalisticWithLinksConfig = new TinyConfig(plugins, null, tools1);
+	}
+	
 	//paragraph editor for content editor
 	static {
 		String plugins = "lists,contextmenu,textcolor,hr,noneditable,paste,link,olatmatheditor,tabfocus,noneditable";
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java
index 5c0f56bb12a..a1425dda370 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java
@@ -233,7 +233,7 @@ public class MatchEditorController extends FormBasicController {
 		List<FlowStatic> choiceFlow = choice.getFlowStatics();
 		String choiceContent =  itemBuilder.getHtmlHelper().flowStaticString(choiceFlow);
 		String choiceId = "answer" + count++;
-		RichTextElement choiceEl = uifactory.addRichTextElementForQTI21Match(choiceId, "form.imd.answer", choiceContent, 4, -1, itemContainer,
+		RichTextElement choiceEl = uifactory.addRichTextElementVeryMinimalistic(choiceId, "form.imd.answer", choiceContent, 4, -1, false, itemContainer,
 				answersCont, ureq.getUserSession(), getWindowControl());
 		choiceEl.setUserObject(choice);
 		choiceEl.setEnabled(!readOnly);
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/TrueFalseEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/TrueFalseEditorController.java
index 3c414afd1cf..a42d65b1966 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/TrueFalseEditorController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/TrueFalseEditorController.java
@@ -175,7 +175,7 @@ public class TrueFalseEditorController extends FormBasicController {
 		List<FlowStatic> choiceFlow = choice.getFlowStatics();
 		String choiceContent =  itemBuilder.getHtmlHelper().flowStaticString(choiceFlow);
 		String choiceId = "answer" + count++;
-		RichTextElement choiceEl = uifactory.addRichTextElementForQTI21Match(choiceId, "form.imd.answer", choiceContent, 4, -1, itemContainer,
+		RichTextElement choiceEl = uifactory.addRichTextElementVeryMinimalistic(choiceId, "form.imd.answer", choiceContent, 4, -1, false, itemContainer,
 				answersCont, ureq.getUserSession(), getWindowControl());
 		choiceEl.setUserObject(choice);
 		choiceEl.setEnabled(!readOnly);
diff --git a/src/main/java/org/olat/modules/video/ui/marker/MarkerEditController.java b/src/main/java/org/olat/modules/video/ui/marker/MarkerEditController.java
index 307315fa238..f3a7a42ef1e 100644
--- a/src/main/java/org/olat/modules/video/ui/marker/MarkerEditController.java
+++ b/src/main/java/org/olat/modules/video/ui/marker/MarkerEditController.java
@@ -118,7 +118,7 @@ public class MarkerEditController extends FormBasicController {
 
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
-		markerTextEl = uifactory.addRichTextElementForQTI21Match("text", "video.marker.text", "", 4, -1, null,
+		markerTextEl = uifactory.addRichTextElementVeryMinimalistic("text", "video.marker.text", "", 4, -1, true, null,
 				formLayout, ureq.getUserSession(), getWindowControl());
 		markerTextEl.getEditorConfiguration().disableImageAndMovie();
 		markerTextEl.getEditorConfiguration().setSimplestTextModeAllowed(TextMode.oneLine);
-- 
GitLab