This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new ed209ab  [OPENMEETINGS-2165] installer is converted
ed209ab is described below

commit ed209abdb2fc5a2d4972037a55a87b660dbb4f82
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Fri Apr 3 19:28:50 2020 +0700

    [OPENMEETINGS-2165] installer is converted
---
 .../web/admin/configurations/ConfigsPanel.html     |   2 +-
 .../web/app/Application.properties.xml             |   2 +-
 .../web/app/Application_ar.properties.xml          |   2 +-
 .../web/app/Application_bg.properties.xml          |   2 +-
 .../web/app/Application_bn.properties.xml          |   2 +-
 .../web/app/Application_ca.properties.xml          |   2 +-
 .../web/app/Application_cs.properties.xml          |   2 +-
 .../web/app/Application_da.properties.xml          |   2 +-
 .../web/app/Application_de.properties.xml          |   2 +-
 .../web/app/Application_el.properties.xml          |   2 +-
 .../web/app/Application_es.properties.xml          |   2 +-
 .../web/app/Application_fa.properties.xml          |   2 +-
 .../web/app/Application_fi.properties.xml          |   2 +-
 .../web/app/Application_fr.properties.xml          |   2 +-
 .../web/app/Application_gl.properties.xml          |   2 +-
 .../web/app/Application_he.properties.xml          |   2 +-
 .../web/app/Application_hu.properties.xml          |   2 +-
 .../web/app/Application_in.properties.xml          |   2 +-
 .../web/app/Application_it.properties.xml          |   2 +-
 .../web/app/Application_ja.properties.xml          |   2 +-
 .../web/app/Application_ko.properties.xml          |   2 +-
 .../web/app/Application_nl.properties.xml          |   2 +-
 .../web/app/Application_pl.properties.xml          |   2 +-
 .../web/app/Application_pt.properties.xml          |   2 +-
 .../web/app/Application_pt_BR.properties.xml       |   2 +-
 .../web/app/Application_ru.properties.xml          |   2 +-
 .../web/app/Application_sk.properties.xml          |   2 +-
 .../web/app/Application_sv.properties.xml          |   2 +-
 .../web/app/Application_th.properties.xml          |   2 +-
 .../web/app/Application_tr.properties.xml          |   2 +-
 .../web/app/Application_uk.properties.xml          |   2 +-
 .../web/app/Application_zh_CN.properties.xml       |   2 +-
 .../web/app/Application_zh_TW.properties.xml       |   2 +-
 .../web/pages/install/InstallWizard$DbStep.html    |  22 +-
 .../pages/install/InstallWizard$ParamsStep1.html   |  42 +--
 .../pages/install/InstallWizard$ParamsStep2.html   | 160 +++++------
 .../pages/install/InstallWizard$ParamsStep3.html   |  96 +++----
 .../pages/install/InstallWizard$ParamsStep4.html   |  69 ++---
 .../web/pages/install/InstallWizard.java           | 295 +++++++++++++--------
 .../web/pages/install/InstallWizardPage.html       |   2 +-
 .../web/pages/install/InstallWizardPage.java       |  11 +-
 openmeetings-web/src/main/webapp/css/raw-admin.css |   2 +-
 .../src/main/webapp/css/raw-general.css            |   4 +
 pom.xml                                            |   2 +-
 44 files changed, 415 insertions(+), 356 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.html
index 17accc1..e79b139 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.html
@@ -66,7 +66,7 @@
                                                <div wicket:id="boolean-box">
                                                        <label 
wicket:for="valueB" class="col-3 text-right"><wicket:message key="271" 
/></label>
                                                        <div 
class="onoffswitch">
-                                                               <input 
type="checkbox" class="onoff-checkbox" wicket:id="valueB">
+                                                               <input 
type="checkbox" class="onoff-checkbox" wicket:id="valueB"/>
                                                                <label 
class="onoff-label" wicket:for="valueB"></label>
                                                        </div>
                                                </div>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
index 8e9581a..a0cdff1 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
index 007df38..7a5f45a 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
index adcdbd1..0cffd4b 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bn.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bn.properties.xml
index 73aa4e0..b3ffcab 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bn.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bn.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
index a901844..6aa3a39 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
index beb5ded..ef76bcb 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
index 3c66292..6c96c95 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
index 3c54727..4b18a7a 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        Standardm&auml;&szlig;ig verwendet {0} die integrierte
                        {1} Datenbank. In Produktivumgebungen wird jedoch der 
