diff --git a/src/main/java/org/olat/catalog/CatalogManager.java b/src/main/java/org/olat/catalog/CatalogManager.java index 9d849028a7dc79e5cb54fb37b537a34fa2f17050..894f958ede46b6be62c597d0d98adfef249d41f1 100644 --- a/src/main/java/org/olat/catalog/CatalogManager.java +++ b/src/main/java/org/olat/catalog/CatalogManager.java @@ -335,7 +335,7 @@ public class CatalogManager extends BasicManager implements UserDataDeletable, I for (CatalogEntry nextCe:children) { deleteCatalogSubtree(nextCe,secGroupsToBeDeleted); } - ce = dbInstance.getCurrentEntityManager().find(CatalogEntry.class, ce.getKey()); + ce = dbInstance.getCurrentEntityManager().find(CatalogEntryImpl.class, ce.getKey()); //mark owner group for deletion. SecurityGroup owner = ce.getOwnerGroup(); if (owner != null) { diff --git a/src/main/java/org/olat/core/util/Formatter.java b/src/main/java/org/olat/core/util/Formatter.java index 6a52ba98d5a5cee3dbeeed5f1ae89a5aad187846..d9e176067de04d13fe269e90ad48300b0612e026 100644 --- a/src/main/java/org/olat/core/util/Formatter.java +++ b/src/main/java/org/olat/core/util/Formatter.java @@ -89,7 +89,8 @@ public class Formatter { if(localToFormatterMap.containsKey(locale)) { formatter = localToFormatterMap.get(locale); } else { - formatter = localToFormatterMap.put(locale, new Formatter(locale)); + formatter = new Formatter(locale); + localToFormatterMap.put(locale, formatter); } return formatter; } 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 0d6a5f34468c0aba26666fa285d1d326a3966e24..0000000000000000000000000000000000000000 --- 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 32033410a6b5f47e1ef66f9de02e852b79a054da..0000000000000000000000000000000000000000 --- 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 0b860039374540f62bc76084cecc3e9814a335f0..0000000000000000000000000000000000000000 --- 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 dfaecaa2bbda338846bdc74bd0e57e4235640487..0000000000000000000000000000000000000000 --- 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/main/resources/database/mysql/alter_8_3_0_to_8_4_0.sql b/src/main/resources/database/mysql/alter_8_3_0_to_8_4_0.sql index 88862e2b7f00b2efcd473f0038447f9f41fd5c0e..312bfd7c665d8da72e72a4f72362278c304ea5fe 100644 --- a/src/main/resources/database/mysql/alter_8_3_0_to_8_4_0.sql +++ b/src/main/resources/database/mysql/alter_8_3_0_to_8_4_0.sql @@ -82,7 +82,97 @@ create or replace view o_gp_visible_owner_v as ( inner join o_bs_identity as ident on (bg_owner_member.identity_id = ident.id) ); +-- coaching +create or replace view o_as_eff_statement_groups_v as ( + select + sg_re.repositoryentry_id as re_id, + sg_re.displayname as re_name, + sg_bg.group_id as bg_id, + sg_bg.groupname as bg_name, + sg_tutorMembership.identity_id as tutor_id, + sg_studentMembership.identity_id as student_id, + sg_statement.id as st_id, + (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed, + (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed, + (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, + sg_statement.score as st_score, + pg_initial_launch.id as pg_id + from o_repositoryentry as sg_re + inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule') + inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id) + inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group) + inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id) + inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id) + left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id) + group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname, sg_tutorMembership.identity_id, + sg_studentMembership.identity_id, sg_statement.id, sg_statement.score, pg_initial_launch.id +); +create or replace view o_as_eff_statement_grouped_v as ( + select + sg_re.repositoryentry_id as re_id, + sg_re.displayname as re_name, + sg_tutorMembership.identity_id as tutor_id, + sg_studentMembership.identity_id as student_id, + sg_statement.id as st_id, + (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed, + (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed, + (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, + sg_statement.score as st_score, + pg_initial_launch.id as pg_id + from o_repositoryentry as sg_re + inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule') + inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id) + inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group) + inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id) + inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id) + left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id) + group by sg_re.repositoryentry_id, sg_re.displayname, sg_tutorMembership.identity_id, + sg_studentMembership.identity_id, sg_statement.id, sg_statement.score, pg_initial_launch.id +); +create or replace view o_as_eff_statement_members_v as ( + select + sm_re.repositoryentry_id as re_id, + sm_re.displayname as re_name, + sm_tutorMembership.identity_id as tutor_id, + sm_studentMembership.identity_id as student_id, + sm_statement.id as st_id, + (case when sm_statement.passed = 1 then 1 else 0 end) as st_passed, + (case when sm_statement.passed = 0 then 1 else 0 end) as st_failed, + (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted, + sm_statement.score as st_score, + pm_initial_launch.id as pg_id + from o_repositoryentry as sm_re + inner join o_olatresource as sm_reResource on (sm_re.fk_olatresource = sm_reResource.resource_id and sm_reResource.resname = 'CourseModule') + inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id) + inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id) + left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id) + left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id) +); - +create or replace view o_as_eff_statement_members_strict_v as ( + select + sm_re.repositoryentry_id as re_id, + sm_re.displayname as re_name, + sm_tutorMembership.identity_id as tutor_id, + sm_studentMembership.identity_id as student_id, + sm_statement.id as st_id, + (case when sm_statement.passed = 1 then 1 else 0 end) as st_passed, + (case when sm_statement.passed = 0 then 1 else 0 end) as st_failed, + (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted, + sm_statement.score as st_score, + pm_initial_launch.id as pg_id + from o_repositoryentry as sm_re + inner join o_olatresource as sm_reResource on ( + sm_re.fk_olatresource = sm_reResource.resource_id + and sm_reResource.resname = 'CourseModule' + and not exists (select * from o_gp_business_to_resource as sm_re2group where sm_reResource.resource_id = sm_re2group.fk_resource) + ) + inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id) + inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id) + left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id) + left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id) +); diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql index 0eacb165102fdc9681d1ea7879b276e2e53357bd..a99b7dabe84a007e95616de90497ec414892d4f6 100644 --- a/src/main/resources/database/mysql/setupDatabase.sql +++ b/src/main/resources/database/mysql/setupDatabase.sql @@ -1372,6 +1372,102 @@ create or replace view o_gp_visible_owner_v as ( inner join o_bs_identity as ident on (bg_owner_member.identity_id = ident.id) ); +-- coaching +create or replace view o_as_eff_statement_groups_v as ( + select + sg_re.repositoryentry_id as re_id, + sg_re.displayname as re_name, + sg_bg.group_id as bg_id, + sg_bg.groupname as bg_name, + sg_tutorMembership.identity_id as tutor_id, + sg_studentMembership.identity_id as student_id, + sg_statement.id as st_id, + (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed, + (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed, + (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, + sg_statement.score as st_score, + pg_initial_launch.id as pg_id + from o_repositoryentry as sg_re + inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule') + inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id) + inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group) + inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id) + inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id) + left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id) + group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname, sg_tutorMembership.identity_id, + sg_studentMembership.identity_id, sg_statement.id, sg_statement.score, pg_initial_launch.id +); + +create or replace view o_as_eff_statement_grouped_v as ( + select + sg_re.repositoryentry_id as re_id, + sg_re.displayname as re_name, + sg_tutorMembership.identity_id as tutor_id, + sg_studentMembership.identity_id as student_id, + sg_statement.id as st_id, + (case when sg_statement.passed = 1 then 1 else 0 end) as st_passed, + (case when sg_statement.passed = 0 then 1 else 0 end) as st_failed, + (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, + sg_statement.score as st_score, + pg_initial_launch.id as pg_id + from o_repositoryentry as sg_re + inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule') + inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id) + inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group) + inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id) + inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id) + left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id) + group by sg_re.repositoryentry_id, sg_re.displayname, sg_tutorMembership.identity_id, + sg_studentMembership.identity_id, sg_statement.id, sg_statement.score, pg_initial_launch.id +); + +create or replace view o_as_eff_statement_members_v as ( + select + sm_re.repositoryentry_id as re_id, + sm_re.displayname as re_name, + sm_tutorMembership.identity_id as tutor_id, + sm_studentMembership.identity_id as student_id, + sm_statement.id as st_id, + (case when sm_statement.passed = 1 then 1 else 0 end) as st_passed, + (case when sm_statement.passed = 0 then 1 else 0 end) as st_failed, + (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted, + sm_statement.score as st_score, + pm_initial_launch.id as pg_id + from o_repositoryentry as sm_re + inner join o_olatresource as sm_reResource on (sm_re.fk_olatresource = sm_reResource.resource_id and sm_reResource.resname = 'CourseModule') + inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id) + inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id) + left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id) + left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id) +); + +create or replace view o_as_eff_statement_members_strict_v as ( + select + sm_re.repositoryentry_id as re_id, + sm_re.displayname as re_name, + sm_tutorMembership.identity_id as tutor_id, + sm_studentMembership.identity_id as student_id, + sm_statement.id as st_id, + (case when sm_statement.passed = 1 then 1 else 0 end) as st_passed, + (case when sm_statement.passed = 0 then 1 else 0 end) as st_failed, + (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted, + sm_statement.score as st_score, + pm_initial_launch.id as pg_id + from o_repositoryentry as sm_re + inner join o_olatresource as sm_reResource on ( + sm_re.fk_olatresource = sm_reResource.resource_id + and sm_reResource.resname = 'CourseModule' + and not exists (select * from o_gp_business_to_resource as sm_re2group where sm_reResource.resource_id = sm_re2group.fk_resource) + ) + inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id) + inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id) + left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id) + left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id) +); + + create index ocl_asset_idx on oc_lock (asset); alter table oc_lock add index FK9E30F4B66115906D (identity_fk), add constraint FK9E30F4B66115906D foreign key (identity_fk) references o_bs_identity (id); diff --git a/src/main/resources/database/postgresql/alter_8_3_0_to_8_4_0.sql b/src/main/resources/database/postgresql/alter_8_3_0_to_8_4_0.sql index c7600640ea6c338b06e5487d9f590c00e6bf6d29..2883264279af12f6f47697335c04bc38405e2935 100644 --- a/src/main/resources/database/postgresql/alter_8_3_0_to_8_4_0.sql +++ b/src/main/resources/database/postgresql/alter_8_3_0_to_8_4_0.sql @@ -82,7 +82,101 @@ create view o_gp_visible_owner_v as ( inner join o_bs_identity as ident on (bg_owner_member.identity_id = ident.id) ); +-- coaching +create or replace view o_as_eff_statement_groups_v as ( + select + sg_re.repositoryentry_id as re_id, + sg_re.displayname as re_name, + sg_bg.group_id as bg_id, + sg_bg.groupname as bg_name, + sg_tutorMembership.identity_id as tutor_id, + sg_studentMembership.identity_id as student_id, + sg_statement.id as st_id, + (case when sg_statement.passed = true then 1 else 0 end) as st_passed, + (case when sg_statement.passed = false then 1 else 0 end) as st_failed, + (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, + sg_statement.score as st_score, + pg_initial_launch.id as pg_id + from o_repositoryentry as sg_re + inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule') + inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id) + inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group) + inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id) + inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id) + left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id) + group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname, sg_tutorMembership.identity_id, + sg_studentMembership.identity_id, sg_statement.id, sg_statement.passed, sg_statement.score, pg_initial_launch.id +); + +create or replace view o_as_eff_statement_grouped_v as ( + select + sg_re.repositoryentry_id as re_id, + sg_re.displayname as re_name, + sg_tutorMembership.identity_id as tutor_id, + sg_studentMembership.identity_id as student_id, + sg_statement.id as st_id, + (case when sg_statement.passed = true then 1 else 0 end) as st_passed, + (case when sg_statement.passed = false then 1 else 0 end) as st_failed, + (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, + sg_statement.score as st_score, + pg_initial_launch.id as pg_id + from o_repositoryentry as sg_re + inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule') + inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id) + inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group) + inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id) + inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id) + left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id) + group by sg_re.repositoryentry_id, sg_re.displayname, sg_tutorMembership.identity_id, + sg_studentMembership.identity_id, sg_statement.id, sg_statement.passed, sg_statement.score, pg_initial_launch.id +); +drop view o_as_eff_statement_members_v; +create view o_as_eff_statement_members_v as ( + select + sm_re.repositoryentry_id as re_id, + sm_re.displayname as re_name, + sm_tutorMembership.identity_id as tutor_id, + sm_studentMembership.identity_id as student_id, + sm_statement.id as st_id, + (case when sm_statement.passed = true then 1 else 0 end) as st_passed, + (case when sm_statement.passed = false then 1 else 0 end) as st_failed, + (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted, + sm_statement.score as st_score, + pm_initial_launch.id as pg_id + from o_repositoryentry as sm_re + inner join o_olatresource as sm_reResource on (sm_re.fk_olatresource = sm_reResource.resource_id and sm_reResource.resname = 'CourseModule') + inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id) + inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id) + left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id) + left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id) +); + +create or replace view o_as_eff_statement_members_strict_v as ( + select + sm_re.repositoryentry_id as re_id, + sm_re.displayname as re_name, + sm_tutorMembership.identity_id as tutor_id, + sm_studentMembership.identity_id as student_id, + sm_statement.id as st_id, + (case when sm_statement.passed = true then 1 else 0 end) as st_passed, + (case when sm_statement.passed = false then 1 else 0 end) as st_failed, + (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted, + sm_statement.score as st_score, + pm_initial_launch.id as pg_id + from o_repositoryentry as sm_re + inner join o_olatresource as sm_reResource on ( + sm_re.fk_olatresource = sm_reResource.resource_id + and sm_reResource.resname = 'CourseModule' + and not exists (select * from o_gp_business_to_resource as sm_re2group where sm_reResource.resource_id = sm_re2group.fk_resource) + ) + inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id) + inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id) + left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id) + left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id) +); diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql index ed72b844be93c37ca6d104a650488bdd770aaf43..7af14757b22b71d52dcaa2422e5e4c7f7e830488 100644 --- a/src/main/resources/database/postgresql/setupDatabase.sql +++ b/src/main/resources/database/postgresql/setupDatabase.sql @@ -1369,6 +1369,102 @@ create view o_gp_visible_owner_v as ( inner join o_bs_identity as ident on (bg_owner_member.identity_id = ident.id) ); +-- coaching +create or replace view o_as_eff_statement_groups_v as ( + select + sg_re.repositoryentry_id as re_id, + sg_re.displayname as re_name, + sg_bg.group_id as bg_id, + sg_bg.groupname as bg_name, + sg_tutorMembership.identity_id as tutor_id, + sg_studentMembership.identity_id as student_id, + sg_statement.id as st_id, + (case when sg_statement.passed = true then 1 else 0 end) as st_passed, + (case when sg_statement.passed = false then 1 else 0 end) as st_failed, + (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, + sg_statement.score as st_score, + pg_initial_launch.id as pg_id + from o_repositoryentry as sg_re + inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule') + inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id) + inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group) + inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id) + inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id) + left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id) + group by sg_re.repositoryentry_id, sg_re.displayname, sg_bg.group_id, sg_bg.groupname, sg_tutorMembership.identity_id, + sg_studentMembership.identity_id, sg_statement.id, sg_statement.passed, sg_statement.score, pg_initial_launch.id +); + +create or replace view o_as_eff_statement_grouped_v as ( + select + sg_re.repositoryentry_id as re_id, + sg_re.displayname as re_name, + sg_tutorMembership.identity_id as tutor_id, + sg_studentMembership.identity_id as student_id, + sg_statement.id as st_id, + (case when sg_statement.passed = true then 1 else 0 end) as st_passed, + (case when sg_statement.passed = false then 1 else 0 end) as st_failed, + (case when sg_statement.passed is null then 1 else 0 end) as st_not_attempted, + sg_statement.score as st_score, + pg_initial_launch.id as pg_id + from o_repositoryentry as sg_re + inner join o_olatresource as sg_reResource on (sg_re.fk_olatresource = sg_reResource.resource_id and sg_reResource.resname = 'CourseModule') + inner join o_gp_business_to_resource as sg_bg2resource on (sg_bg2resource.fk_resource = sg_reResource.resource_id) + inner join o_gp_business as sg_bg on (sg_bg.group_id = sg_bg2resource.fk_group) + inner join o_bs_membership as sg_tutorMembership on (sg_bg.fk_ownergroup = sg_tutorMembership.secgroup_id) + inner join o_bs_membership as sg_studentMembership on (sg_bg.fk_partipiciantgroup = sg_studentMembership.secgroup_id) + left join o_as_eff_statement as sg_statement on (sg_statement.fk_resource_id = sg_reResource.resource_id and sg_statement.fk_identity = sg_studentMembership.identity_id) + left join o_as_user_course_infos as pg_initial_launch on (pg_initial_launch.fk_resource_id = sg_reResource.resource_id and pg_initial_launch.fk_identity = sg_studentMembership.identity_id) + group by sg_re.repositoryentry_id, sg_re.displayname, sg_tutorMembership.identity_id, + sg_studentMembership.identity_id, sg_statement.id, sg_statement.passed, sg_statement.score, pg_initial_launch.id +); + +drop view o_as_eff_statement_members_v; +create view o_as_eff_statement_members_v as ( + select + sm_re.repositoryentry_id as re_id, + sm_re.displayname as re_name, + sm_tutorMembership.identity_id as tutor_id, + sm_studentMembership.identity_id as student_id, + sm_statement.id as st_id, + (case when sm_statement.passed = true then 1 else 0 end) as st_passed, + (case when sm_statement.passed = false then 1 else 0 end) as st_failed, + (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted, + sm_statement.score as st_score, + pm_initial_launch.id as pg_id + from o_repositoryentry as sm_re + inner join o_olatresource as sm_reResource on (sm_re.fk_olatresource = sm_reResource.resource_id and sm_reResource.resname = 'CourseModule') + inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id) + inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id) + left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id) + left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id) +); + +create or replace view o_as_eff_statement_members_strict_v as ( + select + sm_re.repositoryentry_id as re_id, + sm_re.displayname as re_name, + sm_tutorMembership.identity_id as tutor_id, + sm_studentMembership.identity_id as student_id, + sm_statement.id as st_id, + (case when sm_statement.passed = true then 1 else 0 end) as st_passed, + (case when sm_statement.passed = false then 1 else 0 end) as st_failed, + (case when sm_statement.passed is null then 1 else 0 end) as st_not_attempted, + sm_statement.score as st_score, + pm_initial_launch.id as pg_id + from o_repositoryentry as sm_re + inner join o_olatresource as sm_reResource on ( + sm_re.fk_olatresource = sm_reResource.resource_id + and sm_reResource.resname = 'CourseModule' + and not exists (select * from o_gp_business_to_resource as sm_re2group where sm_reResource.resource_id = sm_re2group.fk_resource) + ) + inner join o_bs_membership as sm_tutorMembership on (sm_re.fk_tutorgroup = sm_tutorMembership.secgroup_id) + inner join o_bs_membership as sm_studentMembership on (sm_re.fk_participantgroup = sm_studentMembership.secgroup_id) + left join o_as_eff_statement as sm_statement on (sm_statement.fk_resource_id = sm_reResource.resource_id and sm_statement.fk_identity = sm_studentMembership.identity_id) + left join o_as_user_course_infos as pm_initial_launch on (pm_initial_launch.fk_resource_id = sm_reResource.resource_id and pm_initial_launch.fk_identity = sm_studentMembership.identity_id) +); + create index userrating_id_idx on o_userrating (resid); create index userrating_name_idx on o_userrating (resname); create index userrating_subpath_idx on o_userrating (ressubpath); diff --git a/src/test/java/org/olat/restapi/UserMgmtTest.java b/src/test/java/org/olat/restapi/UserMgmtTest.java index 67eff1703ae4543a1923f56d50517a130bf7f8b6..80b8890335dc74da14a215dfe07aeef84e02309b 100644 --- a/src/test/java/org/olat/restapi/UserMgmtTest.java +++ b/src/test/java/org/olat/restapi/UserMgmtTest.java @@ -293,13 +293,14 @@ public class UserMgmtTest extends OlatJerseyTestCase { assertEquals(200, response.getStatusLine().getStatusCode()); InputStream body = response.getEntity().getContent(); List<UserVO> vos = parseUserArray(body); - - List<Identity> identities = BaseSecurityManager.getInstance().getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_VISIBLE_LIMIT); - assertNotNull(vos); assertFalse(vos.isEmpty()); - assertEquals(vos.size(), identities.size()); + int voSize = vos.size(); + vos = null; + List<Identity> identities = BaseSecurityManager.getInstance().getIdentitiesByPowerSearch(null, null, true, null, null, null, null, null, null, null, Identity.STATUS_VISIBLE_LIMIT); + assertEquals(voSize, identities.size()); + conn.shutdown(); }