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 0776fc31bb0debd2b30ec72d2ea158afe1b8f3e9..cb0b5b5dc0d25421ee45f4314adddcdda98b074c 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
@@ -155,6 +155,7 @@ public class RichTextConfiguration implements Disposable {
 	private boolean allowCustomMediaFactory = true;
 	private boolean inline = false;
 	private boolean sendOnBlur;
+	private boolean readOnly;
 	private CustomLinkTreeModel linkBrowserCustomTreeModel;	
 	// DOM ID of the flexi form element
 	private String domID;
@@ -454,6 +455,15 @@ public class RichTextConfiguration implements Disposable {
 	public void setPathInStatusBar(boolean pathInStatusBar) {
 		this.pathInStatusBar = pathInStatusBar;
 	}
+	
+
+	public boolean isReadOnly() {
+		return readOnly;
+	}
+
+	public void setReadOnly(boolean readOnly) {
+		this.readOnly = readOnly;
+	}
 
 	/**
 	 * Add a function name that has to be executed after initialization. <br>
@@ -980,6 +990,9 @@ public class RichTextConfiguration implements Disposable {
 		  .append("statusbar:").append(true).append(",\n")
 		  .append("resize:").append(true).append(",\n")
 		  .append("menubar:").append(tinyConfig.hasMenu()).append(",\n");
+ 		if(isReadOnly()) {
+ 			tinyMenuSb.append("readonly: 1,\n");
+ 		}
  		
  		String leftAndClear = "Left and clear";
  		String rightAndClear = "Right and clear";
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java
index c4e1ea9da78051335578a6847882ad9cc1b35131..ef37b7a1e223977e81e0123ca0d0593a452810b8 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java
@@ -93,8 +93,8 @@ public class FIBEditorController extends FormBasicController {
 		textEl = uifactory.addRichTextElementForQTI21("desc", "form.imd.descr", question, 16, -1, itemContainer,
 				formLayout, ureq.getUserSession(),  getWindowControl());
 		textEl.addActionListener(FormEvent.ONCLICK);
-		textEl.setEnabled(!restrictedEdit);
 		RichTextConfiguration richTextConfig = textEl.getEditorConfiguration();
+		richTextConfig.setReadOnly(restrictedEdit);
 		
 		boolean hasNumericals = itemBuilder.hasNumericalInputs();
 		boolean hasTexts = itemBuilder.hasTextEntry();
@@ -221,14 +221,14 @@ public class FIBEditorController extends FormBasicController {
 		}
 		
 		if(interaction instanceof TextEntry) {
-			textEntrySettingsCtrl = new FIBTextEntrySettingsController(ureq, getWindowControl(), (TextEntry)interaction);
+			textEntrySettingsCtrl = new FIBTextEntrySettingsController(ureq, getWindowControl(), (TextEntry)interaction, restrictedEdit);
 			listenTo(textEntrySettingsCtrl);
 			
 			cmc = new CloseableModalController(getWindowControl(), translate("close"), textEntrySettingsCtrl.getInitialComponent(), true, translate("title.add") );
 			cmc.activate();
 			listenTo(cmc);
 		} else if(interaction instanceof NumericalEntry) {
-			numericalEntrySettingsCtrl = new FIBNumericalEntrySettingsController(ureq, getWindowControl(), (NumericalEntry)interaction);
+			numericalEntrySettingsCtrl = new FIBNumericalEntrySettingsController(ureq, getWindowControl(), (NumericalEntry)interaction, restrictedEdit);
 			listenTo(numericalEntrySettingsCtrl);
 			
 			cmc = new CloseableModalController(getWindowControl(), translate("close"), numericalEntrySettingsCtrl.getInitialComponent(), true, translate("title.add") );
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBNumericalEntrySettingsController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBNumericalEntrySettingsController.java
index 98211760de2c6325d987dccdbbe1d3ad3eb9f741..1976f11b7da2a47679e74f96d9c28740ebe48d50 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBNumericalEntrySettingsController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBNumericalEntrySettingsController.java
@@ -55,11 +55,13 @@ public class FIBNumericalEntrySettingsController extends FormBasicController {
 	private SingleSelection toleranceModeEl;
 	private TextElement lowerToleranceEl, upperToleranceEl;
 	
+	private final boolean restrictedEdit;
 	private final NumericalEntry interaction;
 	
-	public FIBNumericalEntrySettingsController(UserRequest ureq, WindowControl wControl, NumericalEntry interaction) {
+	public FIBNumericalEntrySettingsController(UserRequest ureq, WindowControl wControl, NumericalEntry interaction, boolean restrictedEdit) {
 		super(ureq, wControl, Util.createPackageTranslator(AssessmentTestEditorController.class, ureq.getLocale()));
 		this.interaction = interaction;
+		this.restrictedEdit = restrictedEdit;
 		initForm(ureq);
 	}
 
@@ -68,17 +70,21 @@ public class FIBNumericalEntrySettingsController extends FormBasicController {
 		Double solution = interaction.getSolution();
 		String solString = solution == null ? "" : solution.toString();
 		solutionEl = uifactory.addTextElement("fib.solution", "fib.solution", 256, solString, formLayout);
+		solutionEl.setEnabled(!restrictedEdit);
 		String placeholder = interaction.getPlaceholder();
 		placeholderEl = uifactory.addTextElement("fib.placeholder", "fib.placeholder", 256, placeholder, formLayout);
+		placeholderEl.setEnabled(!restrictedEdit);
 		
 		Integer expectedLength = interaction.getExpectedLength();
 		String expectedLengthStr = expectedLength == null ? null : expectedLength.toString();
 		expectedLengthEl = uifactory.addTextElement("fib.expectedLength", "fib.expectedLength", 256, expectedLengthStr, formLayout);
+		expectedLengthEl.setEnabled(!restrictedEdit);
 		
 		String[] toleranceModeValues = new String[] {
 			translate("fib.tolerance.mode.exact"), translate("fib.tolerance.mode.absolute"), translate("fib.tolerance.mode.relative")
 		};
 		toleranceModeEl = uifactory.addDropdownSingleselect("fib.tolerance.mode", "fib.tolerance.mode", formLayout, toleranceModeKeys, toleranceModeValues, null);
+		toleranceModeEl.setEnabled(!restrictedEdit);
 		if(interaction.getToleranceMode() != null) {
 			for(String toleranceModeKey:toleranceModeKeys) {
 				if(toleranceModeKey.equals(interaction.getToleranceMode().name())) {
@@ -95,11 +101,13 @@ public class FIBNumericalEntrySettingsController extends FormBasicController {
 		String lowerToleranceString = lowerTolerance == null ? "" : lowerTolerance.toString();
 		lowerToleranceEl = uifactory.addTextElement("fib.tolerance.low", "fib.tolerance.low", 8, lowerToleranceString, formLayout);
 		lowerToleranceEl.setExampleKey("fib.tolerance.mode.absolute.example", null);
+		lowerToleranceEl.setEnabled(!restrictedEdit);
 		
 		Double upperTolerance = interaction.getUpperTolerance();
 		String upperToleranceString = upperTolerance == null ? "" : upperTolerance.toString();
 		upperToleranceEl = uifactory.addTextElement("fib.tolerance.up", "fib.tolerance.up", 8, upperToleranceString, formLayout);
 		upperToleranceEl.setExampleKey("fib.tolerance.mode.absolute.example", null);
+		upperToleranceEl.setEnabled(!restrictedEdit);
 		updateToleranceUpAndLow();
 
 		
@@ -107,7 +115,9 @@ public class FIBNumericalEntrySettingsController extends FormBasicController {
 		FormLayoutContainer buttonsContainer = FormLayoutContainer.createButtonLayout("buttons", getTranslator());
 		buttonsContainer.setRootForm(mainForm);
 		formLayout.add(buttonsContainer);
-		uifactory.addFormSubmitButton("submit", buttonsContainer);
+		if(!restrictedEdit) {
+			uifactory.addFormSubmitButton("submit", buttonsContainer);
+		}
 		uifactory.addFormCancelButton("cancel", buttonsContainer, ureq, getWindowControl());
 	}
 	
diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java
index 6297b3a572651b0a9268eb3eba382f9f4da440ea..46b441687d0244fdef3bd30aab773a5cc4810cfe 100644
--- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java
@@ -49,12 +49,14 @@ public class FIBTextEntrySettingsController extends FormBasicController {
 	private TextElement expectedLengthEl;
 	private MultipleSelectionElement caseSensitiveEl;
 	
+	private final boolean restrictedEdit;
 	private final TextEntry interaction;
 	
-	public FIBTextEntrySettingsController(UserRequest ureq, WindowControl wControl, TextEntry interaction) {
+	public FIBTextEntrySettingsController(UserRequest ureq, WindowControl wControl, TextEntry interaction, boolean restrictedEdit) {
 		super(ureq, wControl);
 		setTranslator(Util.createPackageTranslator(AssessmentTestEditorController.class, getLocale()));
 		this.interaction = interaction;
+		this.restrictedEdit = restrictedEdit;
 		initForm(ureq);
 	}
 
@@ -62,18 +64,23 @@ public class FIBTextEntrySettingsController extends FormBasicController {
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
 		String solution = interaction.getSolution();
 		solutionEl = uifactory.addTextElement("fib.solution", "fib.solution", 256, solution, formLayout);
+		solutionEl.setEnabled(!restrictedEdit);
 		String placeholder = interaction.getPlaceholder();
 		placeholderEl = uifactory.addTextElement("fib.placeholder", "fib.placeholder", 256, placeholder, formLayout);
+		placeholderEl.setEnabled(!restrictedEdit);
 		String alternatives = interaction.alternativesToString();
 		alternativeEl = uifactory.addTextElement("fib.alternative", "fib.alternative", 256, alternatives, formLayout);
 		alternativeEl.setHelpText(translate("fib.alternative.help"));
 		alternativeEl.setHelpUrlForManualPage("Test editor QTI 2.1 in detail#details_testeditor_fragetypen_fib");
+		alternativeEl.setEnabled(!restrictedEdit);
 		
 		Integer expectedLength = interaction.getExpectedLength();
 		String expectedLengthStr = expectedLength == null ? null : expectedLength.toString();
 		expectedLengthEl = uifactory.addTextElement("fib.expectedLength", "fib.expectedLength", 256, expectedLengthStr, formLayout);
-
+		expectedLengthEl.setEnabled(!restrictedEdit);
+		
 		caseSensitiveEl = uifactory.addCheckboxesHorizontal("fib.caseSensitive", "fib.caseSensitive", formLayout, onKeys, new String[]{ "" });
+		caseSensitiveEl.setEnabled(!restrictedEdit);
 		if(interaction.isCaseSensitive()) {
 			caseSensitiveEl.select(onKeys[0], true);
 		}
@@ -82,7 +89,9 @@ public class FIBTextEntrySettingsController extends FormBasicController {
 		FormLayoutContainer buttonsContainer = FormLayoutContainer.createButtonLayout("buttons", getTranslator());
 		buttonsContainer.setRootForm(mainForm);
 		formLayout.add(buttonsContainer);
-		uifactory.addFormSubmitButton("submit", buttonsContainer);
+		if(!restrictedEdit) {
+			uifactory.addFormSubmitButton("submit", buttonsContainer);
+		}
 		uifactory.addFormCancelButton("cancel", buttonsContainer, ureq, getWindowControl());
 	}