Einsatz von {2}, {3}, {4}, {5} or {6} empfohlen.
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
index 43fb9ca..4326b1e 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
index e96cdcb..f15cbf4 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        {0} viene predeterminado para emplear la base de datos 
{1}. Para
                        medios de producción considere emplear {2}, {3}, {4}, 
{5} u {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
index e0374ab..8807393 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
@@ -715,7 +715,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
index 79b833c..43285d0 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
index 9fa38ea..1e30974 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
@@ -715,7 +715,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        Par défaut {0} utilise la base de données {1}. Dans un 
environnement de production vous devriez opter pour
                        {2}, {3}, {4}, {5} or {6}.
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
 
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
index af8efd0..81379e0 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_he.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_he.properties.xml
index 8e9581a..a0cdff1 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_he.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_he.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
index 130fab4..7daaed6 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
@@ -715,7 +715,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        Az {0} alapértelmezette a beépített {1} adatbázist 
használja.
                        További lehetőségként használható a {2}, {3}, {4}, {5} 
or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_in.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_in.properties.xml
index 3ea6048..7dedff6 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_in.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_in.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
index 9b0053c..9b5ee8f 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        Per default {0} usa il database integrato {1}. Per
                        ambienti di produzione dovresti considerare l'uso di 
{2}, {3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
index 171742b..16c27a7 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
@@ -715,7 +715,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        既定では、{0} は組み込み済みデータベース {1} を使用しますが、
                        本番環境では、下記のデータベースの使用をご検討ください: {2}, {3}, {4}, {5}, {6} 
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>注:</strong> 予見し難い DB 
ログイン名と8文字以上の強固なパスワードを使用してください。</p>
                </div>
 
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
index 222c559..3120bb3 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
index e83888c..9eb2051 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
index a16fbe4..8924557 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
index 3188c80..f6be8db 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
index b425e62..0b2a1e5 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
index 45d1c1c..ed98304 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        По умолчанию {0} использует интегрированную базу данных 
{1}. В
                        продакшине Вы должны задуматься об использовании таких 
баз, как {2}, {3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>ВНИМАНИЕ</strong> Пожалуйста используйте 
логин БД, который трудно угадать и 'сложный' пароль с длинной не менее 8 
символов.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
index a2edf93..abae8c2 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
index 41ffb65..30b0fee 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
index 8ceaa4e..be9aa8f 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
index b91e881..f63fa95 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
index dd6d0db..7e50ab8 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        По умолчанию {0} использует интегрированную базу данных 
{1}. В
                        продакшине Вы должны задуматься об использовании таких 
баз, как {2}, {3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
index e9ce8ce..317636f 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
@@ -714,7 +714,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                <blockquote>
                        默认 {0} 使用集成 {1} 数据库。对于生产环境,你应该考虑使用 {2},{3},{4},{5} 或 {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
 
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
index a514567..4024990 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
@@ -716,7 +716,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
                        By default {0} uses the integrated {1} database. For
                        production environment you should consider using {2}, 
{3}, {4}, {5} or {6}
                </blockquote>
-               <div class="ui-state-highlight ui-corner-all installer-note">
+               <div class="alert alert-warning" role="alert">
                        <p><strong>NOTE</strong> Please use unpredictable DB 
login and 'strong' password with length 8 characters or more.</p>
                </div>
        ]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$DbStep.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$DbStep.html
index 7a2a6e4..a0a04d2 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$DbStep.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$DbStep.html
@@ -21,30 +21,36 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
-       <fieldset class="ui-widget-content" id="userData">
+       <fieldset class="" id="userData">
                <legend><wicket:message 
key="install.wizard.db.step.field.title"/></legend>
                <div wicket:id="note"></div>
                <form class="adminForm" wicket:id="form">
                        <div class="formelement">
-                               <label wicket:for="dbType"><wicket:message 
key="install.wizard.db.step.dbtype" /></label> <select 
wicket:id="dbType"></select>
+                               <label wicket:for="dbType" class="col-3 
text-right"><wicket:message key="install.wizard.db.step.dbtype" /></label>
+                               <select wicket:id="dbType" class="custom-select 
col-3"></select>
                        </div>
                        <div wicket:enclosure="host" class="formelement">
-                               <label wicket:for="host"><wicket:message 
key="install.wizard.db.step.host" /></label> <input type="text" 
wicket:id="host"/>
+                               <label wicket:for="host" class="col-3 
text-right"><wicket:message key="install.wizard.db.step.host" /></label>
+                               <input type="text" wicket:id="host" 
class="col-3"/>
                        </div>
                        <div wicket:enclosure="port" class="formelement">
-                               <label wicket:for="port"><wicket:message 
key="install.wizard.db.step.port" /></label> <input type="text" 
wicket:id="port"/>
+                               <label wicket:for="port" class="col-3 
text-right"><wicket:message key="install.wizard.db.step.port" /></label>
+                               <input type="text" wicket:id="port" 
class="col-3"/>
                        </div>
                        <div class="formelement">
-                               <label wicket:for="dbname"><wicket:message 
key="install.wizard.db.step.dbname" /></label> <input type="text" 
wicket:id="dbname"/>
+                               <label wicket:for="dbname" class="col-3 
text-right"><wicket:message key="install.wizard.db.step.dbname" /></label>
+                               <input type="text" wicket:id="dbname" 
class="col-3"/>
                        </div>
                        <div wicket:enclosure="login" class="formelement">
-                               <label wicket:for="login"><wicket:message 
key="install.wizard.db.step.user" /></label> <input type="text" 
wicket:id="login"/>
+                               <label wicket:for="login" class="col-3 
text-right"><wicket:message key="install.wizard.db.step.user" /></label>
+                               <input type="text" wicket:id="login" 
class="col-3"/>
                        </div>
                        <div wicket:enclosure="password" class="formelement">
-                               <label wicket:for="password"><wicket:message 
key="install.wizard.db.step.pass" /></label> <input type="text" 
wicket:id="password"/>
+                               <label wicket:for="password" class="col-3 
text-right"><wicket:message key="install.wizard.db.step.pass" /></label>
+                               <input type="text" wicket:id="password" 
class="col-3"/>
                        </div>
                        <div class="formelement">
-                               <button class="align-right" 
wicket:id="check"><wicket:message key="install.wizard.db.step.check"/></button>
+                               <button class="align-right" 
wicket:id="check"></button>
                        </div>
                </form>
        </fieldset>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep1.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep1.html
index 1c70b00..b3ab90c 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep1.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep1.html
@@ -21,29 +21,31 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
-       <fieldset class="ui-widget-content" id="userData">
+       <fieldset class="" id="userData">
                <legend><wicket:message 
key="install.wizard.params.step1.userdata"/></legend>
-               <ul class="paramList">
-                       <li><label wicket:for="username"><wicket:message 
key="install.wizard.params.step1.username"/></label>
-                               <input wicket:id="username" 
wicket:message="title:install.wizard.params.step1.username.title" type="text" />
-                       </li>
-                       <li><label wicket:for="password"><wicket:message 
key="install.wizard.params.step1.password"/></label>
-                               <input wicket:id="password" 
wicket:message="title:install.wizard.params.step1.password.title" 
type="password" />
-                       </li>
-                       <li><label wicket:for="email"><wicket:message 
key="install.wizard.params.step1.email"/></label>
-                               <input wicket:id="email" 
wicket:message="title:install.wizard.params.step1.email.title" type="text" />
-                       </li>
-                       <li><label wicket:for="timeZone"><wicket:message 
key="install.wizard.params.step1.tz"/></label>
-                               <select wicket:id="timeZone"></select>
-                       </li>
-               </ul>
+               <div class="formelement">
+                       <label wicket:for="username" class="col-3 
text-right"><wicket:message key="install.wizard.params.step1.username"/></label>
+                       <input wicket:id="username" 
wicket:message="title:install.wizard.params.step1.username.title" type="text" 
class="col-3"/>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="password" class="col-3 
text-right"><wicket:message key="install.wizard.params.step1.password"/></label>
+                       <input wicket:id="password" 
wicket:message="title:install.wizard.params.step1.password.title" 
type="password" class="col-3"/>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="email" class="col-3 
text-right"><wicket:message key="install.wizard.params.step1.email"/></label>
+                       <input wicket:id="email" 
wicket:message="title:install.wizard.params.step1.email.title" type="text" 
class="col-3"/>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="timeZone" class="col-3 
text-right"><wicket:message key="install.wizard.params.step1.tz"/></label>
+                       <select wicket:id="timeZone" class="custom-select 
col-3"></select>
+               </div>
        </fieldset>
-       <fieldset class="ui-widget-content" id="userGroupa">
+       <fieldset class="" id="userGroupa">
                <legend><wicket:message 
key="install.wizard.params.step1.groupdata"/></legend>
-               <ul class="paramList">
-                       <li><label wicket:for="group"><wicket:message 
key="install.wizard.params.step1.group"/></label>
-                               <input wicket:id="group" 
wicket:message="title:install.wizard.params.step1.group.title" type="text" 
/></li>
-               </ul>
+               <div class="formelement">
+                       <label wicket:for="group" class="col-3 
text-right"><wicket:message key="install.wizard.params.step1.group"/></label>
+                       <input wicket:id="group" 
wicket:message="title:install.wizard.params.step1.group.title" type="text" 
class="col-3"/>
+               </div>
        </fieldset>
 </wicket:panel>
 </html>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep2.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep2.html
index 9e8d228..5f2a98e 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep2.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep2.html
@@ -21,100 +21,74 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
-       <fieldset class="ui-widget-content" id="userConf">
+       <fieldset class="" id="userConf">
                <legend><wicket:message 
key="install.wizard.params.step2.configuration"/></legend>
-               <ul class="paramList">
-                       <li><label 
wicket:for="allowFrontendRegister"><wicket:message 
key="install.wizard.params.step2.allowFrontendRegister"/></label>
-                               <div class="onoffswitch">
-                                       <input type="checkbox" 
class="onoffswitch-checkbox" wicket:id="allowFrontendRegister">
-                                       <label class="onoffswitch-label" 
wicket:for="allowFrontendRegister">
-                                               <span class="onoffswitch-inner">
-                                                       <span 
class="before"></span>
-                                                       <span 
class="after"></span>
-                                               </span>
-                                               <span 
class="onoffswitch-switch"></span>
-                                       </label>
-                               </div>
-                       </li>
-                       <li><label 
wicket:for="sendEmailAtRegister"><wicket:message 
key="install.wizard.params.step2.sendEmailAtRegister"/></label>
-                               <div class="onoffswitch">
-                                       <input type="checkbox" 
class="onoffswitch-checkbox" wicket:id="sendEmailAtRegister">
-                                       <label class="onoffswitch-label" 
wicket:for="sendEmailAtRegister">
-                                               <span class="onoffswitch-inner">
-                                                       <span 
class="before"></span>
-                                                       <span 
class="after"></span>
-                                               </span>
-                                               <span 
class="onoffswitch-switch"></span>
-                                       </label>
-                               </div>
-                       </li>
-                       <li><label 
wicket:for="sendEmailWithVerficationCode"><wicket:message 
key="install.wizard.params.step2.sendEmailWithVerficationCode"/></label>
-                               <div class="onoffswitch">
-                                       <input type="checkbox" 
class="onoffswitch-checkbox" wicket:id="sendEmailWithVerficationCode">
-                                       <label class="onoffswitch-label" 
wicket:for="sendEmailWithVerficationCode">
-                                               <span class="onoffswitch-inner">
-                                                       <span 
class="before"></span>
-                                                       <span 
class="after"></span>
-                                               </span>
-                                               <span 
class="onoffswitch-switch"></span>
-                                       </label>
-                               </div>
-                       </li>
-                       <li><label 
wicket:for="createDefaultObjects"><wicket:message 
key="install.wizard.params.step2.createDefaultObjects"/></label>
-                               <div class="onoffswitch">
-                                       <input type="checkbox" 
class="onoffswitch-checkbox" wicket:id="createDefaultObjects">
-                                       <label class="onoffswitch-label" 
wicket:for="createDefaultObjects">
-                                               <span class="onoffswitch-inner">
-                                                       <span 
class="before"></span>
-                                                       <span 
class="after"></span>
-                                               </span>
-                                               <span 
class="onoffswitch-switch"></span>
-                                       </label>
-                               </div>
-                       </li>
-                       <li><label wicket:for="mailReferer"><wicket:message 
key="install.wizard.params.step2.mailReferer"/></label>
-                               <input wicket:id="mailReferer" 
wicket:message="title:install.wizard.params.step2.mailReferer.title" 
type="text" />
-                       </li>
-                       <li><label wicket:for="smtpServer"><wicket:message 
key="install.wizard.params.step2.smtpServer"/></label>
-                               <input wicket:id="smtpServer" 
wicket:message="title:install.wizard.params.step2.smtpServer.title" type="text" 
/>
-                       </li>
-                       <li><label wicket:for="smtpPort"><wicket:message 
key="install.wizard.params.step2.smtpPort"/></label>
-                               <input wicket:id="smtpPort" 
wicket:message="title:install.wizard.params.step2.smtpPort.title" type="text" />
-                       </li>
-                       <li><label wicket:for="mailAuthName"><wicket:message 
key="install.wizard.params.step2.mailAuthName"/></label>
-                               <input wicket:id="mailAuthName" 
wicket:message="title:install.wizard.params.step2.mailAuthName.title" 
type="text" />
-                       </li>
-                       <li><label wicket:for="mailAuthPass"><wicket:message 
key="install.wizard.params.step2.mailAuthPass"/></label>
-                               <input wicket:id="mailAuthPass" 
wicket:message="title:install.wizard.params.step2.mailAuthPass.title" 
type="password" />
-                       </li>
-                       <li><label wicket:for="mailUseTls"><wicket:message 
key="install.wizard.params.step2.mailUseTls"/></label>
-                               <div class="onoffswitch">
-                                       <input type="checkbox" 
class="onoffswitch-checkbox" wicket:id="mailUseTls">
-                                       <label class="onoffswitch-label" 
wicket:for="mailUseTls">
-                                               <span class="onoffswitch-inner">
-                                                       <span 
class="before"></span>
-                                                       <span 
class="after"></span>
-                                               </span>
-                                               <span 
class="onoffswitch-switch"></span>
-                                       </label>
-                               </div>
-                       </li>
-                       <li><label 
wicket:for="replyToOrganizer"><wicket:message 
key="install.wizard.params.step2.replyToOrganizer"/></label>
-                               <div class="onoffswitch">
-                                       <input type="checkbox" 
class="onoffswitch-checkbox" wicket:id="replyToOrganizer">
-                                       <label class="onoffswitch-label" 
wicket:for="replyToOrganizer">
-                                               <span class="onoffswitch-inner">
-                                                       <span 
class="before"></span>
-                                                       <span 
class="after"></span>
-                                               </span>
-                                               <span 
class="onoffswitch-switch"></span>
-                                       </label>
-                               </div>
-                       </li>
-                       <li><label wicket:for="defaultLangId"><wicket:message 
key="install.wizard.params.step2.defaultLangId"/></label>
-                               <select wicket:id="defaultLangId"></select>
-                       </li>
-               </ul>
+               <div class="formelement">
+                       <label wicket:for="allowFrontendRegister" class="col-3 
text-right"><wicket:message 
key="install.wizard.params.step2.allowFrontendRegister"/></label>
+                       <div class="onoffswitch">
+                               <input type="checkbox" class="onoff-checkbox" 
wicket:id="allowFrontendRegister"/>
+                               <label class="onoff-label" 
wicket:for="allowFrontendRegister"></label>
+                       </div>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="sendEmailAtRegister" class="col-3 
text-right"><wicket:message 
key="install.wizard.params.step2.sendEmailAtRegister"/></label>
+                       <div class="onoffswitch">
+                               <input type="checkbox" class="onoff-checkbox" 
wicket:id="sendEmailAtRegister"/>
+                               <label class="onoff-label" 
wicket:for="sendEmailAtRegister"></label>
+                       </div>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="sendEmailWithVerficationCode" 
class="col-3 text-right"><wicket:message 
key="install.wizard.params.step2.sendEmailWithVerficationCode"/></label>
+                       <div class="onoffswitch">
+                               <input type="checkbox" class="onoff-checkbox" 
wicket:id="sendEmailWithVerficationCode"/>
+                               <label class="onoff-label" 
wicket:for="sendEmailWithVerficationCode"></label>
+                       </div>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="createDefaultObjects" class="col-3 
text-right"><wicket:message 
key="install.wizard.params.step2.createDefaultObjects"/></label>
+                       <div class="onoffswitch">
+                               <input type="checkbox" class="onoff-checkbox" 
wicket:id="createDefaultObjects"/>
+                               <label class="onoff-label" 
wicket:for="createDefaultObjects"></label>
+                       </div>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="mailReferer" class="col-3 
text-right"><wicket:message 
key="install.wizard.params.step2.mailReferer"/></label>
+                       <input wicket:id="mailReferer" 
wicket:message="title:install.wizard.params.step2.mailReferer.title" 
type="text" class="col-3"/>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="smtpServer" class="col-3 
text-right"><wicket:message 
key="install.wizard.params.step2.smtpServer"/></label>
+                       <input wicket:id="smtpServer" 
wicket:message="title:install.wizard.params.step2.smtpServer.title" type="text" 
class="col-3"/>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="smtpPort" class="col-3 
text-right"><wicket:message key="install.wizard.params.step2.smtpPort"/></label>
+                       <input wicket:id="smtpPort" 
wicket:message="title:install.wizard.params.step2.smtpPort.title" type="text" 
class="col-3"/>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="mailAuthName" class="col-3 
text-right"><wicket:message 
key="install.wizard.params.step2.mailAuthName"/></label>
+                       <input wicket:id="mailAuthName" 
wicket:message="title:install.wizard.params.step2.mailAuthName.title" 
type="text" class="col-3"/>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="mailAuthPass" class="col-3 
text-right"><wicket:message 
key="install.wizard.params.step2.mailAuthPass"/></label>
+                       <input wicket:id="mailAuthPass" 
wicket:message="title:install.wizard.params.step2.mailAuthPass.title" 
type="password" class="col-3"/>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="mailUseTls" class="col-3 
text-right"><wicket:message 
key="install.wizard.params.step2.mailUseTls"/></label>
+                       <div class="onoffswitch">
+                               <input type="checkbox" class="onoff-checkbox" 
wicket:id="mailUseTls"/>
+                               <label class="onoff-label" 
wicket:for="mailUseTls"></label>
+                       </div>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="replyToOrganizer" class="col-3 
text-right"><wicket:message 
key="install.wizard.params.step2.replyToOrganizer"/></label>
+                       <div class="onoffswitch">
+                               <input type="checkbox" class="onoff-checkbox" 
wicket:id="replyToOrganizer"/>
+                               <label class="onoff-label" 
wicket:for="replyToOrganizer"></label>
+                       </div>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="defaultLangId" class="col-3 
text-right"><wicket:message 
key="install.wizard.params.step2.defaultLangId"/></label>
+                       <select wicket:id="defaultLangId" class="custom-select 
col-3"></select>
+               </div>
        </fieldset>
 </wicket:panel>
 </html>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html
index fa29e07..fd0087c 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html
@@ -21,53 +21,57 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
-       <fieldset class="ui-widget-content" id="userConf1">
+       <fieldset class="" id="userConf1">
                <legend><wicket:message 
key="install.wizard.params.step3.converters"/></legend>
-               <ul class="paramList">
-                       <li><label wicket:for="docDpi"><wicket:message 
key="install.wizard.params.step3.docDpi"/>
-                                       <span class="info-title" 
wicket:message="title:install.wizard.params.step3.docDpi.text,alt:install.wizard.params.step3.docDpi.text"></span>
-                               </label>
-                               <input wicket:id="docDpi" 
wicket:message="title:install.wizard.params.step3.docDpi.title" type="text" />
-                       </li>
-                       <li><label wicket:for="docQuality"><wicket:message 
key="install.wizard.params.step3.docQuality"/>
-                                       <span class="info-title" 
wicket:message="title:install.wizard.params.step3.docQuality.text,alt:install.wizard.params.step3.docQuality.text"></span>
-                               </label>
-                               <input wicket:id="docQuality" 
wicket:message="title:install.wizard.params.step3.docQuality.title" type="text" 
/>
-                       </li>
-                       <li><label wicket:for="imageMagicPath"><wicket:message 
key="install.wizard.params.step3.imageMagicPath"/>
-                                       <span class="info-title" 
wicket:message="title:install.wizard.params.step3.imageMagicPath.text,alt:install.wizard.params.step3.imageMagicPath.text"></span>
-                               </label>
-                               <input wicket:id="imageMagicPath" 
wicket:message="title:install.wizard.params.step3.imageMagicPath.title" 
type="text" />
-                               <button class="formelement" 
wicket:id="validateImageMagic"><wicket:message 
key="install.wizard.db.step.check"/></button>
-                       </li>
-                       <li><label wicket:for="ffmpegPath"><wicket:message 
key="install.wizard.params.step3.ffmpegPath"/>
-                                       <span class="info-title" 
wicket:message="title:install.wizard.params.step3.ffmpegPath.text,alt:install.wizard.params.step3.ffmpegPath.text"></span>
-                               </label>
-                               <input wicket:id="ffmpegPath" 
wicket:message="title:install.wizard.params.step3.ffmpegPath.title" type="text" 
/>
-                               <button class="formelement" 
wicket:id="validateFfmpeg"><wicket:message 
key="install.wizard.db.step.check"/></button>
-                       </li>
-                       <li><label wicket:for="soxPath"><wicket:message 
key="install.wizard.params.step3.soxPath"/>
-                                       <span class="info-title" 
wicket:message="title:install.wizard.params.step3.soxPath.text,alt:install.wizard.params.step3.soxPath.text"></span>
-                               </label>
-                               <input wicket:id="soxPath" 
wicket:message="title:install.wizard.params.step3.soxPath.title" type="text" />
-                               <button class="formelement" 
wicket:id="validateSox"><wicket:message 
key="install.wizard.db.step.check"/></button>
-                       </li>
-                       <li><label wicket:for="officePath"><wicket:message 
key="install.wizard.params.step3.officePath"/>
-                                       <span class="info-title" 
wicket:message="title:install.wizard.params.step3.officePath.text,alt:install.wizard.params.step3.officePath.text"></span>
-                               </label>
-                               <input wicket:id="officePath" 
wicket:message="title:install.wizard.params.step3.officePath.title" type="text" 
/>
-                               <button class="formelement" 
wicket:id="validateOffice"><wicket:message 
key="install.wizard.db.step.check"/></button>
-                       </li>
-                       <li>
-                               <p>
-                                       <em>
-                                               <wicket:message 
key="install.wizard.params.step3.seeAlso"/> <a
-                                               
href="https://openmeetings.apache.org/installation.html";
-                                               rel="noopener noreferrer" 
target="_blank"><wicket:message 
key="install.wizard.params.step3.installation"/></a>
-                                       </em>
-                               </p>
-                       </li>
-               </ul>
+               <div class="formelement">
+                       <label wicket:for="docDpi" class="col-3 
text-right"><wicket:message key="install.wizard.params.step3.docDpi"/>
+                               <i class="fas fa-info-circle m-1 text-info" 
wicket:message="title:install.wizard.params.step3.docDpi.text,alt:install.wizard.params.step3.docDpi.text"></i>
+                       </label>
+                       <input wicket:id="docDpi" 
wicket:message="title:install.wizard.params.step3.docDpi.title" type="text" 
class="col-3"/>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="docQuality" class="col-3 
text-right"><wicket:message key="install.wizard.params.step3.docQuality"/>
+                               <i class="fas fa-info-circle m-1 text-info" 
wicket:message="title:install.wizard.params.step3.docQuality.text,alt:install.wizard.params.step3.docQuality.text"></i>
+                       </label>
+                       <input wicket:id="docQuality" 
wicket:message="title:install.wizard.params.step3.docQuality.title" type="text" 
class="col-3"/>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="imageMagicPath" class="col-3 
text-right"><wicket:message key="install.wizard.params.step3.imageMagicPath"/>
+                               <i class="fas fa-info-circle m-1 text-info" 
wicket:message="title:install.wizard.params.step3.imageMagicPath.text,alt:install.wizard.params.step3.imageMagicPath.text"></i>
+                       </label>
+                       <input wicket:id="imageMagicPath" 
wicket:message="title:install.wizard.params.step3.imageMagicPath.title" 
type="text" class="col-3"/>
+                       <button class="formelement" 
wicket:id="validateImageMagic"></button>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="ffmpegPath" class="col-3 
text-right"><wicket:message key="install.wizard.params.step3.ffmpegPath"/>
+                               <i class="fas fa-info-circle m-1 text-info" 
wicket:message="title:install.wizard.params.step3.ffmpegPath.text,alt:install.wizard.params.step3.ffmpegPath.text"></i>
+                       </label>
+                       <input wicket:id="ffmpegPath" 
wicket:message="title:install.wizard.params.step3.ffmpegPath.title" type="text" 
class="col-3"/>
+                       <button class="formelement" 
wicket:id="validateFfmpeg"></button>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="soxPath" class="col-3 
text-right"><wicket:message key="install.wizard.params.step3.soxPath"/>
+                               <i class="fas fa-info-circle m-1 text-info" 
wicket:message="title:install.wizard.params.step3.soxPath.text,alt:install.wizard.params.step3.soxPath.text"></i>
+                       </label>
+                       <input wicket:id="soxPath" 
wicket:message="title:install.wizard.params.step3.soxPath.title" type="text" 
class="col-3"/>
+                       <button class="formelement" 
wicket:id="validateSox"></button>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="officePath" class="col-3 
text-right"><wicket:message key="install.wizard.params.step3.officePath"/>
+                               <i class="fas fa-info-circle m-1 text-info" 
wicket:message="title:install.wizard.params.step3.officePath.text,alt:install.wizard.params.step3.officePath.text"></i>
+                       </label>
+                       <input wicket:id="officePath" 
wicket:message="title:install.wizard.params.step3.officePath.title" type="text" 
class="col-3"/>
+                       <button class="formelement" 
wicket:id="validateOffice"></button>
+               </div>
+               <div class="formelement">
+                       <p>
+                               <em>
+                                       <wicket:message 
key="install.wizard.params.step3.seeAlso"/> <a
+                                       
href="https://openmeetings.apache.org/installation.html";
+                                       rel="noopener noreferrer" 
target="_blank"><wicket:message 
key="install.wizard.params.step3.installation"/></a>
+                               </em>
+                       </p>
+               </div>
        </fieldset>
 </wicket:panel>
 </html>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html
index b2f9976..056c454 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep4.html
@@ -21,49 +21,38 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
-       <fieldset class="ui-widget-content" id="userConf2">
+       <fieldset class="" id="userConf2">
                <legend><wicket:message 
key="install.wizard.params.step4.crypt"/></legend>
-               <ul class="paramList">
-                       <li>
-                               <label 
wicket:for="cryptClassName"><wicket:message 
key="install.wizard.params.step4.cryptClassName"/>
-                                       <span class="info-title" 
wicket:message="title:install.wizard.params.step4.cryptClassName.text,alt:install.wizard.params.step4.cryptClassName.text"></span>
-                               </label>
-                               <input wicket:id="cryptClassName" type="text"
-                                       
wicket:message="title:install.wizard.params.step4.cryptClassName.title" />
-                       </li>
-               </ul>
+               <div class="formelement">
+                       <label wicket:for="cryptClassName" class="col-3 
text-right"><wicket:message key="install.wizard.params.step4.cryptClassName"/>
+                               <i class="fas fa-info-circle m-1 text-info" 
wicket:message="title:install.wizard.params.step4.cryptClassName.text,alt:install.wizard.params.step4.cryptClassName.text"></i>
+                       </label>
+                       <input wicket:id="cryptClassName" type="text" 
wicket:message="title:install.wizard.params.step4.cryptClassName.title" 
class="col-3"/>
+               </div>
        </fieldset>
-       <fieldset class="ui-widget-content" id="sip">
+       <fieldset class="" id="sip">
                <legend><wicket:message 
key="install.wizard.params.step4.sip"/></legend>
-               <ul class="paramList">
-                       <li>
-                               <label wicket:for="sipEnable"><wicket:message 
key="install.wizard.params.step4.sipEnable"/>
-                                       <span class="info-title" 
wicket:message="title:install.wizard.params.step4.sipEnable.text,alt:install.wizard.params.step4.sipEnable.text"></span>
-                               </label>
-                               <div class="onoffswitch">
-                                       <input type="checkbox" 
class="onoffswitch-checkbox" wicket:id="sipEnable">
-                                       <label class="onoffswitch-label" 
wicket:for="sipEnable">
-                                               <span class="onoffswitch-inner">
-                                                       <span 
class="before"></span>
-                                                       <span 
class="after"></span>
-                                               </span>
-                                               <span 
class="onoffswitch-switch"></span>
-                                       </label>
-                               </div>
-                       </li>
-                       <li>
-                               <label 
wicket:for="sipRoomPrefix"><wicket:message 
key="install.wizard.params.step4.sipRoomPrefix"/>
-                                       <span class="info-title" 
wicket:message="title:install.wizard.params.step4.sipRoomPrefix.text,alt:install.wizard.params.step4.sipRoomPrefix.text"></span>
-                               </label>
-                               <input wicket:id="sipRoomPrefix" type="text" />
-                       </li>
-                       <li>
-                               <label 
wicket:for="sipExtenContext"><wicket:message 
key="install.wizard.params.step4.sipExtenContext"/>
-                                       <span class="info-title" 
wicket:message="title:install.wizard.params.step4.sipExtenContext.text,alt:install.wizard.params.step4.sipExtenContext.text"></span>
-                               </label>
-                               <input wicket:id="sipExtenContext" type="text" 
/>
-                       </li>
-               </ul>
+               <div class="formelement">
+                       <label wicket:for="sipEnable" class="col-3 
text-right"><wicket:message key="install.wizard.params.step4.sipEnable"/>
+                               <i class="fas fa-info-circle m-1 text-info" 
wicket:message="title:install.wizard.params.step4.sipEnable.text,alt:install.wizard.params.step4.sipEnable.text"></i>
+                       </label>
+                       <div class="onoffswitch">
+                               <input type="checkbox" class="onoff-checkbox" 
wicket:id="sipEnable"/>
+                               <label class="onoff-label" 
wicket:for="sipEnable"></label>
+                       </div>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="sipRoomPrefix" class="col-3 
text-right"><wicket:message key="install.wizard.params.step4.sipRoomPrefix"/>
+                               <i class="fas fa-info-circle m-1 text-info" 
wicket:message="title:install.wizard.params.step4.sipRoomPrefix.text,alt:install.wizard.params.step4.sipRoomPrefix.text"></i>
+                       </label>
+                       <input wicket:id="sipRoomPrefix" type="text" 
class="col-3"/>
+               </div>
+               <div class="formelement">
+                       <label wicket:for="sipExtenContext" class="col-3 
text-right"><wicket:message key="install.wizard.params.step4.sipExtenContext"/>
+                               <i class="fas fa-info-circle m-1 text-info" 
wicket:message="title:install.wizard.params.step4.sipExtenContext.text,alt:install.wizard.params.step4.sipExtenContext.text"></i>
+                       </label>
+                       <input wicket:id="sipExtenContext" type="text" 
class="col-3"/>
+               </div>
        </fieldset>
 </wicket:panel>
 </html>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
index 4794015..30af522 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
@@ -54,15 +54,22 @@ import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.ErrorMessagePanel;
 import org.apache.openmeetings.web.common.OmLabel;
-import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
 import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import 
org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
+import org.apache.wicket.extensions.wizard.IWizard;
+import org.apache.wicket.extensions.wizard.WizardButton;
+import org.apache.wicket.extensions.wizard.WizardButtonBar;
 import org.apache.wicket.extensions.wizard.dynamic.DynamicWizardModel;
 import org.apache.wicket.extensions.wizard.dynamic.DynamicWizardStep;
 import org.apache.wicket.extensions.wizard.dynamic.IDynamicWizardStep;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Button;
 import org.apache.wicket.markup.html.form.CheckBox;
 import org.apache.wicket.markup.html.form.ChoiceRenderer;
 import org.apache.wicket.markup.html.form.DropDownChoice;
@@ -76,6 +83,7 @@ import org.apache.wicket.model.Model;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.model.StringResourceModel;
+import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
@@ -83,37 +91,50 @@ import org.slf4j.LoggerFactory;
 import org.springframework.orm.jpa.LocalEntityManagerFactoryBean;
 import org.springframework.web.context.support.XmlWebApplicationContext;
 
-import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
-import com.googlecode.wicket.jquery.ui.form.button.IndicatingAjaxButton;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-import com.googlecode.wicket.jquery.ui.widget.progressbar.ProgressBar;
 import com.googlecode.wicket.jquery.ui.widget.tooltip.TooltipBehavior;
-import com.googlecode.wicket.jquery.ui.widget.wizard.AbstractWizard;
 
+import 
de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton;
+import de.agilecoders.wicket.core.markup.html.bootstrap.button.ButtonBehavior;
+import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
+import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons.Type;
 import 
de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
+import 
de.agilecoders.wicket.core.markup.html.bootstrap.components.progress.UpdatableProgressBar;
+import 
de.agilecoders.wicket.core.markup.html.bootstrap.utilities.BackgroundColorBehavior;
+import 
de.agilecoders.wicket.extensions.markup.html.bootstrap.spinner.SpinnerAjaxButton;
+import de.agilecoders.wicket.extensions.wizard.BootstrapWizard;
 
-public class InstallWizard extends AbstractWizard<InstallationConfig> {
+public class InstallWizard extends BootstrapWizard {
        private static final long serialVersionUID = 1L;
        private static final Logger log = 
LoggerFactory.getLogger(InstallWizard.class);
-       private final IDynamicWizardStep welcomeStep;
-       private final IDynamicWizardStep dbStep;
-       private final ParamsStep1 paramsStep1;
-       private final IDynamicWizardStep paramsStep2;
-       private final IDynamicWizardStep paramsStep3;
-       private final IDynamicWizardStep paramsStep4;
-       private final InstallStep installStep;
+       private IDynamicWizardStep welcomeStep;
+       private IDynamicWizardStep dbStep;
+       private ParamsStep1 paramsStep1;
+       private IDynamicWizardStep paramsStep2;
+       private IDynamicWizardStep paramsStep3;
+       private IDynamicWizardStep paramsStep4;
+       private InstallStep installStep;
        private Throwable th = null;
        private DbType initDbType = null;
        private DbType dbType = null;
+       private NotificationPanel feedback;
+       private final CompoundPropertyModel<InstallationConfig> model;
+       private final List<Button> buttons = new ArrayList<>(4);
+
        @SpringBean
        private ImportInitvalues initvalues;
 
        //onInit, applyState
        public InstallWizard(String id, String title) {
-               super(id, title, new CompoundPropertyModel<>(new 
InstallationConfig()), true);
-               setTitle(Model.of(getModelObject().getAppName()));
+               super(id);
+               setOutputMarkupPlaceholderTag(true);
+               setOutputMarkupId(true);
+               model = new CompoundPropertyModel<>(new InstallationConfig());
+               setDefaultModel(model);
+       }
+
+       @Override
+       protected void onInitialize() {
                welcomeStep = new WelcomeStep();
                dbStep = new DbStep();
                paramsStep1 = new ParamsStep1();
@@ -121,11 +142,12 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
                paramsStep3 = new ParamsStep3();
                paramsStep4 = new ParamsStep4();
                installStep = new InstallStep();
-
                DynamicWizardModel wmodel = new DynamicWizardModel(welcomeStep);
                wmodel.setCancelVisible(false);
                wmodel.setLastVisible(true);
                init(wmodel);
+
+               super.onInitialize();
        }
 
        public void initTzDropDown() {
@@ -133,32 +155,73 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
        }
 
        @Override
-       public void onConfigure(JQueryBehavior behavior) {
-               super.onConfigure(behavior);
-               behavior.setOption("closeOnEscape", false);
-               behavior.setOption("classes", "{'ui-dialog-titlebar': 
'ui-corner-all no-close'}");
-       }
-
-       @Override
-       public boolean isResizable() {
-               return false;
-       }
-
-       @Override
        protected WebMarkupContainer newFeedbackPanel(String id) {
-               NotificationPanel feedback = new NotificationPanel("feedback");
+               feedback = (NotificationPanel)super.newFeedbackPanel(id);
                feedback.setEscapeModelStrings(false).setOutputMarkupId(true);
                return feedback;
        }
 
        @Override
-       public int getWidth() {
-               return 1000;
-       }
+       protected Component newButtonBar(String id) {
+               return new WizardButtonBar(id, this) {
+                       private static final long serialVersionUID = 1L;
 
-       @Override
-       protected boolean closeOnFinish() {
-               return false;
+                       @Override
+                       protected WizardButton newCancelButton(String id, 
IWizard wizard) {
+                               WizardButton button = super.newCancelButton(id, 
wizard);
+                               button.add(new 
ButtonBehavior(Type.Outline_Warning, Buttons.Size.Medium));
+                               return button;
+                       }
+
+                       @Override
+                       protected WizardButton newFinishButton(String id, 
IWizard wizard) {
+                               WizardButton button = super.newFinishButton(id, 
wizard);
+                               button.add(new 
ButtonBehavior(Type.Outline_Success, Buttons.Size.Medium));
+                               button.add(new AjaxFormSubmitBehavior("click") {
+                                       private static final long 
serialVersionUID = 1L;
+
+
+                                       @Override
+                                       protected void 
updateAjaxAttributes(AjaxRequestAttributes attributes) {
+                                               
super.updateAjaxAttributes(attributes);
+
+                                               // do not allow normal form 
submit to happen
+                                               
attributes.setPreventDefault(true);
+                                       }
+
+                                       @Override
+                                       protected void 
onSubmit(AjaxRequestTarget target) {
+                                               button.onSubmit();
+                                       }
+                               });
+                               buttons.add(button);
+                               return button;
+                       }
+
+                       @Override
+                       protected WizardButton newLastButton(String id, IWizard 
wizard) {
+                               WizardButton button = super.newLastButton(id, 
wizard);
+                               button.add(new 
ButtonBehavior(Type.Outline_Secondary, Buttons.Size.Medium));
+                               buttons.add(button);
+                               return button;
+                       }
+
+                       @Override
+                       protected WizardButton newNextButton(String id, IWizard 
wizard) {
+                               WizardButton button = super.newNextButton(id, 
wizard);
+                               button.add(new 
ButtonBehavior(Type.Outline_Secondary, Buttons.Size.Medium));
+                               buttons.add(button);
+                               return button;
+                       }
+
+                       @Override
+                       protected WizardButton newPreviousButton(String id, 
IWizard wizard) {
+                               WizardButton button = 
super.newPreviousButton(id, wizard);
+                               button.add(new 
ButtonBehavior(Type.Outline_Secondary, Buttons.Size.Medium));
+                               buttons.add(button);
+                               return button;
+                       }
+               };
        }
 
        private abstract class BaseStep extends DynamicWizardStep {
@@ -166,13 +229,13 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
 
                public BaseStep(IDynamicWizardStep prev) {
                        super(prev);
-                       setSummaryModel(Model.of(""));
                }
 
                @Override
                protected void onInitialize() {
                        super.onInitialize();
-                       
InstallWizard.this.setTitle(Model.of(getModelObject().getAppName() + " - " + 
getString("install.wizard.install.header")));
+                       setSummaryModel(Model.of(""));
+                       setTitleModel(Model.of(model.getObject().getAppName() + 
" - " + getString("install.wizard.install.header")));
                }
        }
 
@@ -231,22 +294,22 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
 
                                        @Override
                                        protected void 
onUpdate(AjaxRequestTarget target) {
-                                               target.add(getFeedbackPanel());
+                                               target.add(feedback);
                                                initForm(true, target);
                                        }
                                }));
                                add(host, port, dbname, user, pass);
-                               add(new IndicatingAjaxButton("check") {
+                               add(new SpinnerAjaxButton("check", new 
ResourceModel("install.wizard.db.step.check"), Buttons.Type.Outline_Primary) {
                                        private static final long 
serialVersionUID = 1L;
 
                                        @Override
                                        protected void 
onSubmit(AjaxRequestTarget target) {
-                                               target.add(getFeedbackPanel());
+                                               target.add(feedback);
                                        }
 
                                        @Override
                                        protected void 
onError(AjaxRequestTarget target) {
-                                               target.add(getFeedbackPanel());
+                                               target.add(feedback);
                                        }
                                });
                        }
@@ -319,9 +382,6 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
 
                public DbStep() {
                        super(welcomeStep);
-                       add(form.setOutputMarkupId(true));
-                       initDbType = form.getModelObject().getDbType();
-                       initForm(false, null);
                }
 
                private ConnectionProperties getProps(DbType type) {
@@ -393,7 +453,10 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
                @Override
                protected void onInitialize() {
                        super.onInitialize();
-                       add(new OmLabel("note", "install.wizard.db.step.note", 
getModelObject().getAppName(), 
getString("install.wizard.db.step.instructions.h2")
+                       add(form.setOutputMarkupId(true));
+                       initDbType = form.getModelObject().getDbType();
+                       initForm(false, null);
+                       add(new OmLabel("note", "install.wizard.db.step.note", 
model.getObject().getAppName(), 
getString("install.wizard.db.step.instructions.h2")
                                        , 
getString("install.wizard.db.step.instructions.mysql"), 
getString("install.wizard.db.step.instructions.postgresql")
                                        , 
getString("install.wizard.db.step.instructions.db2"), 
getString("install.wizard.db.step.instructions.mssql")
                                        , 
getString("install.wizard.db.step.instructions.oracle")).setEscapeModelStrings(false));
@@ -412,16 +475,16 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
 
        private final class ParamsStep1 extends BaseStep {
                private static final long serialVersionUID = 1L;
-               private final TzDropDown tzDropDown;
+               private final TzDropDown tzDropDown = new 
TzDropDown("timeZone");
 
                public ParamsStep1() {
                        super(dbStep);
-                       add(tzDropDown = new TzDropDown("timeZone"));
                }
 
                @Override
                protected void onInitialize() {
                        super.onInitialize();
+                       add(tzDropDown);
                        add(new 
RequiredTextField<String>("username").setLabel(new 
ResourceModel("install.wizard.params.step1.username")).add(minimumLength(USER_LOGIN_MINIMUM_LENGTH)));
                        add(new PasswordTextField("password")
                                        .setResetPassword(false).setLabel(new 
ResourceModel("install.wizard.params.step1.password"))
@@ -456,6 +519,11 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
 
                public ParamsStep2() {
                        super(paramsStep1);
+               }
+
+               @Override
+               protected void onInitialize() {
+                       super.onInitialize();
                        add(new CheckBox("allowFrontendRegister"));
                        add(new CheckBox("sendEmailAtRegister"));
                        add(new CheckBox("sendEmailWithVerficationCode"));
@@ -509,40 +577,40 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
                        add(officePath.setLabel(new 
ResourceModel("install.wizard.params.step3.officePath")));
                        add(new 
TextField<Integer>("docDpi").setRequired(true).add(range(50, 600)));
                        add(new 
TextField<Integer>("docQuality").setRequired(true).add(range(1, 100)));
-                       add(new AjaxButton("validateImageMagic") {
+                       add(new BootstrapAjaxButton("validateImageMagic", new 
ResourceModel("install.wizard.db.step.check"), Buttons.Type.Outline_Primary) {
                                private static final long serialVersionUID = 1L;
 
                                @Override
                                protected void onSubmit(AjaxRequestTarget 
target) {
                                        checkMagicPath();
-                                       target.add(getFeedbackPanel());
+                                       target.add(feedback);
                                }
                        });
-                       add(new AjaxButton("validateFfmpeg") {
+                       add(new BootstrapAjaxButton("validateFfmpeg", new 
ResourceModel("install.wizard.db.step.check"), Buttons.Type.Outline_Primary) {
                                private static final long serialVersionUID = 1L;
                                @Override
                                protected void onSubmit(AjaxRequestTarget 
target) {
                                        checkFfmpegPath();
-                                       target.add(getFeedbackPanel());
+                                       target.add(feedback);
                                }
                        });
-                       add(new AjaxButton("validateSox") {
+                       add(new BootstrapAjaxButton("validateSox", new 
ResourceModel("install.wizard.db.step.check"), Buttons.Type.Outline_Primary) {
                                private static final long serialVersionUID = 1L;
                                @Override
                                protected void onSubmit(AjaxRequestTarget 
target) {
                                        checkSoxPath();
-                                       target.add(getFeedbackPanel());
+                                       target.add(feedback);
                                }
                        });
-                       add(new AjaxButton("validateOffice") {
+                       add(new BootstrapAjaxButton("validateOffice", new 
ResourceModel("install.wizard.db.step.check"), Buttons.Type.Outline_Primary) {
                                private static final long serialVersionUID = 1L;
                                @Override
                                protected void onSubmit(AjaxRequestTarget 
target) {
                                        checkOfficePath();
-                                       target.add(getFeedbackPanel());
+                                       target.add(feedback);
                                }
                        });
-                       add(new TooltipBehavior(".info-title"));
+                       add(new TooltipBehavior(".text-info"));
                }
 
                private void reportSuccess(TextField<String> path) {
@@ -632,6 +700,11 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
 
                public ParamsStep4() {
                        super(paramsStep3);
+               }
+
+               @Override
+               protected void onInitialize() {
+                       super.onInitialize();
                        add(new RequiredTextField<String>("cryptClassName")); 
//Validate class
 
                        add(new CheckBox("sipEnable"));
@@ -639,7 +712,7 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
                        add(new TextField<String>("sipExtenContext"));
                        Options options = new Options();
                        options.set("content", "function () { return 
$(this).prop('title'); }");
-                       add(new TooltipBehavior(".info-title", options));
+                       add(new TooltipBehavior(".text-info", options));
                }
 
                @Override
@@ -665,68 +738,72 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
 
        private final class InstallStep extends BaseStep {
                private static final long serialVersionUID = 1L;
-               private final CongratulationsPanel congrat;
+               private final CongratulationsPanel congrat = new 
CongratulationsPanel("status");
                private final WebMarkupContainer container = new 
WebMarkupContainer("container");
-               private final AbstractAjaxTimerBehavior timer;
-               private final ProgressBar progressBar;
-               private final Label desc = new Label("desc", "");
-               private boolean started = false;
-
-               public InstallStep() {
-                       super(paramsStep4);
+               private final UpdatableProgressBar progressBar = new 
UpdatableProgressBar("progress", new Model<>(0), 
BackgroundColorBehavior.Color.Info, true) {
+                       private static final long serialVersionUID = 1L;
 
-                       // Timer //
-                       container.add(timer = new 
AbstractAjaxTimerBehavior(Duration.ofSeconds(1)) {
-                               private static final long serialVersionUID = 1L;
+                       @Override
+                       protected IModel<Integer> newValue() {
+                               return Model.of(initvalues.getProgress());
+                       }
 
-                               @Override
-                               protected void onTimer(AjaxRequestTarget 
target) {
-                                       if (!started) {
-                                               timer.stop(target);
-                                               return;
-                                       }
-                                       if (th != null) {
-                                               timer.stop(target);
-                                               progressBar.setVisible(false);
-                                               
target.add(container.replace(new ErrorMessagePanel("status", 
getString("install.wizard.install.failed"), th))
-                                                       , desc.setVisible(false)
-                                                       );
-                                       } else {
-                                               
progressBar.setModelObject(initvalues.getProgress());
-                                               progressBar.refresh(target);
-                                       }
+                       @Override
+                       protected void 
onPostProcessTarget(IPartialPageRequestHandler target) {
+                               if (!started) {
+                                       stop(target);
+                                       return;
                                }
-                       });
-                       container.add(progressBar = new ProgressBar("progress", 
new Model<>(0)) {
-                               private static final long serialVersionUID = 1L;
-
-                               @Override
-                               protected void onComplete(AjaxRequestTarget 
target) {
-                                       timer.stop(target);
+                               if (th != null) {
+                                       stop(target);
                                        progressBar.setVisible(false);
-                                       congrat.show(initDbType != dbType);
-                                       target.add(container, 
desc.setVisible(false));
+                                       target.add(container.replace(new 
ErrorMessagePanel("status", getString("install.wizard.install.failed"), th))
+                                               , desc.setVisible(false)
+                                               );
+                               } else {
+                                       //onComplete(target);
                                }
-                       });
+                               super.onPostProcessTarget(target);
+                       }
 
-                       container.add(congrat = new 
CongratulationsPanel("status"));
-                       congrat.setVisible(false);
+                       @Override
+                       protected void onComplete(IPartialPageRequestHandler 
target) {
+                               stop(target);
+                               progressBar.setVisible(false);
+                               congrat.show(initDbType != dbType);
+                               target.add(container, desc.setVisible(false));
+                       }
+               };
+               private final Label desc = new Label("desc", "");
+               private boolean started = false;
 
-                       add(container.setOutputMarkupId(true));
+               public InstallStep() {
+                       super(paramsStep4);
                }
 
-               public void startInstallation(AjaxRequestTarget target) {
+               @Override
+               public void applyState() {
                        started = true;
-                       timer.restart(target);
                        new Thread(new InstallProcess(initvalues)
                                , "Openmeetings - Installation").start();
                        
desc.setDefaultModelObject(getString("install.wizard.install.started"));
-                       target.add(desc, container);
+                       
RequestCycle.get().find(AjaxRequestTarget.class).ifPresent(target -> {
+                               progressBar.restart(target).setModelObject(0);
+                               buttons.forEach(b -> {
+                                       target.add(b.setEnabled(false));
+                               });
+                               target.add(desc, container);
+                       });
                }
 
                @Override
                protected void onInitialize() {
                        super.onInitialize();
+                       
progressBar.updateInterval(Duration.ofSeconds(1)).stop(null).striped(false).setOutputMarkupId(true);
+                       container.add(progressBar, congrat);
+                       congrat.setVisible(false);
+
+                       add(container.setOutputMarkupId(true));
                        
desc.setDefaultModelObject(getString("install.wizard.install.desc"));
                        add(desc.setOutputMarkupId(true));
                }
@@ -753,7 +830,7 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
                @Override
                public void run() {
                        try {
-                               installer.loadAll(getModelObject(), true);
+                               installer.loadAll(model.getObject(), true);
                        } catch (Exception e) {
                                th = e;
                        }
@@ -779,7 +856,7 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
 
                WizardDropDown(String id) {
                        super(id);
-                       propModel = 
((CompoundPropertyModel<InstallationConfig>)InstallWizard.this.getModel()).bind(id);
+                       propModel = model.bind(id);
                        setModel(new PropertyModel<T>(this, "option"));
                }
 
@@ -856,7 +933,7 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
                                        option = op;
                                }
                                list.add(op);
-                               if (option == null && me.getKey().intValue() == 
InstallWizard.this.getModelObject().getDefaultLangId()) {
+                               if (option == null && me.getKey().intValue() == 
model.getObject().getDefaultLangId()) {
                                        option = op;
                                }
                        }
@@ -865,10 +942,8 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
        }
 
        @Override
-       protected void onFinish(AjaxRequestTarget target) {
-               for (DialogButton b : getButtons()) {
-                       b.setEnabled(false, target);
-               }
-               installStep.startInstallation(target);
+       protected void onDetach() {
+               model.detach();
+               super.onDetach();
        }
 }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
index da2f711..04314da 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
@@ -21,7 +21,7 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:extend>
-       <div>
+       <div class="container installer">
                <div wicket:id="wizard"></div>
        </div>
 </wicket:extend>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
index 84ee31e..4a87fa0 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
@@ -27,13 +27,18 @@ import 
org.apache.wicket.protocol.http.request.WebClientInfo;
 
 public class InstallWizardPage extends BaseNotInitedPage {
        private static final long serialVersionUID = 1L;
-       private final InstallWizard wizard;
 
        public InstallWizardPage() {
                if (Application.isInstalled()) {
                        throw new 
RestartResponseException(Application.get().getHomePage());
                }
-               add(wizard = new InstallWizard("wizard", 
getString("install.wizard.install.header")));
+       }
+
+       @Override
+       protected void onInitialize() {
+               super.onInitialize();
+               final InstallWizard wizard = new InstallWizard("wizard", 
getString("install.wizard.install.header"));
+               add(wizard.setEnabled(false));
                // This code is required to detect time zone offset
                add(new AjaxClientInfoBehavior() {
                        private static final long serialVersionUID = 1L;
@@ -42,7 +47,7 @@ public class InstallWizardPage extends BaseNotInitedPage {
                        protected void onClientInfo(AjaxRequestTarget target, 
WebClientInfo clientInfo) {
                                super.onClientInfo(target, clientInfo);
                                wizard.initTzDropDown();
-                               wizard.open(target);
+                               target.add(wizard.setEnabled(true));
                        }
                });
        }
diff --git a/openmeetings-web/src/main/webapp/css/raw-admin.css 
b/openmeetings-web/src/main/webapp/css/raw-admin.css
index 91c6d2a..5f7e222 100644
--- a/openmeetings-web/src/main/webapp/css/raw-admin.css
+++ b/openmeetings-web/src/main/webapp/css/raw-admin.css
@@ -45,7 +45,7 @@
        vertical-align: top;
        overflow-y: auto;
 }
-.adminForm legend {
+.adminForm legend, .installer legend {
        padding: 0.2em 0.5em;
        margin: 0px 10px;
        font-style: italic;
diff --git a/openmeetings-web/src/main/webapp/css/raw-general.css 
b/openmeetings-web/src/main/webapp/css/raw-general.css
index a4ed5a5..34d8045 100644
--- a/openmeetings-web/src/main/webapp/css/raw-general.css
+++ b/openmeetings-web/src/main/webapp/css/raw-general.css
@@ -762,3 +762,7 @@ select.messages.selector {
 .popover.confirmation.show {
        z-index: 3000; /* FIXME TODO move this to variables */
 }
+.installer {
+       overflow-y: auto;
+       height: calc(100% - var(--header-height));
+}
diff --git a/pom.xml b/pom.xml
index a12fe02..6784ff9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -75,7 +75,7 @@
                <forbiddenapis.version>2.7</forbiddenapis.version>
                <!-- dependency versions -->
                <junit.version>5.6.1</junit.version>
-               <wicket.version>9.0.0-M5-SNAPSHOT</wicket.version>
+               <wicket.version>9.0.0-M5</wicket.version>
                <wicketju.version>9.0.0-M4</wicketju.version>
                <wickets.version>9.0.0-M5-SNAPSHOT</wickets.version>
                <wicket-bootstrap.version>5.0.0-M1</wicket-bootstrap.version>

Reply via email to