From e635b29ba301f14acb1b45bf146197033f7ce973 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Mon, 26 Nov 2012 09:12:54 +0100
Subject: [PATCH] OO-419: add a unit test to check if the velocity templates
 are parseable, remove some unused templates, fix the auto-completion in
 french

---
 .../_i18n/LocalStrings_fr.properties          |   2 +-
 .../guidemo_flexi_form_customlayout.html      |  50 ----
 .../guidemo_flexi_form_hideunhide.html        |  96 -------
 .../guidemo_flexi_form_simpleform.html        | 143 ----------
 .../guidemo_flexi_form_withchooser.html       | 250 ------------------
 .../core/gui/render/VelocityTemplateTest.java | 117 ++++++++
 .../java/org/olat/test/AllTestsJunit4.java    |   2 +-
 7 files changed, 119 insertions(+), 541 deletions(-)
 delete mode 100644 src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_customlayout.html
 delete mode 100644 src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_hideunhide.html
 delete mode 100644 src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_simpleform.html
 delete mode 100644 src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_withchooser.html
 create mode 100644 src/test/java/org/olat/core/gui/render/VelocityTemplateTest.java

diff --git a/src/main/java/org/olat/core/gui/components/textboxlist/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/core/gui/components/textboxlist/_i18n/LocalStrings_fr.properties
index 5c6555f5e67..83b8f131990 100644
--- a/src/main/java/org/olat/core/gui/components/textboxlist/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/core/gui/components/textboxlist/_i18n/LocalStrings_fr.properties
@@ -1,5 +1,5 @@
 #Tue Feb 01 12:20:21 CET 2011
 add.new.element.prefix=Ajouter
 default.input.hint=Cliquez ici pour ajouter un \u00E9l\u00E9ment. Plusieurs \u00E9l\u00E9ments doivent \u00EAtre s\u00E9par\u00E9s par des virgules.
-more.results.found.specify.search=D'autres r\u00E9sultats ont \u00E9t\u00E9 trouv\u00E9s\: affinez la recherche, svp.
+more.results.found.specify.search=D&#39;autres r\u00E9sultats ont \u00E9t\u00E9 trouv\u00E9s\: affinez la recherche, svp.
 please.wait.searching=Attendre svp. recherche pour\:
diff --git a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_customlayout.html b/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_customlayout.html
deleted file mode 100644
index 0d6a5f34468..00000000000
--- a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_customlayout.html
+++ /dev/null
@@ -1,50 +0,0 @@
-$r.render("sourceview")
-
-<!-- ======================================================== -->
-<!-- = Java Sourcecode to HTML automatically converted code = -->
-<!-- =   Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard  markus@jave.de   = -->
-<!-- =     Further information: http://www.java2html.de     = -->
-<div align="left" class="java">
-<table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff">
-   <tr>
-  <!-- start source code -->
-   <td nowrap="nowrap" valign="top" align="left">
-    <code>
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>public&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormCustomlayout</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;WindowControl&nbsp;wControl,&nbsp;GuiDemoFlexiFormPersonData&nbsp;data</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;this&nbsp;whole&nbsp;class&nbsp;is&nbsp;copy-pasted&nbsp;from&nbsp;the&nbsp;GuiDemoFlexiForm.java</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;but&nbsp;the&nbsp;super&nbsp;constructor&nbsp;is&nbsp;called&nbsp;with&nbsp;a&nbsp;velocity&nbsp;page&nbsp;which&nbsp;serves&nbsp;then</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;as&nbsp;layouting&nbsp;velocity&nbsp;page.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;inside&nbsp;this&nbsp;page&nbsp;one&nbsp;can&nbsp;render&nbsp;all&nbsp;the&nbsp;form&nbsp;elements&nbsp;with&nbsp;the&nbsp;wellknown</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;$r.render(&#34;compName&#34;)&nbsp;paradigma.&nbsp;But&nbsp;with&nbsp;the&nbsp;form&nbsp;comes&nbsp;some&nbsp;naming&nbsp;convention</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;to&nbsp;render&nbsp;the&nbsp;label,&nbsp;error,&nbsp;example&nbsp;of&nbsp;a&nbsp;form&nbsp;element.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;read&nbsp;the&nbsp;instructions&nbsp;in&nbsp;the&nbsp;customformlayout&nbsp;velocity&nbsp;page.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>super</b></font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;wControl,&nbsp;</font><font color="#2a00ff">&#34;customformlayout&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;first&nbsp;you&nbsp;may&nbsp;preprocess&nbsp;data&nbsp;to&nbsp;fit&nbsp;into&nbsp;the&nbsp;form&nbsp;items</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;if&nbsp;all&nbsp;preprocessing&nbsp;is&nbsp;done,&nbsp;create&nbsp;the&nbsp;form&nbsp;items</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;example&nbsp;for&nbsp;simple&nbsp;preprocessing&nbsp;-&nbsp;check&nbsp;for&nbsp;NULL</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">data&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData&nbsp;=&nbsp;data;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#7f0055"><b>else</b></font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormPersonData</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;calls&nbsp;our&nbsp;initForm(formlayout,listener,ureq)&nbsp;with&nbsp;default&nbsp;values.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">ureq</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;after&nbsp;initialisation&nbsp;you&nbsp;may&nbsp;need&nbsp;to&nbsp;do&nbsp;some&nbsp;stuff</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;but&nbsp;typically&nbsp;initForm(..)&nbsp;is&nbsp;the&nbsp;last&nbsp;call&nbsp;in&nbsp;the&nbsp;constructor.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font></code>
-    
-   </td>
-  <!-- end source code -->
-   </tr>
-</table>
-</div>
-<!-- =       END of automatically generated HTML code       = -->
-<!-- ======================================================== -->
-
-
-
-
diff --git a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_hideunhide.html b/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_hideunhide.html
deleted file mode 100644
index 32033410a6b..00000000000
--- a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_hideunhide.html
+++ /dev/null
@@ -1,96 +0,0 @@
-$r.render("sourceview")
-<h4>relevat source part</h4>
-
-<!-- ======================================================== -->
-<!-- = Java Sourcecode to HTML automatically converted code = -->
-<!-- =   Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard  markus@jave.de   = -->
-<!-- =     Further information: http://www.java2html.de     = -->
-<div align="left" class="java">
-<table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff">
-   <tr>
-  <!-- start source code -->
-   <td nowrap="nowrap" valign="top" align="left">
-    <code>
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">FormItemContainer&nbsp;formLayout,&nbsp;Controller&nbsp;listener,&nbsp;UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setFormTitle</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo_flexi_form_hideunhide&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>final&nbsp;</b></font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">defaultDisplaySize&nbsp;=&nbsp;</font><font color="#990000">32</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>final&nbsp;</b></font><font color="#7f0055"><b>boolean&nbsp;</b></font><font color="#000000">inputMode&nbsp;=&nbsp;!personData.isReadOnly</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">/*</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;hide&nbsp;unhide&nbsp;chooser</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">checkbox&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">MultipleSelectionElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;checkbox&#34;</font><font color="#000000">,&nbsp;MultipleSelectionElementImpl.createVerticalLayout</font><font color="#000000">(</font><font color="#2a00ff">&#34;checkbox&#34;</font><font color="#000000">))&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.show&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">keys&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">String</font><font color="#000000">[]&nbsp;{&nbsp;</font><font color="#2a00ff">&#34;ison&#34;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">values&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">String</font><font color="#000000">[]&nbsp;{&nbsp;</font><font color="#2a00ff">&#34;&#34;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">select</font><font color="#000000">(</font><font color="#2a00ff">&#34;ison&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;add&nbsp;to&nbsp;velocity&nbsp;container</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">checkbox</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;register&nbsp;for&nbsp;on&nbsp;click&nbsp;event&nbsp;to&nbsp;hide/disable&nbsp;other&nbsp;elements</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">checkbox.addActionListener</font><font color="#000000">(</font><font color="#000000">listener,&nbsp;FormEvent.ONCLICK</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//rule&nbsp;to&nbsp;hide/unhide&nbsp;at&nbsp;the&nbsp;end</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">firstName&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;firstname&#34;</font><font color="#000000">,&nbsp;personData.getFirstName</font><font color="#000000">()){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.firstname&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.mustbefilled&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setMandatory</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">firstName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">lastName&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.lastname&#34;</font><font color="#000000">,&nbsp;personData.getLastName</font><font color="#000000">()){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;guidemo.flexi.form.notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.lastname&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.mustbefilled&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setMandatory</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">lastName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">institution&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;institution&#34;</font><font color="#000000">,&nbsp;personData.getInstitution</font><font color="#000000">()){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;guidemo.flexi.form.notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.institution&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">institution</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//submit&nbsp;only&nbsp;if&nbsp;in&nbsp;input&nbsp;mode</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">submit&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">FormSubmit</font><font color="#000000">(</font><font color="#2a00ff">&#34;submit&#34;</font><font color="#000000">,</font><font color="#2a00ff">&#34;submit&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">submit</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">/*</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;now&nbsp;the&nbsp;rules&nbsp;to&nbsp;hide&nbsp;unhide&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">Set&lt;FormItem&gt;&nbsp;targets&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">HashSet&lt;FormItem&gt;</font><font color="#000000">(){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">add</font><font color="#000000">(</font><font color="#000000">firstName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">add</font><font color="#000000">(</font><font color="#000000">lastName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">add</font><font color="#000000">(</font><font color="#000000">institution</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">add</font><font color="#000000">(</font><font color="#000000">submit</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">RulesFactory.createHideRule</font><font color="#000000">(</font><font color="#000000">checkbox,&nbsp;null,&nbsp;targets,&nbsp;formLayout</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">RulesFactory.createShowRule</font><font color="#000000">(</font><font color="#000000">checkbox,&nbsp;</font><font color="#2a00ff">&#34;ison&#34;</font><font color="#000000">,&nbsp;targets,&nbsp;formLayout</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font></code>
-    
-   </td>
-  <!-- end source code -->
-   </tr>
-</table>
-</div>
-<!-- =       END of automatically generated HTML code       = -->
-<!-- ======================================================== -->
diff --git a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_simpleform.html b/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_simpleform.html
deleted file mode 100644
index 0b860039374..00000000000
--- a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_simpleform.html
+++ /dev/null
@@ -1,143 +0,0 @@
-$r.render("sourceview")
-<!-- ======================================================== -->
-<!-- = Java Sourcecode to HTML automatically converted code = -->
-<!-- =   Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard  markus@jave.de   = -->
-<!-- =     Further information: http://www.java2html.de     = -->
-<div align="left" class="java">
-<table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff">
-   <tr>
-  <!-- start source code -->
-   <td nowrap="nowrap" valign="top" align="left">
-    <code>
-<font color="#7f0055"><b>public&nbsp;class&nbsp;</b></font><font color="#000000">GuiDemoFlexiForm&nbsp;</font><font color="#7f0055"><b>extends&nbsp;</b></font><font color="#000000">FormBasicController&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">TextElement&nbsp;firstName;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">TextElement&nbsp;lastName;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">TextElement&nbsp;institution;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">Submit&nbsp;submit;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormPersonData&nbsp;personData;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">VelocityContainer&nbsp;confirm;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">GuiDemoFlexiForm&nbsp;confirmController;</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>public&nbsp;</b></font><font color="#000000">GuiDemoFlexiForm</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;WindowControl&nbsp;wControl,&nbsp;GuiDemoFlexiFormPersonData&nbsp;data</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>super</b></font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;wControl</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;first&nbsp;you&nbsp;may&nbsp;preprocess&nbsp;data&nbsp;to&nbsp;fit&nbsp;into&nbsp;the&nbsp;form&nbsp;items</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;if&nbsp;all&nbsp;preprocessing&nbsp;is&nbsp;done,&nbsp;create&nbsp;the&nbsp;form&nbsp;items</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;example&nbsp;for&nbsp;simple&nbsp;preprocessing&nbsp;-&nbsp;check&nbsp;for&nbsp;NULL</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">data&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData&nbsp;=&nbsp;data;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#7f0055"><b>else</b></font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormPersonData</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;calls&nbsp;our&nbsp;initForm(formlayout,listener,ureq)&nbsp;with&nbsp;default&nbsp;values.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">ureq</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;after&nbsp;initialisation&nbsp;you&nbsp;may&nbsp;need&nbsp;to&nbsp;do&nbsp;some&nbsp;stuff</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;but&nbsp;typically&nbsp;initForm(..)&nbsp;is&nbsp;the&nbsp;last&nbsp;call&nbsp;in&nbsp;the&nbsp;constructor.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f5fbf">/**</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@see&nbsp;</font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#doDispose(boolean)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@SuppressWarnings</font><font color="#000000">(</font><font color="#2a00ff">&#34;unused&#34;</font><font color="#000000">)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">doDispose</font><font color="#000000">(</font><font color="#7f0055"><b>boolean&nbsp;</b></font><font color="#000000">asynchronous</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f5fbf">/**</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@see&nbsp;</font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#formOK(org.olat.core.gui.UserRequest)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@SuppressWarnings</font><font color="#000000">(</font><font color="#2a00ff">&#34;unused&#34;</font><font color="#000000">)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">formOK</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;this&nbsp;method&nbsp;is&nbsp;called&nbsp;if&nbsp;the&nbsp;form&nbsp;has&nbsp;validated</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;which&nbsp;means&nbsp;that&nbsp;all&nbsp;form&nbsp;items&nbsp;are&nbsp;filled&nbsp;without&nbsp;error</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;and&nbsp;all&nbsp;complex&nbsp;business&nbsp;rules&nbsp;validated&nbsp;also&nbsp;to&nbsp;true.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;typically&nbsp;the&nbsp;form&nbsp;values&nbsp;are&nbsp;now&nbsp;read&nbsp;out&nbsp;and&nbsp;persisted</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;in&nbsp;our&nbsp;case,&nbsp;save&nbsp;value&nbsp;to&nbsp;data&nbsp;object&nbsp;and&nbsp;prepare&nbsp;a&nbsp;confirm&nbsp;page</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData.setFirstName</font><font color="#000000">(</font><font color="#000000">firstName.getValue</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData.setLastName</font><font color="#000000">(</font><font color="#000000">lastName.getValue</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData.setInstitution</font><font color="#000000">(</font><font color="#000000">institution.getValue</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData.setReadOnly</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//show&nbsp;the&nbsp;same&nbsp;form&nbsp;in&nbsp;readonly&nbsp;mode.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">confirmController&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">GuiDemoFlexiForm</font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;getWindowControl</font><font color="#000000">()</font><font color="#000000">,&nbsp;personData</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">confirm&nbsp;=&nbsp;createVelocityContainer</font><font color="#000000">(</font><font color="#2a00ff">&#34;confirm&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">confirm.put</font><font color="#000000">(</font><font color="#2a00ff">&#34;data&#34;</font><font color="#000000">,&nbsp;confirmController.getInitialComponent</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">initialPanel.pushContent</font><font color="#000000">(</font><font color="#000000">confirm</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">formNOK</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//in&nbsp;the&nbsp;error&nbsp;case,&nbsp;let&nbsp;the&nbsp;error&nbsp;messages&nbsp;be&nbsp;rerendered&nbsp;in&nbsp;AJAX&nbsp;mode</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//this&nbsp;will&nbsp;change</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.flc.setDirty</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f5fbf">/**</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@see&nbsp;</font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer,&nbsp;org.olat.core.gui.control.Controller,&nbsp;org.olat.core.gui.UserRequest)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@SuppressWarnings</font><font color="#000000">(</font><font color="#2a00ff">&#34;unused&#34;</font><font color="#000000">)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">FormItemContainer&nbsp;formLayout,&nbsp;Controller&nbsp;listener,&nbsp;UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">/*</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;create&nbsp;a&nbsp;form&nbsp;with&nbsp;a&nbsp;title&nbsp;and&nbsp;4&nbsp;input&nbsp;fields&nbsp;to&nbsp;enter&nbsp;some&nbsp;persons&nbsp;data</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setFormTitle</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo_flexi_form_simpleform&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>final&nbsp;</b></font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">defaultDisplaySize&nbsp;=&nbsp;</font><font color="#990000">32</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>final&nbsp;</b></font><font color="#7f0055"><b>boolean&nbsp;</b></font><font color="#000000">inputMode&nbsp;=&nbsp;!personData.isReadOnly</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">firstName&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;firstname&#34;</font><font color="#000000">,&nbsp;personData.getFirstName</font><font color="#000000">()){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.firstname&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.mustbefilled&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setMandatory</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">firstName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">lastName&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.lastname&#34;</font><font color="#000000">,&nbsp;personData.getLastName</font><font color="#000000">()){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;guidemo.flexi.form.notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.lastname&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.mustbefilled&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setMandatory</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">lastName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">institution&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;institution&#34;</font><font color="#000000">,&nbsp;personData.getInstitution</font><font color="#000000">()){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;guidemo.flexi.form.notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.institution&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">institution</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//submit&nbsp;only&nbsp;if&nbsp;in&nbsp;input&nbsp;mode</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">submit&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">FormSubmit</font><font color="#000000">(</font><font color="#2a00ff">&#34;submit&#34;</font><font color="#000000">,</font><font color="#2a00ff">&#34;submit&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">submit</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#000000">}</font></code>
-    
-   </td>
-  <!-- end source code -->
-   </tr>
-</table>
-</div>
-<!-- =       END of automatically generated HTML code       = -->
-<!-- ======================================================== -->
\ No newline at end of file
diff --git a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_withchooser.html b/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_withchooser.html
deleted file mode 100644
index dfaecaa2bbd..00000000000
--- a/src/main/java/org/olat/gui/demo/guidemo/_content/guidemo_flexi_form_withchooser.html
+++ /dev/null
@@ -1,250 +0,0 @@
-$r.render("sourceview")
-
-<!-- ======================================================== -->
-<!-- = Java Sourcecode to HTML automatically converted code = -->
-<!-- =   Java2Html Converter 5.0 [2006-02-26] by Markus Gebhard  markus@jave.de   = -->
-<!-- =     Further information: http://www.java2html.de     = -->
-<div align="left" class="java">
-<table border="0" cellpadding="3" cellspacing="0" bgcolor="#ffffff">
-   <tr>
-  <!-- start source code -->
-   <td nowrap="nowrap" valign="top" align="left">
-    <code>
-<font color="#7f0055"><b>public&nbsp;class&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormSubworkflow&nbsp;</font><font color="#7f0055"><b>extends&nbsp;</b></font><font color="#000000">FormBasicController&nbsp;</font><font color="#7f0055"><b>implements&nbsp;</b></font><font color="#000000">Controller&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormPersonData&nbsp;personData;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">TextElement&nbsp;firstName;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">TextElement&nbsp;lastName;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">FormLayoutContainer&nbsp;horizontalLayout;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">TextElement&nbsp;institution;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">FormLink&nbsp;choose;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">FormSubmit&nbsp;submit;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">String</font><font color="#000000">[]&nbsp;</font><font color="#000000">values;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormSubworkflowTheChooser&nbsp;subworkflowTheChooser;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">CloseableModalController&nbsp;cmc;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>public&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormSubworkflow</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;WindowControl&nbsp;wControl,&nbsp;GuiDemoFlexiFormPersonData&nbsp;data</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>super</b></font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;wControl</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;first&nbsp;you&nbsp;may&nbsp;preprocess&nbsp;data&nbsp;to&nbsp;fit&nbsp;into&nbsp;the&nbsp;form&nbsp;items</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;if&nbsp;all&nbsp;preprocessing&nbsp;is&nbsp;done,&nbsp;create&nbsp;the&nbsp;form&nbsp;items</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;example&nbsp;for&nbsp;simple&nbsp;preprocessing&nbsp;-&nbsp;check&nbsp;for&nbsp;NULL</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">data&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData&nbsp;=&nbsp;data;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}&nbsp;</font><font color="#7f0055"><b>else&nbsp;</b></font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">personData&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormPersonData</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">values&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">String</font><font color="#000000">[]{</font><font color="#2a00ff">&#34;Faculty&nbsp;of&nbsp;Medicine&#34;</font><font color="#000000">,</font><font color="#2a00ff">&#34;Vetsuisse&nbsp;Faculty&#34;</font><font color="#000000">,</font><font color="#2a00ff">&#34;Faculty&nbsp;of&nbsp;Arts&#34;</font><font color="#000000">,</font><font color="#2a00ff">&#34;Faculty&nbsp;of&nbsp;Science&#34;</font><font color="#000000">,</font><font color="#2a00ff">&#34;All&nbsp;institutes&nbsp;and&nbsp;clinics&nbsp;of&nbsp;UZH&#34;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;calls&nbsp;our&nbsp;initForm(formlayout,listener,ureq)&nbsp;with&nbsp;default&nbsp;values.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">ureq</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;after&nbsp;initialisation&nbsp;you&nbsp;may&nbsp;need&nbsp;to&nbsp;do&nbsp;some&nbsp;stuff</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;but&nbsp;typically&nbsp;initForm(..)&nbsp;is&nbsp;the&nbsp;last&nbsp;call&nbsp;in&nbsp;the&nbsp;constructor.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f5fbf">/**</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@see&nbsp;</font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#doDispose(boolean)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">doDispose</font><font color="#000000">(</font><font color="#7f0055"><b>boolean&nbsp;</b></font><font color="#000000">asynchronous</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f5fbf">/**</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@see&nbsp;</font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#formOK(org.olat.core.gui.UserRequest)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">formOK</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//this&nbsp;is&nbsp;a&nbsp;work-around&nbsp;for&nbsp;the&nbsp;current&nbsp;flexi&nbsp;form&nbsp;infrastructure&nbsp;to&nbsp;render</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//errormessages&nbsp;in &nbsp;the&nbsp;case&nbsp;of&nbsp;# if&nbsp;constructs&nbsp;in&nbsp;the&nbsp;velocity&nbsp;page</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.flc.setDirty</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">formNOK</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//this&nbsp;is&nbsp;a&nbsp;work-around&nbsp;for&nbsp;the&nbsp;current&nbsp;flexi&nbsp;form&nbsp;infrastructure&nbsp;to&nbsp;render</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//errormessages&nbsp;in&nbsp;the&nbsp;case&nbsp;of&nbsp;# if&nbsp;constructs&nbsp;in&nbsp;the&nbsp;velocity&nbsp;page</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.flc.setDirty</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;&nbsp;</b></font><font color="#000000">formInnerEvent</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;FormItem&nbsp;source,&nbsp;FormEvent&nbsp;event</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">source&nbsp;==&nbsp;choose</font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//choose&nbsp;link&nbsp;clicked</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//show&nbsp;a&nbsp;subworkflow&nbsp;in&nbsp;a&nbsp;modal&nbsp;dialog&nbsp;without&nbsp;loosing&nbsp;fromdata</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;work&nbsp;around&nbsp;to&nbsp;disable&nbsp;orange&nbsp;button&nbsp;and&nbsp;alert&nbsp;box&nbsp;of&nbsp;&#34;unsubmitted&nbsp;form&nbsp;onscreen&#34;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;this&nbsp;will&nbsp;change&nbsp;within&nbsp;the&nbsp;next&nbsp;release.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.flc.getRootForm</font><font color="#000000">()</font><font color="#000000">.setDirtyMarking</font><font color="#000000">(</font><font color="#7f0055"><b>false</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">subworkflowTheChooser&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormSubworkflowTheChooser</font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;getWindowControl</font><font color="#000000">()</font><font color="#000000">,&nbsp;values,&nbsp;institution.getValue</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;get&nbsp;informed&nbsp;if&nbsp;subworkflow&nbsp;has&nbsp;submitted&nbsp;=&gt;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">subworkflowTheChooser.addControllerListener</font><font color="#000000">(</font><font color="#7f0055"><b>this</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">cmc&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">CloseableModalController</font><font color="#000000">(</font><font color="#000000">getWindowControl</font><font color="#000000">()</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;close&#34;</font><font color="#000000">,&nbsp;subworkflowTheChooser.getInitialComponent</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;get&nbsp;informed&nbsp;if&nbsp;modal&nbsp;dialog&nbsp;is&nbsp;closed&nbsp;=&gt;&nbsp;this&nbsp;means&nbsp;canceling&nbsp;the&nbsp;workflow&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">cmc.addControllerListener</font><font color="#000000">(</font><font color="#7f0055"><b>this</b></font><font color="#000000">)</font><font color="#000000">;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">cmc.activate</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>return</b></font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">event</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;Controller&nbsp;source,&nbsp;org.olat.core.gui.control.Event&nbsp;event</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">source&nbsp;==&nbsp;cmc</font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">event&nbsp;==&nbsp;CloseableModalController.CLOSE_MODAL_EVENT</font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;work&nbsp;around&nbsp;to&nbsp;re-enable&nbsp;orange&nbsp;button&nbsp;and&nbsp;alert&nbsp;box&nbsp;of&nbsp;&#34;unsubmitted&nbsp;form&nbsp;onscreen&#34;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;this&nbsp;will&nbsp;change&nbsp;within&nbsp;the&nbsp;next&nbsp;release.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.flc.getRootForm</font><font color="#000000">()</font><font color="#000000">.setDirtyMarking</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;modal&nbsp;dialog&nbsp;is&nbsp;closed</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;modal&nbsp;dialog&nbsp;has&nbsp;already&nbsp;deactivated&nbsp;itself&nbsp;(you&nbsp;would&nbsp;get&nbsp;a&nbsp;redscreen&nbsp;otherwise)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">subworkflowTheChooser.dispose</font><font color="#000000">(</font><font color="#7f0055"><b>false</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#7f0055"><b>else&nbsp;if</b></font><font color="#000000">(</font><font color="#000000">source&nbsp;==&nbsp;subworkflowTheChooser</font><font color="#000000">){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//some&nbsp;value&nbsp;is&nbsp;choosen</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//set&nbsp;the&nbsp;value&nbsp;and&nbsp;close&nbsp;dialog</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">institution.setValue</font><font color="#000000">(</font><font color="#000000">subworkflowTheChooser.getSelected</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">cmc.deactivate</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">subworkflowTheChooser.dispose</font><font color="#000000">(</font><font color="#7f0055"><b>false</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;work&nbsp;around&nbsp;to&nbsp;re-enable&nbsp;orange&nbsp;button&nbsp;and&nbsp;alert&nbsp;box&nbsp;of&nbsp;&#34;unsubmitted&nbsp;form&nbsp;onscreen&#34;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;this&nbsp;will&nbsp;change&nbsp;within&nbsp;the&nbsp;next&nbsp;release.</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.flc.getRootForm</font><font color="#000000">()</font><font color="#000000">.setDirtyMarking</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f5fbf">/**</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;</font><font color="#7f9fbf">@see&nbsp;</font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer,</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.olat.core.gui.control.Controller,&nbsp;org.olat.core.gui.UserRequest)</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;</font><font color="#3f5fbf">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">FormItemContainer&nbsp;formLayout,&nbsp;Controller&nbsp;listener,&nbsp;UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">/*</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;create&nbsp;a&nbsp;form&nbsp;with&nbsp;a&nbsp;title&nbsp;and&nbsp;4&nbsp;input&nbsp;fields&nbsp;to&nbsp;enter&nbsp;some&nbsp;persons&nbsp;data</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setFormTitle</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo_flexi_form_withchooser&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>final&nbsp;</b></font><font color="#7f0055"><b>int&nbsp;</b></font><font color="#000000">defaultDisplaySize&nbsp;=&nbsp;</font><font color="#990000">32</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>final&nbsp;</b></font><font color="#7f0055"><b>boolean&nbsp;</b></font><font color="#000000">inputMode&nbsp;=&nbsp;!personData.isReadOnly</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">firstName&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;firstname&#34;</font><font color="#000000">,&nbsp;personData.getFirstName</font><font color="#000000">())&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.firstname&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.mustbefilled&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setMandatory</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">firstName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">lastName&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.lastname&#34;</font><font color="#000000">,&nbsp;personData.getLastName</font><font color="#000000">())&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;guidemo.flexi.form.notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.lastname&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.mustbefilled&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setMandatory</font><font color="#000000">(</font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">lastName</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">/*</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;-&nbsp;create&nbsp;a&nbsp;composite&nbsp;element</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;-&nbsp;text&nbsp;element&nbsp;and&nbsp;to&nbsp;the&nbsp;left&nbsp;a&nbsp;choose&nbsp;link</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;-&nbsp;the&nbsp;label&nbsp;of&nbsp;the&nbsp;textelement&nbsp;is&nbsp;set&nbsp;as&nbsp;the&nbsp;label&nbsp;of&nbsp;the&nbsp;layouting&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*&nbsp;container.&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">*/</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">horizontalLayout&nbsp;=&nbsp;</font><font color="#000000">(</font><font color="#000000">FormLayoutContainer</font><font color="#000000">)</font><font color="#000000">FormLayoutContainer.createHorizontalFormLayout</font><font color="#000000">(</font><font color="#2a00ff">&#34;chooser&#34;</font><font color="#000000">,&nbsp;getTranslator</font><font color="#000000">())</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">horizontalLayout.&nbsp;&nbsp;setLabel</font><font color="#000000">(</font><font color="#2a00ff">&#34;guidemo.flexi.form.institution&#34;</font><font color="#000000">,&nbsp;</font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">horizontalLayout</font><font color="#000000">)</font><font color="#000000">;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">institution&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;institution&#34;</font><font color="#000000">,&nbsp;personData.getInstitution</font><font color="#000000">())&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize&nbsp;=&nbsp;defaultDisplaySize;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;guidemo.flexi.form.notlongerthan&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">setEnabled</font><font color="#000000">(</font><font color="#7f0055"><b>false</b></font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">horizontalLayout.add</font><font color="#000000">(</font><font color="#000000">institution</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">choose&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">FormLinkImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;choose&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">horizontalLayout.add</font><font color="#000000">(</font><font color="#000000">choose</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if&nbsp;</b></font><font color="#000000">(</font><font color="#000000">inputMode</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;submit&nbsp;only&nbsp;if&nbsp;in&nbsp;input&nbsp;mode</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">submit&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">FormSubmit</font><font color="#000000">(</font><font color="#2a00ff">&#34;submit&#34;</font><font color="#000000">,&nbsp;</font><font color="#2a00ff">&#34;submit&#34;</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">submit</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f7f5f">//this&nbsp;innerclass&nbsp;represents&nbsp;the&nbsp;subworkflow</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#3f7f5f">//but&nbsp;it&nbsp;could&nbsp;be&nbsp;any&nbsp;top&nbsp;level&nbsp;controller</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;class&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormSubworkflowTheChooser&nbsp;</font><font color="#7f0055"><b>extends&nbsp;</b></font><font color="#000000">FormBasicController&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">String</font><font color="#000000">[]&nbsp;</font><font color="#000000">entries;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">SingleSelection&nbsp;entrySelector;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>private&nbsp;</b></font><font color="#000000">String&nbsp;selection;</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>public&nbsp;</b></font><font color="#000000">GuiDemoFlexiFormSubworkflowTheChooser</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;WindowControl&nbsp;wControl,&nbsp;String</font><font color="#000000">[]&nbsp;</font><font color="#000000">values,&nbsp;String&nbsp;selection</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>super</b></font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;wControl</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.entries&nbsp;=&nbsp;values;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>this</b></font><font color="#000000">.selection&nbsp;=&nbsp;selection;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">ureq</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">doDispose</font><font color="#000000">(</font><font color="#7f0055"><b>boolean&nbsp;</b></font><font color="#000000">asynchronous</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">formOK</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#3f7f5f">//&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">formInnerEvent</font><font color="#000000">(</font><font color="#000000">UserRequest&nbsp;ureq,&nbsp;FormItem&nbsp;source,&nbsp;FormEvent&nbsp;event</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">fireEvent</font><font color="#000000">(</font><font color="#000000">ureq,&nbsp;Event.DONE_EVENT</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff"></font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#646464">@Override</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>protected&nbsp;</b></font><font color="#7f0055"><b>void&nbsp;</b></font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">FormItemContainer&nbsp;formLayout,&nbsp;Controller&nbsp;listener,&nbsp;UserRequest&nbsp;ureq</font><font color="#000000">)&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">entrySelector&nbsp;=&nbsp;</font><font color="#7f0055"><b>new&nbsp;</b></font><font color="#000000">SingleSelectionImpl</font><font color="#000000">(</font><font color="#2a00ff">&#34;entries&#34;</font><font color="#000000">,&nbsp;SingleSelectionImpl.createVerticalLayout</font><font color="#000000">(</font><font color="#2a00ff">&#34;entries&#34;</font><font color="#000000">))&nbsp;{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">{</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">keys&nbsp;=&nbsp;entries;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">values&nbsp;=&nbsp;entries;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">selection&nbsp;!=&nbsp;</font><font color="#7f0055"><b>null&nbsp;</b></font><font color="#000000">&amp;&amp;&nbsp;!selection.equals</font><font color="#000000">(</font><font color="#2a00ff">&#34;&#34;</font><font color="#000000">)){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">select</font><font color="#000000">(</font><font color="#000000">selection,true</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">entrySelector.addActionListener</font><font color="#000000">(</font><font color="#000000">this,&nbsp;FormEvent.ONCLICK</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">entrySelector</font><font color="#000000">)</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">String&nbsp;getSelected</font><font color="#000000">(){</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#7f0055"><b>return&nbsp;</b></font><font color="#000000">entrySelector.getSelectedKey</font><font color="#000000">()</font><font color="#000000">;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><font color="#000000">}</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#ffffff">&nbsp;&nbsp;</font><br />
-<font color="#000000">}</font></code>
-    
-   </td>
-  <!-- end source code -->
-   </tr>
-</table>
-</div>
-<!-- =       END of automatically generated HTML code       = -->
-<!-- ======================================================== -->
diff --git a/src/test/java/org/olat/core/gui/render/VelocityTemplateTest.java b/src/test/java/org/olat/core/gui/render/VelocityTemplateTest.java
new file mode 100644
index 00000000000..1de43c0f8a0
--- /dev/null
+++ b/src/test/java/org/olat/core/gui/render/VelocityTemplateTest.java
@@ -0,0 +1,117 @@
+/**
+ * <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.core.gui.render;
+
+import java.io.File;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.context.Context;
+import org.apache.velocity.runtime.RuntimeConstants;
+import org.junit.Assert;
+import org.junit.Test;
+import org.olat.core.gui.render.velocity.VelocityModule;
+import org.olat.core.logging.OLog;
+import org.olat.core.logging.Tracing;
+
+/**
+ * This test parse all velocity templates and check if they
+ * are parseable.
+ * 
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class VelocityTemplateTest {
+	private static final OLog log = Tracing.createLoggerFor(VelocityTemplateTest.class);
+
+	public static final String MAIN_JAVA = "src/main/java";
+	
+	private VelocityEngine engine;
+	
+	@Test
+	public void testTemplates() {
+		engine = getEngine();
+		File javaSources = new File(MAIN_JAVA);
+		List<Exception> exs = new ArrayList<Exception>();
+		testTemplates("", javaSources, exs);
+		
+		for(Exception ex:exs) {
+			log.error(ex.getMessage());
+		}
+		Assert.assertEquals(0, exs.size());
+	}
+	
+	private void testTemplates(String dir, File file, List<Exception> exs) {
+		String name = file.getName();
+		if("_content".equals(name)) {
+			File[] templates = file.listFiles();
+			for(File template:templates) {
+				String templateName = template.getName();
+				if(templateName.endsWith(".html")) {
+					try {
+						String path = dir + templateName;
+						StringWriter writer = new StringWriter();
+						Context context = new VelocityContext();
+						Template veloTemplate = engine.getTemplate(path);
+						veloTemplate.merge(context, writer);
+					} catch (Exception e) {
+						exs.add(e);
+					}
+				}
+			}
+		} else if(file.isDirectory()) {
+			File[] files = file.listFiles();
+			for(File child:files) {
+				String subDir = dir + child.getName() + "/";
+				testTemplates(subDir, child, exs);
+			}
+		}
+	}
+	
+	private VelocityEngine getEngine() {
+		Properties p = new Properties();
+		p.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, "org.apache.velocity.runtime.log.SimpleLog4JLogSystem");
+		p.setProperty("runtime.log.logsystem.log4j.category", "syslog");
+		p.setProperty(RuntimeConstants.INPUT_ENCODING, VelocityModule.getInputEncoding());
+		p.setProperty(RuntimeConstants.OUTPUT_ENCODING, VelocityModule.getOutputEncoding());
+
+		p.setProperty(RuntimeConstants.RESOURCE_LOADER, "file, classpath");					
+		p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
+		p.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, MAIN_JAVA);
+		p.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_CACHE, "false");								
+		p.setProperty("file.resource.loader.modificationCheckInterval", "3");
+
+		p.setProperty("classpath.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
+		p.setProperty("classpath.resource.loader.cache", "false");
+		
+		p.setProperty(RuntimeConstants.RESOURCE_MANAGER_LOGWHENFOUND, "false");
+		p.setProperty(RuntimeConstants.VM_LIBRARY, "velocity/olat_velocimacros.vm");
+		p.setProperty(RuntimeConstants.VM_LIBRARY_AUTORELOAD, "false");
+
+		VelocityEngine ve = new VelocityEngine();
+		ve.init(p);
+		return ve;
+	}
+}
diff --git a/src/test/java/org/olat/test/AllTestsJunit4.java b/src/test/java/org/olat/test/AllTestsJunit4.java
index 1134ba49ec6..2bee8fca504 100644
--- a/src/test/java/org/olat/test/AllTestsJunit4.java
+++ b/src/test/java/org/olat/test/AllTestsJunit4.java
@@ -61,7 +61,7 @@ import org.junit.runners.Suite;
 	org.olat.core.util.StringHelperTest.class,
 	org.olat.core.util.FormatterTest.class,
 	org.olat.core.id.context.BusinessControlFactoryTest.class,
-
+	org.olat.core.gui.render.VelocityTemplateTest.class,
 	org.olat.note.NoteTest.class,//ok
 	org.olat.user.UserPropertiesPerformanceTest.class,//ok
 	org.olat.user.EmailCheckPerformanceTest.class,//fail
-- 
GitLab