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'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"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">GuiDemoFlexiFormCustomlayout</font><font color="#000000">(</font><font color="#000000">UserRequest ureq, WindowControl wControl, GuiDemoFlexiFormPersonData data</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// this whole class is copy-pasted from the GuiDemoFlexiForm.java</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// but the super constructor is called with a velocity page which serves then</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// as layouting velocity page.</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// inside this page one can render all the form elements with the wellknown</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// $r.render("compName") paradigma. But with the form comes some naming convention</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// to render the label, error, example of a form element.</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// read the instructions in the customformlayout velocity page.</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>super</b></font><font color="#000000">(</font><font color="#000000">ureq, wControl, </font><font color="#2a00ff">"customformlayout"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// first you may preprocess data to fit into the form items</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// if all preprocessing is done, create the form items</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// example for simple preprocessing - check for NULL</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">data != </font><font color="#7f0055"><b>null</b></font><font color="#000000">){</font><br /> -<font color="#ffffff"> </font><font color="#000000">personData = data;</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#7f0055"><b>else</b></font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#000000">personData = </font><font color="#7f0055"><b>new </b></font><font color="#000000">GuiDemoFlexiFormPersonData</font><font color="#000000">()</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// calls our initForm(formlayout,listener,ureq) with default values.</font><br /> -<font color="#ffffff"> </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"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// after initialisation you may need to do some stuff</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// but typically initForm(..) is the last call in the constructor.</font><br /> -<font color="#ffffff"> </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"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">FormItemContainer formLayout, Controller listener, UserRequest ureq</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#000000">setFormTitle</font><font color="#000000">(</font><font color="#2a00ff">"guidemo_flexi_form_hideunhide"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#7f0055"><b>int </b></font><font color="#000000">defaultDisplaySize = </font><font color="#990000">32</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#7f0055"><b>boolean </b></font><font color="#000000">inputMode = !personData.isReadOnly</font><font color="#000000">()</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">/*</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">* hide unhide chooser</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">*/</font><br /> -<font color="#ffffff"> </font><font color="#000000">checkbox = </font><font color="#7f0055"><b>new </b></font><font color="#000000">MultipleSelectionElementImpl</font><font color="#000000">(</font><font color="#2a00ff">"checkbox"</font><font color="#000000">, MultipleSelectionElementImpl.createVerticalLayout</font><font color="#000000">(</font><font color="#2a00ff">"checkbox"</font><font color="#000000">)) {</font><br /> -<font color="#ffffff"> </font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.show"</font><font color="#000000">, </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">keys = </font><font color="#7f0055"><b>new </b></font><font color="#000000">String</font><font color="#000000">[] { </font><font color="#2a00ff">"ison" </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">values = </font><font color="#7f0055"><b>new </b></font><font color="#000000">String</font><font color="#000000">[] { </font><font color="#2a00ff">"" </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">select</font><font color="#000000">(</font><font color="#2a00ff">"ison"</font><font color="#000000">, </font><font color="#7f0055"><b>true</b></font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// add to velocity container</font><br /> -<font color="#ffffff"> </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"> </font><font color="#3f7f5f">// register for on click event to hide/disable other elements</font><br /> -<font color="#ffffff"> </font><font color="#000000">checkbox.addActionListener</font><font color="#000000">(</font><font color="#000000">listener, FormEvent.ONCLICK</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//rule to hide/unhide at the end</font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><font color="#000000">firstName = </font><font color="#7f0055"><b>new </b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">"firstname"</font><font color="#000000">, personData.getFirstName</font><font color="#000000">()){</font><br /> -<font color="#ffffff"> </font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize = defaultDisplaySize;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">, </font><font color="#2a00ff">"notlongerthan"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.firstname"</font><font color="#000000">, </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.mustbefilled"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">lastName = </font><font color="#7f0055"><b>new </b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.lastname"</font><font color="#000000">, personData.getLastName</font><font color="#000000">()){</font><br /> -<font color="#ffffff"> </font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize = defaultDisplaySize;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">, </font><font color="#2a00ff">"guidemo.flexi.form.notlongerthan"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.lastname"</font><font color="#000000">, </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.mustbefilled"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">institution = </font><font color="#7f0055"><b>new </b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">"institution"</font><font color="#000000">, personData.getInstitution</font><font color="#000000">()){</font><br /> -<font color="#ffffff"> </font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize = defaultDisplaySize;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">, </font><font color="#2a00ff">"guidemo.flexi.form.notlongerthan"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.institution"</font><font color="#000000">, </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><br /> -<font color="#ffffff"> </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"> </font><font color="#3f7f5f">//submit only if in input mode</font><br /> -<font color="#ffffff"> </font><font color="#000000">submit = </font><font color="#7f0055"><b>new </b></font><font color="#000000">FormSubmit</font><font color="#000000">(</font><font color="#2a00ff">"submit"</font><font color="#000000">,</font><font color="#2a00ff">"submit"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">/*</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">* now the rules to hide unhide </font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">*/</font><br /> -<font color="#ffffff"> </font><font color="#000000">Set<FormItem> targets = </font><font color="#7f0055"><b>new </b></font><font color="#000000">HashSet<FormItem></font><font color="#000000">(){</font><br /> -<font color="#ffffff"> </font><font color="#000000">{</font><br /> -<font color="#ffffff"> </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"> </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"> </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"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">RulesFactory.createHideRule</font><font color="#000000">(</font><font color="#000000">checkbox, null, targets, formLayout</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">RulesFactory.createShowRule</font><font color="#000000">(</font><font color="#000000">checkbox, </font><font color="#2a00ff">"ison"</font><font color="#000000">, targets, formLayout</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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 class </b></font><font color="#000000">GuiDemoFlexiForm </font><font color="#7f0055"><b>extends </b></font><font color="#000000">FormBasicController </font><font color="#000000">{</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">TextElement firstName;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">TextElement lastName;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">TextElement institution;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">Submit submit;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">GuiDemoFlexiFormPersonData personData;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">VelocityContainer confirm;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">GuiDemoFlexiForm confirmController;</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">GuiDemoFlexiForm</font><font color="#000000">(</font><font color="#000000">UserRequest ureq, WindowControl wControl, GuiDemoFlexiFormPersonData data</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>super</b></font><font color="#000000">(</font><font color="#000000">ureq, wControl</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// first you may preprocess data to fit into the form items</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// if all preprocessing is done, create the form items</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// example for simple preprocessing - check for NULL</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">data != </font><font color="#7f0055"><b>null</b></font><font color="#000000">){</font><br /> -<font color="#ffffff"> </font><font color="#000000">personData = data;</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#7f0055"><b>else</b></font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#000000">personData = </font><font color="#7f0055"><b>new </b></font><font color="#000000">GuiDemoFlexiFormPersonData</font><font color="#000000">()</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// calls our initForm(formlayout,listener,ureq) with default values.</font><br /> -<font color="#ffffff"> </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"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// after initialisation you may need to do some stuff</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// but typically initForm(..) is the last call in the constructor.</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@see </font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#doDispose(boolean)</font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#646464">@SuppressWarnings</font><font color="#000000">(</font><font color="#2a00ff">"unused"</font><font color="#000000">)</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">doDispose</font><font color="#000000">(</font><font color="#7f0055"><b>boolean </b></font><font color="#000000">asynchronous</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// TODO Auto-generated method stub</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@see </font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#formOK(org.olat.core.gui.UserRequest)</font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#646464">@SuppressWarnings</font><font color="#000000">(</font><font color="#2a00ff">"unused"</font><font color="#000000">)</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">formOK</font><font color="#000000">(</font><font color="#000000">UserRequest ureq</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// this method is called if the form has validated</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// which means that all form items are filled without error</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// and all complex business rules validated also to true.</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// typically the form values are now read out and persisted</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// in our case, save value to data object and prepare a confirm page</font><br /> -<font color="#ffffff"> </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"> </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"> </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"> </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"> </font><font color="#3f7f5f">//show the same form in readonly mode.</font><br /> -<font color="#ffffff"> </font><font color="#000000">confirmController = </font><font color="#7f0055"><b>new </b></font><font color="#000000">GuiDemoFlexiForm</font><font color="#000000">(</font><font color="#000000">ureq, getWindowControl</font><font color="#000000">()</font><font color="#000000">, personData</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">confirm = createVelocityContainer</font><font color="#000000">(</font><font color="#2a00ff">"confirm"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">confirm.put</font><font color="#000000">(</font><font color="#2a00ff">"data"</font><font color="#000000">, confirmController.getInitialComponent</font><font color="#000000">())</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">formNOK</font><font color="#000000">(</font><font color="#000000">UserRequest ureq</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//in the error case, let the error messages be rerendered in AJAX mode</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//this will change</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@see </font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#initForm(org.olat.core.gui.components.form.flexible.FormItemContainer, org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest)</font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#646464">@SuppressWarnings</font><font color="#000000">(</font><font color="#2a00ff">"unused"</font><font color="#000000">)</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">FormItemContainer formLayout, Controller listener, UserRequest ureq</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">/*</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">* create a form with a title and 4 input fields to enter some persons data</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">*/</font><br /> -<font color="#ffffff"> </font><font color="#000000">setFormTitle</font><font color="#000000">(</font><font color="#2a00ff">"guidemo_flexi_form_simpleform"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#7f0055"><b>int </b></font><font color="#000000">defaultDisplaySize = </font><font color="#990000">32</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#7f0055"><b>boolean </b></font><font color="#000000">inputMode = !personData.isReadOnly</font><font color="#000000">()</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">firstName = </font><font color="#7f0055"><b>new </b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">"firstname"</font><font color="#000000">, personData.getFirstName</font><font color="#000000">()){</font><br /> -<font color="#ffffff"> </font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize = defaultDisplaySize;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">, </font><font color="#2a00ff">"notlongerthan"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.firstname"</font><font color="#000000">, </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.mustbefilled"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">lastName = </font><font color="#7f0055"><b>new </b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.lastname"</font><font color="#000000">, personData.getLastName</font><font color="#000000">()){</font><br /> -<font color="#ffffff"> </font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize = defaultDisplaySize;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">, </font><font color="#2a00ff">"guidemo.flexi.form.notlongerthan"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.lastname"</font><font color="#000000">, </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.mustbefilled"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">institution = </font><font color="#7f0055"><b>new </b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">"institution"</font><font color="#000000">, personData.getInstitution</font><font color="#000000">()){</font><br /> -<font color="#ffffff"> </font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize = defaultDisplaySize;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">, </font><font color="#2a00ff">"guidemo.flexi.form.notlongerthan"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.institution"</font><font color="#000000">, </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><br /> -<font color="#ffffff"> </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"> </font><font color="#3f7f5f">//submit only if in input mode</font><br /> -<font color="#ffffff"> </font><font color="#000000">submit = </font><font color="#7f0055"><b>new </b></font><font color="#000000">FormSubmit</font><font color="#000000">(</font><font color="#2a00ff">"submit"</font><font color="#000000">,</font><font color="#2a00ff">"submit"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </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 class </b></font><font color="#000000">GuiDemoFlexiFormSubworkflow </font><font color="#7f0055"><b>extends </b></font><font color="#000000">FormBasicController </font><font color="#7f0055"><b>implements </b></font><font color="#000000">Controller </font><font color="#000000">{</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">GuiDemoFlexiFormPersonData personData;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">TextElement firstName;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">TextElement lastName;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">FormLayoutContainer horizontalLayout;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">TextElement institution;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">FormLink choose;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">FormSubmit submit;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">String</font><font color="#000000">[] </font><font color="#000000">values;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">GuiDemoFlexiFormSubworkflowTheChooser subworkflowTheChooser;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">CloseableModalController cmc;</font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">GuiDemoFlexiFormSubworkflow</font><font color="#000000">(</font><font color="#000000">UserRequest ureq, WindowControl wControl, GuiDemoFlexiFormPersonData data</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>super</b></font><font color="#000000">(</font><font color="#000000">ureq, wControl</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// first you may preprocess data to fit into the form items</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// if all preprocessing is done, create the form items</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// example for simple preprocessing - check for NULL</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>if </b></font><font color="#000000">(</font><font color="#000000">data != </font><font color="#7f0055"><b>null</b></font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#000000">personData = data;</font><br /> -<font color="#ffffff"> </font><font color="#000000">} </font><font color="#7f0055"><b>else </b></font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#000000">personData = </font><font color="#7f0055"><b>new </b></font><font color="#000000">GuiDemoFlexiFormPersonData</font><font color="#000000">()</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#000000">values = </font><font color="#7f0055"><b>new </b></font><font color="#000000">String</font><font color="#000000">[]{</font><font color="#2a00ff">"Faculty of Medicine"</font><font color="#000000">,</font><font color="#2a00ff">"Vetsuisse Faculty"</font><font color="#000000">,</font><font color="#2a00ff">"Faculty of Arts"</font><font color="#000000">,</font><font color="#2a00ff">"Faculty of Science"</font><font color="#000000">,</font><font color="#2a00ff">"All institutes and clinics of UZH"</font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// calls our initForm(formlayout,listener,ureq) with default values.</font><br /> -<font color="#ffffff"> </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"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// after initialisation you may need to do some stuff</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// but typically initForm(..) is the last call in the constructor.</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@see </font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#doDispose(boolean)</font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">doDispose</font><font color="#000000">(</font><font color="#7f0055"><b>boolean </b></font><font color="#000000">asynchronous</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// TODO Auto-generated method stub</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@see </font><font color="#3f5fbf">org.olat.core.gui.components.form.flexible.impl.FormBasicController#formOK(org.olat.core.gui.UserRequest)</font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">formOK</font><font color="#000000">(</font><font color="#000000">UserRequest ureq</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//this is a work-around for the current flexi form infrastructure to render</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//errormessages in the case of # if constructs in the velocity page</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">formNOK</font><font color="#000000">(</font><font color="#000000">UserRequest ureq</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//this is a work-around for the current flexi form infrastructure to render</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//errormessages in the case of # if constructs in the velocity page</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">formInnerEvent</font><font color="#000000">(</font><font color="#000000">UserRequest ureq, FormItem source, FormEvent event</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">source == choose</font><font color="#000000">){</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//choose link clicked</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//show a subworkflow in a modal dialog without loosing fromdata</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// work around to disable orange button and alert box of "unsubmitted form onscreen"</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// this will change within the next release.</font><br /> -<font color="#ffffff"> </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"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//</font><br /> -<font color="#ffffff"> </font><font color="#000000">subworkflowTheChooser = </font><font color="#7f0055"><b>new </b></font><font color="#000000">GuiDemoFlexiFormSubworkflowTheChooser</font><font color="#000000">(</font><font color="#000000">ureq, getWindowControl</font><font color="#000000">()</font><font color="#000000">, values, institution.getValue</font><font color="#000000">())</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// get informed if subworkflow has submitted =></font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">cmc = </font><font color="#7f0055"><b>new </b></font><font color="#000000">CloseableModalController</font><font color="#000000">(</font><font color="#000000">getWindowControl</font><font color="#000000">()</font><font color="#000000">, </font><font color="#2a00ff">"close"</font><font color="#000000">, subworkflowTheChooser.getInitialComponent</font><font color="#000000">())</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// get informed if modal dialog is closed => this means canceling the workflow </font><br /> -<font color="#ffffff"> </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">; </font><br /> -<font color="#ffffff"> </font><font color="#000000">cmc.activate</font><font color="#000000">()</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>return</b></font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">event</font><font color="#000000">(</font><font color="#000000">UserRequest ureq, Controller source, org.olat.core.gui.control.Event event</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">source == cmc</font><font color="#000000">){</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">event == CloseableModalController.CLOSE_MODAL_EVENT</font><font color="#000000">){</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// work around to re-enable orange button and alert box of "unsubmitted form onscreen"</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// this will change within the next release.</font><br /> -<font color="#ffffff"> </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"> </font><font color="#3f7f5f">// modal dialog is closed</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// modal dialog has already deactivated itself (you would get a redscreen otherwise)</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#7f0055"><b>else if</b></font><font color="#000000">(</font><font color="#000000">source == subworkflowTheChooser</font><font color="#000000">){</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//some value is choosen</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//set the value and close dialog</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">cmc.deactivate</font><font color="#000000">()</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// work around to re-enable orange button and alert box of "unsubmitted form onscreen"</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// this will change within the next release.</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">/**</font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">* </font><font color="#7f9fbf">@see </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"> </font><font color="#3f5fbf">* org.olat.core.gui.control.Controller, org.olat.core.gui.UserRequest)</font><br /> -<font color="#ffffff"> </font><font color="#3f5fbf">*/</font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">FormItemContainer formLayout, Controller listener, UserRequest ureq</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">/*</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">* create a form with a title and 4 input fields to enter some persons data</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">*/</font><br /> -<font color="#ffffff"> </font><font color="#000000">setFormTitle</font><font color="#000000">(</font><font color="#2a00ff">"guidemo_flexi_form_withchooser"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#7f0055"><b>int </b></font><font color="#000000">defaultDisplaySize = </font><font color="#990000">32</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>final </b></font><font color="#7f0055"><b>boolean </b></font><font color="#000000">inputMode = !personData.isReadOnly</font><font color="#000000">()</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">firstName = </font><font color="#7f0055"><b>new </b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">"firstname"</font><font color="#000000">, personData.getFirstName</font><font color="#000000">()) {</font><br /> -<font color="#ffffff"> </font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize = defaultDisplaySize;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">, </font><font color="#2a00ff">"notlongerthan"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.firstname"</font><font color="#000000">, </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.mustbefilled"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">lastName = </font><font color="#7f0055"><b>new </b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.lastname"</font><font color="#000000">, personData.getLastName</font><font color="#000000">()) {</font><br /> -<font color="#ffffff"> </font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize = defaultDisplaySize;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">, </font><font color="#2a00ff">"guidemo.flexi.form.notlongerthan"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setLabel</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.lastname"</font><font color="#000000">, </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotEmptyCheck</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.mustbefilled"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#3f7f5f">/*</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">* - create a composite element</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">* - text element and to the left a choose link</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">* - the label of the textelement is set as the label of the layouting </font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">* container. </font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">*/</font><br /> -<font color="#ffffff"> </font><font color="#000000">horizontalLayout = </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">"chooser"</font><font color="#000000">, getTranslator</font><font color="#000000">())</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">horizontalLayout. setLabel</font><font color="#000000">(</font><font color="#2a00ff">"guidemo.flexi.form.institution"</font><font color="#000000">, </font><font color="#7f0055"><b>null</b></font><font color="#000000">)</font><font color="#000000">;;</font><br /> -<font color="#ffffff"> </font><font color="#000000">formLayout.add</font><font color="#000000">(</font><font color="#000000">horizontalLayout</font><font color="#000000">)</font><font color="#000000">; </font><br /> -<font color="#ffffff"> </font><font color="#000000">institution = </font><font color="#7f0055"><b>new </b></font><font color="#000000">TextElementImpl</font><font color="#000000">(</font><font color="#2a00ff">"institution"</font><font color="#000000">, personData.getInstitution</font><font color="#000000">()) {</font><br /> -<font color="#ffffff"> </font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.displaySize = defaultDisplaySize;</font><br /> -<font color="#ffffff"> </font><font color="#000000">setNotLongerThanCheck</font><font color="#000000">(</font><font color="#990000">256</font><font color="#000000">, </font><font color="#2a00ff">"guidemo.flexi.form.notlongerthan"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">choose = </font><font color="#7f0055"><b>new </b></font><font color="#000000">FormLinkImpl</font><font color="#000000">(</font><font color="#2a00ff">"choose"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><br /> -<font color="#ffffff"> </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"> </font><font color="#3f7f5f">// submit only if in input mode</font><br /> -<font color="#ffffff"> </font><font color="#000000">submit = </font><font color="#7f0055"><b>new </b></font><font color="#000000">FormSubmit</font><font color="#000000">(</font><font color="#2a00ff">"submit"</font><font color="#000000">, </font><font color="#2a00ff">"submit"</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//this innerclass represents the subworkflow</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">//but it could be any top level controller</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private class </b></font><font color="#000000">GuiDemoFlexiFormSubworkflowTheChooser </font><font color="#7f0055"><b>extends </b></font><font color="#000000">FormBasicController </font><font color="#000000">{</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#000000">String</font><font color="#000000">[] </font><font color="#000000">entries;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">SingleSelection entrySelector;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>private </b></font><font color="#000000">String selection;</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>public </b></font><font color="#000000">GuiDemoFlexiFormSubworkflowTheChooser</font><font color="#000000">(</font><font color="#000000">UserRequest ureq, WindowControl wControl, String</font><font color="#000000">[] </font><font color="#000000">values, String selection</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>super</b></font><font color="#000000">(</font><font color="#000000">ureq, wControl</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.entries = values;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>this</b></font><font color="#000000">.selection = selection;</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">doDispose</font><font color="#000000">(</font><font color="#7f0055"><b>boolean </b></font><font color="#000000">asynchronous</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// TODO Auto-generated method stub</font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">formOK</font><font color="#000000">(</font><font color="#000000">UserRequest ureq</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#3f7f5f">// TODO Auto-generated method stub </font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">formInnerEvent</font><font color="#000000">(</font><font color="#000000">UserRequest ureq, FormItem source, FormEvent event</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#000000">fireEvent</font><font color="#000000">(</font><font color="#000000">ureq, Event.DONE_EVENT</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"></font><br /> -<font color="#ffffff"> </font><font color="#646464">@Override</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>protected </b></font><font color="#7f0055"><b>void </b></font><font color="#000000">initForm</font><font color="#000000">(</font><font color="#000000">FormItemContainer formLayout, Controller listener, UserRequest ureq</font><font color="#000000">) {</font><br /> -<font color="#ffffff"> </font><font color="#000000">entrySelector = </font><font color="#7f0055"><b>new </b></font><font color="#000000">SingleSelectionImpl</font><font color="#000000">(</font><font color="#2a00ff">"entries"</font><font color="#000000">, SingleSelectionImpl.createVerticalLayout</font><font color="#000000">(</font><font color="#2a00ff">"entries"</font><font color="#000000">)) {</font><br /> -<font color="#ffffff"> </font><font color="#000000">{</font><br /> -<font color="#ffffff"> </font><font color="#000000">keys = entries;</font><br /> -<font color="#ffffff"> </font><font color="#000000">values = entries;</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>if</b></font><font color="#000000">(</font><font color="#000000">selection != </font><font color="#7f0055"><b>null </b></font><font color="#000000">&& !selection.equals</font><font color="#000000">(</font><font color="#2a00ff">""</font><font color="#000000">)){</font><br /> -<font color="#ffffff"> </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"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">entrySelector.addActionListener</font><font color="#000000">(</font><font color="#000000">this, FormEvent.ONCLICK</font><font color="#000000">)</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </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"> </font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><font color="#000000">String getSelected</font><font color="#000000">(){</font><br /> -<font color="#ffffff"> </font><font color="#7f0055"><b>return </b></font><font color="#000000">entrySelector.getSelectedKey</font><font color="#000000">()</font><font color="#000000">;</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><font color="#000000">}</font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </font><br /> -<font color="#ffffff"> </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