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

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

commit 45be7abc59cc7da8947329bcde473bf055b5ae0b
Author: Maxim Solodovnik <solomax...@gmail.com>
AuthorDate: Sat Jul 10 19:03:41 2021 +0700

    [OPENMEETINGS-2637] More work on migration
---
 openmeetings-web/src/main/front/chat/src/chat.js   |   2 +-
 .../openmeetings/web/admin/AdminActionsPanel.java  |   2 +-
 .../web/admin/configurations/ConfigsPanel.html     |   2 +-
 .../web/admin/connection/ConnectionsPanel.html     |   2 +-
 .../web/admin/connection/ConnectionsPanel.java     |   2 +-
 .../openmeetings/web/admin/email/EmailForm.java    |   2 +-
 .../openmeetings/web/admin/email/EmailPanel.html   |   2 +-
 .../openmeetings/web/admin/extra/ExtraPanel.html   |   2 +-
 .../web/admin/groups/GroupUsersPanel.html          |   2 +-
 .../web/admin/groups/GroupUsersPanel.java          |   2 +-
 .../openmeetings/web/admin/groups/GroupsPanel.html |   2 +-
 .../openmeetings/web/admin/labels/LangPanel.html   |   2 +-
 .../openmeetings/web/admin/labels/LangPanel.java   |   2 +-
 .../openmeetings/web/admin/ldaps/LdapsPanel.html   |   2 +-
 .../openmeetings/web/admin/oauth/OAuthForm.java    |   2 +-
 .../openmeetings/web/admin/oauth/OAuthPanel.html   |   4 +-
 .../openmeetings/web/admin/rooms/RoomForm.java     |   2 +-
 .../openmeetings/web/admin/rooms/RoomsPanel.html   |   8 +-
 .../openmeetings/web/admin/users/UsersPanel.html   |   2 +-
 .../openmeetings/web/common/FormActionsPanel.java  |   2 +-
 .../apache/openmeetings/web/common/MainPanel.java  |   2 +-
 .../web/common/UploadableImagePanel.java           |   2 +-
 .../common/confirmation/ConfirmationBehavior.java  | 112 ----
 .../common/confirmation/ConfirmationConfig.java    | 114 ----
 .../common/confirmation/ConfirmationHelper.java    |  44 ++
 .../common/confirmation/bootstrap-confirmation.js  | 596 ---------------------
 .../apache/openmeetings/web/room/NetTestPanel.html |  32 +-
 .../apache/openmeetings/web/room/RoomPanel.html    |   8 +-
 .../openmeetings/web/room/VideoSettings.html       |   2 +-
 .../web/room/activities/ActivitiesPanel.html       |   2 +-
 .../web/room/poll/PollResultsDialog.java           |   2 +-
 .../apache/openmeetings/web/room/raw-nettest.js    |   2 +-
 .../openmeetings/web/room/sidebar/RoomSidebar.html |   8 +-
 .../apache/openmeetings/web/room/wb/WbPanel.html   |  14 +-
 .../openmeetings/web/user/OmWysiwygToolbar.html    |   4 +-
 .../web/user/calendar/AppointmentDialog.html       |   6 +-
 .../web/user/calendar/AppointmentDialog.java       |   2 +-
 .../web/user/calendar/CalendarDialog.java          |   2 +-
 .../openmeetings/web/user/chat/ChatToolbar.html    |  12 +-
 .../openmeetings/web/user/chat/ChatToolbar.java    |   4 +-
 .../web/user/dashboard/RssWidgetView.html          |   4 +-
 .../web/user/dashboard/StartWidgetView.html        |   8 +-
 .../dashboard/admin/AdminCleanupInfoDialog.java    |   2 +-
 .../apache/openmeetings/web/user/dashboard/rss.js  |   2 +-
 .../web/user/profile/InvitationDetails.java        |   2 +-
 .../web/user/profile/InvitationsPanel.html         |   2 +-
 .../web/user/profile/MessagesContactsPanel.java    |   2 +-
 .../web/user/profile/UserSearchPanel.html          |   2 +-
 .../web/user/profile/WidgetsPanel.html             |   2 +-
 .../WEB-INF/classes/META-INF/mysql_persistence.xml |   2 +-
 .../webapp/WEB-INF/classes/openmeetings.properties |   4 +-
 .../src/main/webapp/css/raw-activities.css         |   2 +-
 openmeetings-web/src/main/webapp/css/raw-admin.css |   4 +-
 openmeetings-web/src/main/webapp/css/raw-chat.css  |   2 +-
 .../src/main/webapp/css/raw-general.css            |  11 +-
 openmeetings-web/src/main/webapp/css/raw-menu.css  |   4 +-
 .../src/main/webapp/css/raw-nettest.css            |  20 +-
 openmeetings-web/src/main/webapp/css/raw-room.css  |  58 +-
 openmeetings-web/src/main/webapp/css/raw-tree.css  |  18 +-
 openmeetings-web/src/main/webapp/css/raw-wb.css    |   2 +-
 60 files changed, 205 insertions(+), 966 deletions(-)

diff --git a/openmeetings-web/src/main/front/chat/src/chat.js 
b/openmeetings-web/src/main/front/chat/src/chat.js
index e5a5086..a9cba60 100644
--- a/openmeetings-web/src/main/front/chat/src/chat.js
+++ b/openmeetings-web/src/main/front/chat/src/chat.js
@@ -214,7 +214,7 @@ function _addTab(id, label) {
        if (!label) {
                label = id === "chatTab-all" ? allPrefix : roomPrefix + 
id.substr(9);
        }
-       const link = $('<a class="nav-link" data-toggle="tab" role="tab">')
+       const link = $('<a class="nav-link" data-bs-toggle="tab" role="tab">')
                .attr('aria-controls', id)
                .attr('href', '#' + id).text(label)
                , li = $('<li class="nav-item">').append(link);
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminActionsPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminActionsPanel.java
index 68f2cd9..2a1ddad 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminActionsPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminActionsPanel.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.web.admin;
 
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 
 import org.apache.openmeetings.web.common.FormActionsPanel;
 import org.apache.wicket.ajax.AjaxRequestTarget;
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 8f29abd..0e09781 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
@@ -23,7 +23,7 @@
 <wicket:extend>
        <div class="adminPanelColumnTable col-6">
                <div class="adminNav" wicket:id="navigator">[dataview 
navigator]</div>
-               <table class="list-table table-striped table-hover">
+               <table class="list-table table table-striped table-hover">
                        <thead>
                                <tr>
                                        <th class="col-1"><span 
wicket:id="orderById"></span><wicket:message key="188" /></th>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.html
index 56fd80e..b42d4c1 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.html
@@ -23,7 +23,7 @@
 <wicket:extend>
        <div class="adminPanelColumnTable col-6">
                <div class="adminNav" wicket:id="navigator">[dataview 
navigator]</div>
-               <table class="list-table table-striped table-hover">
+               <table class="list-table table table-striped table-hover">
                        <thead>
                                <tr>
                                        <th class="col-2"><wicket:message 
key="45" /></th>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
index 9132b84..39160b7 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.web.admin.connection;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelConfirm;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java
index 4ea2256..d0c530b 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailForm.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.web.admin.email;
 
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 
 import org.apache.openmeetings.db.dao.basic.MailMessageDao;
 import org.apache.openmeetings.db.entity.basic.MailMessage;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
index 18215f0..0e50931 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
@@ -23,7 +23,7 @@
 <wicket:extend>
        <div class="adminPanelColumnTable col-6">
                <div class="adminNav" wicket:id="navigator">[dataview 
navigator]</div>
-               <table class="list-table table-striped table-hover">
+               <table class="list-table table table-striped table-hover">
                        <thead>
                                <tr>
                                        <th class="col-1"><span 
wicket:id="orderById"></span><wicket:message key="188" /></th>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraPanel.html
index ede1f9d..0129cd6 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/extra/ExtraPanel.html
@@ -23,7 +23,7 @@
 <wicket:extend>
        <div class="adminPanelColumnTable col-6">
                <div class="adminNav" wicket:id="navigator">[dataview 
navigator]</div>
-               <table class="list-table table-striped table-hover">
+               <table class="list-table table table-striped table-hover">
                        <thead>
                                <tr>
                                        <th class="col-1"><span 
wicket:id="orderById"></span><wicket:message key="188" /></th>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
index b6c8dc6..3532dcc 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
@@ -22,7 +22,7 @@
 <wicket:panel>
        <div class="usergroupspanel">
                <div class="adminNav" wicket:id="navigator">[dataview 
navigator]</div>
-               <table class="list-table small table-striped table-hover">
+               <table class="list-table small table table-striped table-hover">
                        <thead>
                                <tr>
                                        <th class="col-1" 
wicket:message="title:98"><wicket:message key="98" /></th>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
index 10a7605..9c5e899 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.web.admin.groups;
 
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
index 12a5218..8ba3630 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
@@ -23,7 +23,7 @@
 <wicket:extend>
        <div class="adminPanelColumnTable col-6">
                <div class="adminNav" wicket:id="navigator">[dataview 
navigator]</div>
-               <table class="list-table table-striped table-hover">
+               <table class="list-table table table-striped table-hover">
                        <thead>
                                <tr>
                                        <th class="col-1"><span 
wicket:id="orderById"></span><wicket:message key="188" /></th>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
index f833b68..263b1c8 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
@@ -38,7 +38,7 @@
                        </div>
                </form>
                <div class="adminNav" wicket:id="navigator">[dataview 
navigator]</div>
-               <table class="list-table table-striped table-hover">
+               <table class="list-table table table-striped table-hover">
                        <thead>
                                <tr>
                                        <th class="col-6"><span 
wicket:id="orderByName"></span><wicket:message key="165" /></th>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
index 93cde50..2219359 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.web.admin.labels;
 
 import static java.time.Duration.ZERO;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 import static org.apache.wicket.request.resource.ContentDisposition.ATTACHMENT;
 
 import java.io.IOException;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.html
index 479f70c..6b0baed 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.html
@@ -23,7 +23,7 @@
 <wicket:extend>
        <div class="adminPanelColumnTable col-6">
                <div class="adminNav" wicket:id="navigator">[dataview 
navigator]</div>
-               <table class="list-table table-striped table-hover">
+               <table class="list-table table table-striped table-hover">
                        <thead>
                                <tr>
                                        <th class="col-1"><span 
wicket:id="orderById"></span><wicket:message key="188" /></th>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
index 63a724a..a04da13 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.web.admin.oauth;
 
 import static org.apache.openmeetings.web.app.UserManager.getRedirectUri;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 
 import java.util.AbstractMap.SimpleEntry;
 import java.util.ArrayList;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html
index 60c008e..fa67bc3 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html
@@ -23,7 +23,7 @@
 <wicket:extend>
        <div class="adminPanelColumnTable col-6">
                <div class="adminNav" wicket:id="navigator">[dataview 
navigator]</div>
-               <table class="list-table table-striped table-hover">
+               <table class="list-table table table-striped table-hover">
                        <thead>
                                <tr>
                                        <th class="col-1"><span 
wicket:id="orderById"></span><wicket:message key="188" /></th>
@@ -110,7 +110,7 @@
                                                        <button type="button" 
wicket:id="addMapping"></button>
                                                </div>
                                        </div>
-                                       <table class="list-table small 
table-striped table-hover">
+                                       <table class="list-table small table 
table-striped table-hover">
                                                <thead>
                                                        <tr>
                                                                <th 
class="col-7"><wicket:message key="admin.oauth.attr.om" /></th>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
index b93776d..6048d49 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
@@ -25,7 +25,7 @@ import static 
org.apache.openmeetings.web.app.Application.kickUser;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CHANGE;
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 import static 
org.apache.wicket.validation.validator.StringValidator.maximumLength;
 
 import java.util.ArrayList;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
index 11b87f2..2972a75 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
@@ -23,7 +23,7 @@
 <wicket:extend>
        <div class="adminPanelColumnTable rooms col-6">
                <div class="adminNav" wicket:id="navigator">[dataview 
navigator]</div>
-               <table class="list-table table-striped table-hover">
+               <table class="list-table table table-striped table-hover">
                        <thead>
                                <tr>
                                        <th class="col-1"><span 
wicket:id="orderById"></span><wicket:message key="188" /></th>
@@ -191,7 +191,7 @@
                                                        <button type="button" 
wicket:id="addFiles"></button>
                                                </div>
                                        </div>
-                                       <table class="list-table small 
table-striped table-hover">
+                                       <table class="list-table small table 
table-striped table-hover">
                                                <thead>
                                                        <tr>
                                                                <th 
class="col-9"><wicket:message key="165" /></th>
@@ -214,7 +214,7 @@
                                <!-- Users in this Room -->
                                <fieldset>
                                        <legend><wicket:message key="407" 
/></legend>
-                                       <table class="list-table small 
table-striped table-hover">
+                                       <table class="list-table small table 
table-striped table-hover">
                                                <thead>
                                                        <tr>
                                                                <th 
class="col-1"><wicket:message key="188" /></th>
@@ -258,7 +258,7 @@
                                                <div class="om-select2 p-0 
d-inline-block col-8"><select wicket:id="moderator2add" class="input 
w-100"></select></div>
                                        </div>
                                        <div class="formelement" 
wicket:id="moderatorContainer">
-                                               <table class="list-table small 
table-striped table-hover">
+                                               <table class="list-table small 
table table-striped table-hover">
                                                        <thead>
                                                                <tr>
                                                                        <th 
class="col-1 overflow-hidden" wicket:message="title:817"><wicket:message 
key="817" /></th>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.html
index ef56e1b..1e55600 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.html
@@ -23,7 +23,7 @@
 <wicket:extend>
        <div class="adminPanelColumnTable col-6">
                <div class="adminNav" wicket:id="navigator">[dataview 
navigator]</div>
-               <table class="list-table table-striped table-hover">
+               <table class="list-table table table-striped table-hover">
                        <thead>
                                <tr>
                                        <th class="col-1"><span 
wicket:id="orderById"></span> <wicket:message key="188" /></th>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.java
index abd9863..d78f22a 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.java
@@ -18,7 +18,7 @@
  */
 package org.apache.openmeetings.web.common;
 
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
index 76e636c..de66cf5 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
@@ -23,7 +23,7 @@ import static 
org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnabled;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelConfirm;
 import static 
org.apache.openmeetings.web.util.CallbackFunctionHelper.getNamedFunction;
 import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getParam;
 import static org.apache.openmeetings.web.util.OmUrlFragment.CHILD_ID;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
index 26aab2e..0ec1d92 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableImagePanel.java
@@ -19,7 +19,7 @@
 package org.apache.openmeetings.web.common;
 
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.getMaxUploadSize;
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelConfirm;
 
 import java.io.File;
 import java.util.Optional;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmationBehavior.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmationBehavior.java
deleted file mode 100644
index 5b0864f..0000000
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmationBehavior.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.web.common.confirmation;
-
-import static de.agilecoders.wicket.jquery.JQuery.$;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.resource.JQueryPluginResourceReference;
-import org.apache.wicket.util.lang.Args;
-
-import 
de.agilecoders.wicket.core.markup.html.bootstrap.behavior.BootstrapJavascriptBehavior;
-import de.agilecoders.wicket.core.util.References;
-
-/**
- * A behavior that shows a popover with OK/Cancel buttons to confirm an action.
- *
- * @since 0.9.12
- */
-public class ConfirmationBehavior extends BootstrapJavascriptBehavior {
-       /** serialVersionUID. */
-       private static final long serialVersionUID = 1L;
-       /** Configuration. */
-       private final ConfirmationConfig config;
-       /**
-        * Jquery Selector (if you don't want to use the one of the component 
for
-        * singleton for example).
-        */
-       private final String selector;
-
-       /**
-        * Constructor that uses the default configuration
-        */
-       public ConfirmationBehavior() {
-               this(null, new ConfirmationConfig());
-       }
-
-       /**
-        * Constructor that uses a custom configuration
-        *
-        * @param config
-        *            configuration to use
-        */
-       public ConfirmationBehavior(ConfirmationConfig config) {
-               this(null, config);
-       }
-
-       /**
-        * Constructor that uses a custom configuration
-        *
-        * @param config
-        *            configuration to use
-        * @param selector
-        *            Jquery selector to use instead of the one of the component
-        *            (for singleton's option)
-        */
-       public ConfirmationBehavior(String selector, ConfirmationConfig config) 
{
-               this.config = Args.notNull(config, "config");
-               this.selector = selector;
-       }
-
-       @Override
-       public void renderHead(Component component, IHeaderResponse response) {
-               super.renderHead(component, response);
-
-               References.renderWithFilter(response, JavaScriptHeaderItem
-                               .forReference(new 
JQueryPluginResourceReference(ConfirmationBehavior.class, 
"bootstrap-confirmation.js")));
-
-               if (selector == null) {
-                       config.withRootSelector(component.getMarkupId());
-                       response.render($(component).chain("confirmation", 
config).asDomReadyScript());
-               } else {
-                       config.withRootSelector(selector);
-                       response.render($(selector).chain("confirmation", 
config).asDomReadyScript());
-               }
-       }
-
-       public static ConfirmationBehavior newOkCancelConfirm(Component c, 
String title) {
-               return new ConfirmationBehavior(newOkCancelConfirmCfg(c, 
title));
-       }
-
-       public static ConfirmationConfig newOkCancelConfirmCfg(Component c, 
String title) {
-               return new ConfirmationConfig()
-                               .withBtnCancelLabel(c.getString("lbl.cancel"))
-                               .withBtnOkLabel(c.getString("54"))
-                               .withTitle(title);
-       }
-
-       public static ConfirmationBehavior newOkCancelDangerConfirm(Component 
c, String title) {
-               return new ConfirmationBehavior(newOkCancelConfirmCfg(c, title)
-                               .withBtnOkClass("btn btn-sm btn-danger")
-                               .withBtnOkIconClass("fas 
fa-exclamation-triangle")
-                               );
-       }
-}
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmationConfig.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmationConfig.java
deleted file mode 100644
index ddffd8a..0000000
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmationConfig.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.web.common.confirmation;
-
-import org.apache.wicket.util.lang.Args;
-
-import 
de.agilecoders.wicket.core.markup.html.bootstrap.components.TooltipConfig;
-import de.agilecoders.wicket.jquery.AbstractConfig;
-import de.agilecoders.wicket.jquery.IKey;
-import de.agilecoders.wicket.jquery.Key;
-
-/**
- * The configuration of {@link ConfirmationBehavior}. <br/>
- * See
- * <a href="http://mistic100.github.io/Bootstrap-Confirmation/#usage";>Bootstrap
- * Confirmation usage</a> for all possible options and their meaning.
- */
-public class ConfirmationConfig extends AbstractConfig {
-       private static final long serialVersionUID = 1L;
-       private static final IKey<String> Title = new Key<>("title", "Are you 
sure?");
-       private static final IKey<Boolean> Singleton = new Key<>("singleton", 
Boolean.FALSE);
-       private static final IKey<Boolean> Popout = new Key<>("popout", 
Boolean.FALSE);
-       private static final IKey<String> BtnOkClass = new Key<>("btnOkClass", 
"btn-xs btn-primary");
-       private static final IKey<String> BtnOkIconClass = new 
Key<>("btnOkIconClass", "glyphicon glyphicon-ok");
-       private static final IKey<String> BtnOkIconContent = new 
Key<>("btnOkIconContent");
-       private static final IKey<String> BtnOkLabel = new Key<>("btnOkLabel", 
"Yes");
-       private static final IKey<String> BtnCancelClass = new 
Key<>("btnCancelClass", "btn-xs btn-default");
-       private static final IKey<String> BtnCancelIconClass = new 
Key<>("btnCancelIconClass", "glyphicon glyphicon-remove");
-       private static final IKey<String> BtnCancelIconContent = new 
Key<>("btnCancelIconContent");
-       private static final IKey<String> BtnCancelLabel = new 
Key<>("btnCancelLabel", "No");
-       private static final IKey<TooltipConfig.Placement> Placement = new 
Key<>("placement", TooltipConfig.Placement.top);
-       private static final IKey<String> RootSelector = new 
Key<>("rootSelector");
-
-       public ConfirmationConfig withTitle(String title) {
-               put(Title, title);
-               return this;
-       }
-
-       ConfirmationConfig withRootSelector(String rootSelector) {
-               put(RootSelector, rootSelector);
-               return this;
-       }
-
-       public ConfirmationConfig withBtnOkClass(String btnOkClass) {
-               put(BtnOkClass, btnOkClass);
-               return this;
-       }
-
-       public ConfirmationConfig withBtnOkIconClass(String btnOkIconClass) {
-               put(BtnOkIconClass, btnOkIconClass);
-               return this;
-       }
-
-       public ConfirmationConfig withBtnOkIconContent(String btnOkIconContent) 
{
-               put(BtnOkIconContent, btnOkIconContent);
-               return this;
-       }
-
-       public ConfirmationConfig withBtnOkLabel(String btnOkLabel) {
-               put(BtnOkLabel, btnOkLabel);
-               return this;
-       }
-
-       public ConfirmationConfig withBtnCancelClass(String btnCancelClass) {
-               put(BtnCancelClass, btnCancelClass);
-               return this;
-       }
-
-       public ConfirmationConfig withBtnCancelIconClass(String 
btnCancelIconClass) {
-               put(BtnCancelIconClass, btnCancelIconClass);
-               return this;
-       }
-
-       public ConfirmationConfig withBtnCancelIconContent(String 
btnCancelIconContent) {
-               put(BtnCancelIconContent, btnCancelIconContent);
-               return this;
-       }
-
-       public ConfirmationConfig withBtnCancelLabel(String btnCancelLabel) {
-               put(BtnCancelLabel, btnCancelLabel);
-               return this;
-       }
-
-       public ConfirmationConfig withSingleton(boolean singleton) {
-               put(Singleton, singleton);
-               return this;
-       }
-
-       public ConfirmationConfig withPopout(boolean popout) {
-               put(Popout, popout);
-               return this;
-       }
-
-       public ConfirmationConfig withPlacement(TooltipConfig.Placement 
placement) {
-               put(Placement, Args.notNull(placement, "placement"));
-               return this;
-       }
-}
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmationHelper.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmationHelper.java
new file mode 100644
index 0000000..b3a06cc
--- /dev/null
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmationHelper.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.common.confirmation;
+
+import org.apache.wicket.Component;
+
+import 
de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationBehavior;
+import 
de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationConfig;
+
+public class ConfirmationHelper {
+       public static ConfirmationBehavior newOkCancelConfirm(Component c, 
String title) {
+               return new ConfirmationBehavior(newOkCancelConfirmCfg(c, 
title));
+       }
+
+       public static ConfirmationConfig newOkCancelConfirmCfg(Component c, 
String title) {
+               return new ConfirmationConfig()
+                               .withBtnCancelLabel(c.getString("lbl.cancel"))
+                               .withBtnOkLabel(c.getString("54"))
+                               .withTitle(title);
+       }
+
+       public static ConfirmationBehavior newOkCancelDangerConfirm(Component 
c, String title) {
+               return new ConfirmationBehavior(newOkCancelConfirmCfg(c, title)
+                               .withBtnOkClass("btn btn-sm btn-danger")
+                               .withBtnOkIconClass("fas 
fa-exclamation-triangle")
+                               );
+       }
+}
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/bootstrap-confirmation.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/bootstrap-confirmation.js
deleted file mode 100644
index 72fd81a..0000000
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/bootstrap-confirmation.js
+++ /dev/null
@@ -1,596 +0,0 @@
-/*!
- * Bootstrap Confirmation (v4.1.0)
- * @copyright 2013 Nimit Suwannagate <ethaiz...@hotmail.com>
- * @copyright 2014-2018 Damien "Mistic" Sorel <cont...@git.strangeplanet.fr>
- * @licence Apache License, Version 2.0
- */
-/* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
-(function (global, factory) {
-  typeof exports === 'object' && typeof module !== 'undefined' ? 
factory(require('jquery'), require('bootstrap')) :
-  typeof define === 'function' && define.amd ? define(['jquery', 'bootstrap'], 
factory) :
-  (global = global || self, factory(global.jQuery));
-}(this, function ($) { 'use strict';
-
-  $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
-
-  function _defineProperties(target, props) {
-    for (var i = 0; i < props.length; i++) {
-      var descriptor = props[i];
-      descriptor.enumerable = descriptor.enumerable || false;
-      descriptor.configurable = true;
-      if ("value" in descriptor) descriptor.writable = true;
-      Object.defineProperty(target, descriptor.key, descriptor);
-    }
-  }
-
-  function _createClass(Constructor, protoProps, staticProps) {
-    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
-    if (staticProps) _defineProperties(Constructor, staticProps);
-    return Constructor;
-  }
-
-  function _defineProperty(obj, key, value) {
-    if (key in obj) {
-      Object.defineProperty(obj, key, {
-        value: value,
-        enumerable: true,
-        configurable: true,
-        writable: true
-      });
-    } else {
-      obj[key] = value;
-    }
-
-    return obj;
-  }
-
-  function _objectSpread(target) {
-    for (var i = 1; i < arguments.length; i++) {
-      var source = arguments[i] != null ? arguments[i] : {};
-      var ownKeys = Object.keys(source);
-
-      if (typeof Object.getOwnPropertySymbols === 'function') {
-        ownKeys = 
ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
-          return Object.getOwnPropertyDescriptor(source, sym).enumerable;
-        }));
-      }
-
-      ownKeys.forEach(function (key) {
-        _defineProperty(target, key, source[key]);
-      });
-    }
-
-    return target;
-  }
-
-  function _inheritsLoose(subClass, superClass) {
-    subClass.prototype = Object.create(superClass.prototype);
-    subClass.prototype.constructor = subClass;
-    subClass.__proto__ = superClass;
-  }
-
-  if (typeof $.fn.popover === 'undefined' || 
$.fn.popover.Constructor.VERSION.split('.').shift() !== '4') {
-    throw new Error('Bootstrap Confirmation 4 requires Bootstrap Popover 4');
-  }
-
-  var Popover = $.fn.popover.Constructor;
-
-  /**
-   * ------------------------------------------------------------------------
-   * Constants
-   * ------------------------------------------------------------------------
-   */
-
-  var NAME = 'confirmation';
-  var VERSION = '4.1.0';
-  var DATA_KEY = "bs." + NAME;
-  var EVENT_KEY = "." + DATA_KEY;
-  var JQUERY_NO_CONFLICT = $.fn[NAME];
-  var BTN_CLASS_BASE = 'h-100 d-flex align-items-center';
-  var BTN_CLASS_DEFAULT = 'btn btn-sm';
-
-  var DefaultType = _objectSpread({}, Popover.DefaultType, {
-    singleton: 'boolean',
-    popout: 'boolean',
-    copyAttributes: '(string|array)',
-    onConfirm: 'function',
-    onCancel: 'function',
-    btnOkClass: 'string',
-    btnOkLabel: 'string',
-    btnOkIconClass: 'string',
-    btnOkIconContent: 'string',
-    btnCancelClass: 'string',
-    btnCancelLabel: 'string',
-    btnCancelIconClass: 'string',
-    btnCancelIconContent: 'string',
-    buttons: 'array'
-  });
-
-  var Default = _objectSpread({}, Popover.Default, {
-    _attributes: {},
-    _selector: null,
-    placement: 'top',
-    title: 'Are you sure?',
-    trigger: 'click',
-    confirmationEvent: undefined,
-    content: '',
-    singleton: false,
-    popout: false,
-    copyAttributes: 'href target',
-    onConfirm: $.noop,
-    onCancel: $.noop,
-    btnOkClass: BTN_CLASS_DEFAULT + " btn-primary",
-    btnOkLabel: 'Yes',
-    btnOkIconClass: '',
-    btnOkIconContent: '',
-    btnCancelClass: BTN_CLASS_DEFAULT + " btn-secondary",
-    btnCancelLabel: 'No',
-    btnCancelIconClass: '',
-    btnCancelIconContent: '',
-    buttons: [],
-    // @formatter:off
-    template: "\n<div class=\"popover confirmation\">\n  <div 
class=\"arrow\"></div>\n  <h3 class=\"popover-header\"></h3>\n  <div 
class=\"popover-body\">\n    <p class=\"confirmation-content\"></p>\n    <div 
class=\"confirmation-buttons text-center\">\n      <div 
class=\"btn-group\"></div>\n    </div>\n  </div>\n</div>" // @formatter:on
-
-  });
-
-  if (Default.whiteList) {
-    Default.whiteList['*'].push('data-apply', 'data-dismiss');
-  }
-
-  var ClassName = {
-    FADE: 'fade',
-    SHOW: 'show'
-  };
-  var Selector = {
-    TITLE: '.popover-header',
-    CONTENT: '.confirmation-content',
-    BUTTONS: '.confirmation-buttons .btn-group'
-  };
-  var Keymap = {
-    13: 'Enter',
-    27: 'Escape',
-    39: 'ArrowRight',
-    40: 'ArrowDown'
-  };
-  var Event = {
-    HIDE: "hide" + EVENT_KEY,
-    HIDDEN: "hidden" + EVENT_KEY,
-    SHOW: "show" + EVENT_KEY,
-    SHOWN: "shown" + EVENT_KEY,
-    INSERTED: "inserted" + EVENT_KEY,
-    CLICK: "click" + EVENT_KEY,
-    FOCUSIN: "focusin" + EVENT_KEY,
-    FOCUSOUT: "focusout" + EVENT_KEY,
-    MOUSEENTER: "mouseenter" + EVENT_KEY,
-    MOUSELEAVE: "mouseleave" + EVENT_KEY,
-    CONFIRMED: "confirmed" + EVENT_KEY,
-    CANCELED: "canceled" + EVENT_KEY,
-    KEYUP: "keyup" + EVENT_KEY
-  };
-  /**
-   * ------------------------------------------------------------------------
-   * Class Definition
-   * ------------------------------------------------------------------------
-   */
-  // keep track of the last openned confirmation for keyboard navigation
-
-  var activeConfirmation;
-
-  var Confirmation =
-  /*#__PURE__*/
-  function (_Popover) {
-    _inheritsLoose(Confirmation, _Popover);
-
-    _createClass(Confirmation, null, [{
-      key: "VERSION",
-      // Getters
-      get: function get() {
-        return VERSION;
-      }
-    }, {
-      key: "Default",
-      get: function get() {
-        return Default;
-      }
-    }, {
-      key: "NAME",
-      get: function get() {
-        return NAME;
-      }
-    }, {
-      key: "DATA_KEY",
-      get: function get() {
-        return DATA_KEY;
-      }
-    }, {
-      key: "Event",
-      get: function get() {
-        return Event;
-      }
-    }, {
-      key: "EVENT_KEY",
-      get: function get() {
-        return EVENT_KEY;
-      }
-    }, {
-      key: "DefaultType",
-      get: function get() {
-        return DefaultType;
-      } // Constructor
-
-    }]);
-
-    function Confirmation(element, config) {
-      var _this;
-
-      _this = _Popover.call(this, element, config) || this;
-      element.setAttribute('title', 
element.getAttribute('data-original-title'));
-      element.setAttribute('data-original-title', '');
-
-      if ((_this.config.popout || _this.config.singleton) && 
!_this.config.rootSelector) {
-        throw new Error('The rootSelector option is required to use popout and 
singleton features since jQuery 3.');
-      } // keep trace of selectors
-
-
-      _this._isDelegate = false;
-
-      if (config.selector) {
-        // container of buttons
-        config._selector = config.rootSelector + " " + config.selector;
-        _this.config._selector = config._selector;
-      } else if (config._selector) {
-        // children of container
-        _this.config._selector = config._selector;
-        _this._isDelegate = true;
-      } else {
-        // standalone
-        _this.config._selector = config.rootSelector;
-      }
-
-      if (_this.config.confirmationEvent === undefined) {
-        _this.config.confirmationEvent = _this.config.trigger;
-      }
-
-      if (!_this.config.selector) {
-        _this._copyAttributes();
-      }
-
-      _this._setConfirmationListeners();
-
-      return _this;
-    } // Overrides
-
-
-    var _proto = Confirmation.prototype;
-
-    _proto.isWithContent = function isWithContent() {
-      return true;
-    };
-
-    _proto.setContent = function setContent() {
-      var $tip = $(this.getTipElement());
-
-      var content = this._getContent();
-
-      if (typeof content === 'function') {
-        content = content.call(this.element);
-      }
-
-      this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
-      $tip.find(Selector.CONTENT).toggle(!!content);
-
-      if (content) {
-        this.setElementContent($tip.find(Selector.CONTENT), content);
-      }
-
-      if (this.config.buttons.length > 0) {
-        this._setButtons($tip, this.config.buttons);
-      } else {
-        this._setStandardButtons($tip);
-      }
-
-      $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
-
-      this._setupKeyupEvent();
-    };
-
-    _proto.dispose = function dispose() {
-      $('body').off(Event.CLICK + "." + this.uid);
-      this.eventBody = false;
-
-      this._cleanKeyupEvent();
-
-      _Popover.prototype.dispose.call(this);
-    };
-
-    _proto.hide = function hide(callback) {
-      this._cleanKeyupEvent();
-
-      _Popover.prototype.hide.call(this, callback);
-    } // Private
-
-    /**
-     * Copy the value of `copyAttributes` on the config object
-     * @private
-     */
-    ;
-
-    _proto._copyAttributes = function _copyAttributes() {
-      var _this2 = this;
-
-      this.config._attributes = {};
-
-      if (this.config.copyAttributes) {
-        if (typeof this.config.copyAttributes === 'string') {
-          this.config.copyAttributes = this.config.copyAttributes.split(' ');
-        }
-      } else {
-        this.config.copyAttributes = [];
-      }
-
-      this.config.copyAttributes.forEach(function (attr) {
-        _this2.config._attributes[attr] = $(_this2.element).attr(attr);
-      });
-    }
-    /**
-     * Custom event listeners for popouts and singletons
-     * @private
-     */
-    ;
-
-    _proto._setConfirmationListeners = function _setConfirmationListeners() {
-      var self = this;
-
-      if (!this.config.selector) {
-        // cancel original event
-        $(this.element).on(this.config.trigger, function (e, ack) {
-          if (!ack) {
-            e.preventDefault();
-            e.stopPropagation();
-            e.stopImmediatePropagation();
-          }
-        }); // manage singleton
-
-        $(this.element).on(Event.SHOWN, function () {
-          if (self.config.singleton) {
-            // close all other popover already initialized
-            $(self.config._selector).not($(this)).filter(function () {
-              return $(this).data(DATA_KEY) !== undefined;
-            }).confirmation('hide');
-          }
-        });
-      } else {
-        // cancel original event
-        $(this.element).on(this.config.trigger, this.config.selector, function 
(e, ack) {
-          if (!ack) {
-            e.preventDefault();
-            e.stopPropagation();
-            e.stopImmediatePropagation();
-          }
-        });
-      }
-
-      if (!this._isDelegate) {
-        // manage popout
-        this.eventBody = false;
-        this.uid = this.element.id || Confirmation.getUID(NAME + "_group");
-        $(this.element).on(Event.SHOWN, function () {
-          if (self.config.popout && !self.eventBody) {
-            self.eventBody = $('body').on(Event.CLICK + "." + self.uid, 
function (e) {
-              if ($(self.config._selector).is(e.target) || 
$(self.config._selector).has(e.target).length > 0) {
-                return;
-              } // close all popover already initialized
-
-
-              $(self.config._selector).filter(function () {
-                return $(this).data(DATA_KEY) !== undefined;
-              }).confirmation('hide');
-              $('body').off(Event.CLICK + "." + self.uid);
-              self.eventBody = false;
-            });
-          }
-        });
-      }
-    }
-    /**
-     * Init the standard ok/cancel buttons
-     * @param $tip
-     * @private
-     */
-    ;
-
-    _proto._setStandardButtons = function _setStandardButtons($tip) {
-      var buttons = [{
-        class: this.config.btnOkClass,
-        label: this.config.btnOkLabel,
-        iconClass: this.config.btnOkIconClass,
-        iconContent: this.config.btnOkIconContent,
-        attr: this.config._attributes
-      }, {
-        class: this.config.btnCancelClass,
-        label: this.config.btnCancelLabel,
-        iconClass: this.config.btnCancelIconClass,
-        iconContent: this.config.btnCancelIconContent,
-        cancel: true
-      }];
-
-      this._setButtons($tip, buttons);
-    }
-    /**
-     * Init the buttons
-     * @param $tip
-     * @param buttons
-     * @private
-     */
-    ;
-
-    _proto._setButtons = function _setButtons($tip, buttons) {
-      var self = this;
-      var $group = $tip.find(Selector.BUTTONS).empty();
-      buttons.forEach(function (button) {
-        var btn = $('<a 
href="#"></a>').addClass(BTN_CLASS_BASE).addClass(button.class || 
BTN_CLASS_DEFAULT + " btn-secondary").html(button.label || '').attr(button.attr 
|| {});
-
-        if (button.iconClass || button.iconContent) {
-          btn.prepend($('<i></i>').addClass(button.iconClass || 
'').text(button.iconContent || ''));
-        }
-
-        btn.one('click', function (e) {
-          if ($(this).attr('href') === '#') {
-            e.preventDefault();
-          }
-
-          if (button.onClick) {
-            button.onClick.call($(self.element));
-          }
-
-          if (button.cancel) {
-            self.config.onCancel.call(self.element, button.value);
-            $(self.element).trigger(Event.CANCELED, [button.value]);
-          } else {
-            self.config.onConfirm.call(self.element, button.value);
-            $(self.element).trigger(Event.CONFIRMED, [button.value]);
-            $(self.element).trigger(self.config.confirmationEvent, [true]);
-          }
-
-          self.hide();
-        });
-        $group.append(btn);
-      });
-    }
-    /**
-     * Install the keyboatd event handler
-     * @private
-     */
-    ;
-
-    _proto._setupKeyupEvent = function _setupKeyupEvent() {
-      activeConfirmation = this;
-      $(window).off(Event.KEYUP).on(Event.KEYUP, this._onKeyup.bind(this));
-    }
-    /**
-     * Remove the keyboard event handler
-     * @private
-     */
-    ;
-
-    _proto._cleanKeyupEvent = function _cleanKeyupEvent() {
-      if (activeConfirmation === this) {
-        activeConfirmation = undefined;
-        $(window).off(Event.KEYUP);
-      }
-    }
-    /**
-     * Event handler for keyboard navigation
-     * @param event
-     * @private
-     */
-    ;
-
-    _proto._onKeyup = function _onKeyup(event) {
-      if (!this.tip) {
-        this._cleanKeyupEvent();
-
-        return;
-      }
-
-      var $tip = $(this.getTipElement());
-      var key = event.key || Keymap[event.keyCode || event.which];
-      var $group = $tip.find(Selector.BUTTONS);
-      var $active = $group.find('.active');
-      var $next;
-
-      switch (key) {
-        case 'Escape':
-          this.hide();
-          break;
-
-        case 'ArrowRight':
-          if ($active.length && $active.next().length) {
-            $next = $active.next();
-          } else {
-            $next = $group.children().first();
-          }
-
-          $active.removeClass('active');
-          $next.addClass('active').focus();
-          break;
-
-        case 'ArrowLeft':
-          if ($active.length && $active.prev().length) {
-            $next = $active.prev();
-          } else {
-            $next = $group.children().last();
-          }
-
-          $active.removeClass('active');
-          $next.addClass('active').focus();
-          break;
-
-        default:
-          break;
-      }
-    } // Static
-
-    /**
-     * Generates an uui, copied from Bootrap's utils
-     * @param {string} prefix
-     * @returns {string}
-     */
-    ;
-
-    Confirmation.getUID = function getUID(prefix) {
-      var uid = prefix;
-
-      do {
-        // eslint-disable-next-line no-bitwise
-        uid += ~~(Math.random() * 1000000); // "~~" acts like a faster 
Math.floor() here
-      } while (document.getElementById(uid));
-
-      return uid;
-    };
-
-    Confirmation._jQueryInterface = function _jQueryInterface(config) {
-      return this.each(function () {
-        var data = $(this).data(DATA_KEY);
-
-        var _config = typeof config === 'object' ? config : {};
-
-        _config.rootSelector = $(this).selector || _config.rootSelector; // 
this.selector removed in jQuery > 3
-
-        if (!data && /destroy|hide/.test(config)) {
-          return;
-        }
-
-        if (!data) {
-          data = new Confirmation(this, _config);
-          $(this).data(DATA_KEY, data);
-        }
-
-        if (typeof config === 'string') {
-          if (typeof data[config] === 'undefined') {
-            throw new TypeError("No method named \"" + config + "\"");
-          }
-
-          data[config]();
-        }
-      });
-    };
-
-    return Confirmation;
-  }(Popover);
-  /**
-   * ------------------------------------------------------------------------
-   * jQuery
-   * ------------------------------------------------------------------------
-   */
-
-
-  $.fn[NAME] = Confirmation._jQueryInterface;
-  $.fn[NAME].Constructor = Confirmation;
-
-  $.fn[NAME].noConflict = function () {
-    $.fn[NAME] = JQUERY_NO_CONFLICT;
-    return Confirmation._jQueryInterface;
-  };
-
-}));
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NetTestPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NetTestPanel.html
index 196bfc31..b1b6a03 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NetTestPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NetTestPanel.html
@@ -31,36 +31,44 @@
                        <div class="card-body">
                                <h5 class="card-title"><i class="far 
fa-clock"></i>&nbsp;<wicket:message key="network.test.ping"/></h5>
                                <p class="card-text value"></p>
-                               <button class="test-btn btn btn-block 
btn-outline not-started" data-measure="ping" data-start="true" 
data-next="jitter" wicket:message="data-lbl:network.test.ping">
-                                       <i class="fas"></i>
-                               </button>
+                               <div class="d-grid gap-2">
+                                       <button class="test-btn btn btn-outline 
not-started" data-measure="ping" data-start="true" data-next="jitter" 
wicket:message="data-lbl:network.test.ping">
+                                               <i class="fas"></i>
+                                       </button>
+                               </div>
                        </div>
                </div>
                <div class="test-container card" id="test-jitter">
                        <div class="card-body">
                                <h5 class="card-title"><i class="far 
fa-clock"></i>&nbsp;<wicket:message key="network.test.jitter"/></h5>
                                <p class="card-text value"></p>
-                               <button class="test-btn btn btn-block 
btn-outline not-started" data-measure="jitter" data-next="upload" 
wicket:message="data-lbl:network.test.jitter">
-                                       <i class="fas"></i>
-                               </button>
+                               <div class="d-grid gap-2">
+                                       <button class="test-btn btn btn-outline 
not-started" data-measure="jitter" data-next="upload" 
wicket:message="data-lbl:network.test.jitter">
+                                               <i class="fas"></i>
+                                       </button>
+                               </div>
                        </div>
                </div>
                <div class="test-container card" id="test-upload">
                        <div class="card-body">
                                <h5 class="card-title"><i class="fas 
fa-file-upload"></i>&nbsp;<wicket:message key="network.test.upl"/></h5>
                                <p class="card-text value"></p>
-                               <button class="test-btn btn btn-block 
btn-outline not-started" data-measure="upload" data-next="download" 
wicket:message="data-lbl:network.test.upl">
-                                       <i class="fas"></i>
-                               </button>
+                               <div class="d-grid gap-2">
+                                       <button class="test-btn btn btn-outline 
not-started" data-measure="upload" data-next="download" 
wicket:message="data-lbl:network.test.upl">
+                                               <i class="fas"></i>
+                                       </button>
+                               </div>
                        </div>
                </div>
                <div class="test-container card" id="test-download">
                        <div class="card-body">
                                <h5 class="card-title"><i class="fas 
fa-file-download"></i>&nbsp;<wicket:message key="network.test.dwn"/></h5>
                                <p class="card-text value"></p>
-                               <button class="test-btn btn btn-block 
btn-outline not-started" data-measure="download" 
wicket:message="data-lbl:network.test.dwn">
-                                       <i class="fas"></i>
-                               </button>
+                               <div class="d-grid gap-2">
+                                       <button class="test-btn btn btn-outline 
not-started" data-measure="download" wicket:message="data-lbl:network.test.dwn">
+                                               <i class="fas"></i>
+                                       </button>
+                               </div>
                        </div>
                </div>
                <div class="output">
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
index f0698d8..8847544 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
@@ -81,7 +81,7 @@
                        <div class="modal-content">
                                <div class="modal-header">
                                        <h5 class="modal-title"><wicket:message 
key="204"/></h5>
-                                       <button type="button" class="close" 
data-bs-dismiss="modal" wicket:message="aria-label:85"></button>
+                                       <button type="button" class="btn-close" 
data-bs-dismiss="modal" wicket:message="aria-label:85"></button>
                                </div>
                                <div class="modal-body">
                                        <wicket:message key="556"/>
@@ -128,18 +128,18 @@
                </div>
                <div id="quick-vote-template">
                        <div class="close-btn btn btn-outline-secondary btn-sm"
-                                
wicket:message="title:85,data-btn-ok-label:54,data-btn-cancel-label:lbl.cancel,data-title:832,data-content:1419"
+                                
wicket:message="title:85,data-btn-ok-label:54,data-btn-cancel-label:lbl.cancel,data-title:832,data-bs-content:1419"
                                 data-btn-ok-class="btn btn-sm btn-danger"
                                 data-btn-ok-icon-class="fas 
fa-exclamation-triangle">
                                <i class="fas fa-times"></i>
                        </div>
                        <div class="control pro clickable">
                                <i class="fas fa-plus-circle"></i>
-                               <span class="badge badge-primary">0</span>
+                               <span class="badge bg-primary">0</span>
                        </div>
                        <div class="control con">
                                <i class="fas fa-times-circle"></i>
-                               <span class="badge badge-primary">0</span>
+                               <span class="badge bg-primary">0</span>
                        </div>
                </div>
                <div id="sharer" wicket:message="title:730">
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.html
index b6a2363..2d98bc3 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/VideoSettings.html
@@ -78,7 +78,7 @@
                                                        </div>
                                                        <canvas 
class="level-meter" data-orientation="horizontal" wicket:message="title:767" 
width="250" height="16"></canvas>
                                                        <div class="sett-row 
right">
-                                                               <div 
class="timer badge badge-primary"><span 
class="time"></span>&nbsp;<wicket:message key="network.test.sec"/></div>
+                                                               <div 
class="timer badge bg-primary"><span class="time"></span>&nbsp;<wicket:message 
key="network.test.sec"/></div>
                                                                <div><button 
class="play btn btn-outline-primary"><i class="fas 
fa-play"></i>&nbsp;<wicket:message key="764"/></button></div>
                                                                <div 
class="clear"></div>
                                                        </div>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
index b18e23a..2674f50 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
@@ -23,7 +23,7 @@
 <wicket:panel>
        <div class="clickable control block bg-secondary" 
wicket:message="data-new-aa:notification.room.activity">
                <i class="fas me-1 fa-angle-up"></i>
-               <span class="badge badge-secondary">42</span>
+               <span class="badge bg-secondary">42</span>
                <div class="label"><wicket:message key="1363"/></div>
        </div>
        <div class="ctrl bg-white">
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
index 3522b44..bfa2ef8 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
@@ -21,7 +21,7 @@ package org.apache.openmeetings.web.room.poll;
 import static org.apache.openmeetings.core.util.WebSocketHelper.sendRoom;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CHANGE;
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-nettest.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-nettest.js
index d2d111d..26bab6e 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-nettest.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-nettest.js
@@ -214,7 +214,7 @@ var NetTest = (function() {
        function _setResult(val) {
                const btn = _btn();
                btn.addClass('complete').removeClass('started');
-               btn.parent().find('.value').html(val);
+               btn.parent().parent().find('.value').html(val);
                testNext = btn.data('next');
                if (!testNext) {
                        bulk = false;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
index 14123fe..ac671e8 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
@@ -24,13 +24,13 @@
        <div class="tabs" id="room-sidebar-tabs">
                <ul class="nav nav-tabs" role="tablist">
                        <li class="nav-item">
-                               <a href="#room-sidebar-tab-users" 
class="nav-link active om-icon big tab user" id="room-sidebar-users-tab" 
data-toggle="tab" role="tab" aria-controls="room-sidebar-tab-users" 
wicket:message="title:398">
+                               <a href="#room-sidebar-tab-users" 
class="nav-link active om-icon big tab user" id="room-sidebar-users-tab" 
data-bs-toggle="tab" role="tab" aria-controls="room-sidebar-tab-users" 
wicket:message="title:398">
                                        <i class="fas fa-users"></i>
-                                       <span class="label"><wicket:message 
key="398"/>&nbsp;</span><span class="badge badge-info user-count"></span>
+                                       <span class="label"><wicket:message 
key="398"/>&nbsp;</span><span class="badge bg-info user-count"></span>
                                </a>
                        </li>
                        <li class="nav-item" wicket:enclosure="file-tab">
-                               <a href="#room-sidebar-tab-files" 
class="nav-link om-icon big tab file" id="room-sidebar-files-tab" 
data-toggle="tab" role="tab" aria-controls="room-sidebar-tab-files" 
wicket:message="title:245" wicket:id="file-tab">
+                               <a href="#room-sidebar-tab-files" 
class="nav-link om-icon big tab file" id="room-sidebar-files-tab" 
data-bs-toggle="tab" role="tab" aria-controls="room-sidebar-tab-files" 
wicket:message="title:245" wicket:id="file-tab">
                                        <i class="fas fa-folder"></i>
                                        <span class="label"><wicket:message 
key="245"/></span>
                                </a>
@@ -106,7 +106,7 @@
                                <i class="fas"></i>
                        </span>
                        <span class="om-icon align-left kick bumper clickable"
-                                       
wicket:message="title:603,data-btn-ok-label:54,data-btn-cancel-label:lbl.cancel,data-title:603,data-content:605"
+                                       
wicket:message="title:603,data-btn-ok-label:54,data-btn-cancel-label:lbl.cancel,data-title:603,data-bs-content:605"
                                        data-btn-ok-class="btn btn-sm 
btn-danger"
                                        data-btn-ok-icon-class="fas 
fa-exclamation-triangle">
                                <i class="fas fa-ban text-danger"></i>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
index c442b36..4c09f6f 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
@@ -41,13 +41,13 @@
                </div>
                <ul>
                        <li id="wb-area-tab" class="nav-item">
-                               <a class="nav-link" data-toggle="tab" 
role="tab">
+                               <a class="nav-link" data-bs-toggle="tab" 
role="tab">
                                        <span class="wb-nav-tab-text"></span>
                                </a>
                        </li>
                </ul>
                <button id="wb-tab-close" class="btn btn-sm 
btn-outline-secondary btn-no-border wb-tab-close"
-                               
wicket:message="title:85,data-btn-ok-label:54,data-btn-cancel-label:lbl.cancel,data-title:832,data-content:1313"
+                               
wicket:message="title:85,data-btn-ok-label:54,data-btn-cancel-label:lbl.cancel,data-title:832,data-bs-content:1313"
                                data-btn-ok-class="btn btn-sm btn-danger"
                                data-btn-ok-icon-class="fas 
fa-exclamation-triangle"
                                >
@@ -55,14 +55,14 @@
                        <span class="sr-only"><wicket:message key="85"/></span>
                </button>
                <div id="wb-area-texts" class="btn-group texts dropleft">
-                       <a class="dropdown-toggle" data-toggle="dropdown"></a>
+                       <a class="dropdown-toggle" 
data-bs-toggle="dropdown"></a>
                        <div class="dropdown-menu">
                                <div wicket:message="title:73" class="clickable 
om-icon big text"></div>
                                <div wicket:message="title:82" class="clickable 
om-icon big textbox"></div>
                        </div>
                </div>
                <div id="wb-area-drawings" class="btn-group drawings dropleft">
-                       <a class="dropdown-toggle" data-toggle="dropdown"></a>
+                       <a class="dropdown-toggle" 
data-bs-toggle="dropdown"></a>
                        <div class="dropdown-menu">
                                <div wicket:message="title:74" class="clickable 
om-icon big paint"></div>
                                <div wicket:message="title:75" class="clickable 
om-icon big line"></div>
@@ -74,7 +74,7 @@
                        </div>
                </div>
                <div id="wb-area-cliparts" class="btn-group cliparts dropleft">
-                       <a class="dropdown-toggle" data-toggle="dropdown" 
wicket:message="title:1323"></a>
+                       <a class="dropdown-toggle" data-bs-toggle="dropdown" 
wicket:message="title:1323"></a>
                        <div class="dropdown-menu">
                                <div wicket:id="clipart" class="clickable 
om-icon big clipart" data-image="./public/cliparts/"></div>
                        </div>
@@ -130,11 +130,11 @@
                </div>
                <div id="wb-tools">
                        <div class="clickable om-icon big clear-all"
-                               
wicket:message="title:62,data-btn-ok-label:54,data-btn-cancel-label:lbl.cancel,data-title:80,data-content:1340"
+                               
wicket:message="title:62,data-btn-ok-label:54,data-btn-cancel-label:lbl.cancel,data-title:80,data-bs-content:1340"
                                data-btn-ok-class="btn btn-sm btn-danger"
                                data-btn-ok-icon-class="fas 
fa-exclamation-triangle"></div>
                        <div class="clickable om-icon big clear-slide"
-                               
wicket:message="title:1005,data-btn-ok-label:54,data-btn-cancel-label:lbl.cancel,data-title:80,data-content:1359"
+                               
wicket:message="title:1005,data-btn-ok-label:54,data-btn-cancel-label:lbl.cancel,data-title:80,data-bs-content:1359"
                                data-btn-ok-class="btn btn-sm btn-danger"
                                data-btn-ok-icon-class="fas 
fa-exclamation-triangle"></div>
                        <div wicket:message="title:199" class="clickable 
om-icon big save"></div>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/OmWysiwygToolbar.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/OmWysiwygToolbar.html
index 0ebca7b..48c1e2e 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/OmWysiwygToolbar.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/OmWysiwygToolbar.html
@@ -20,7 +20,7 @@
 <wicket:panel>
        <div wicket:id="toolbar" class="btn-toolbar wysiwyg-toolbar" 
data-role="editor-toolbar">
                <div class="btn-group">
-                       <a wicket:id="fontSize" id="fontSize" class="btn 
btn-outline-secondary dropdown-toggle" data-toggle="dropdown" role="button" 
title="Font Size"> A </a>
+                       <a wicket:id="fontSize" id="fontSize" class="btn 
btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" role="button" 
title="Font Size"> A </a>
                        <ul class="dropdown-menu">
                                <li><a wicket:id="huge" class="font-huge 
text-center clickable" data-edit="fontSize 5"></a></li>
                                <li><a wicket:id="medium" class="font-small 
text-center clickable" data-edit="fontSize 3"></a></li>
@@ -62,7 +62,7 @@
                        </a>
                </div>
                <div class="btn-group">
-                       <a wicket:id="hyperlink" class="btn 
btn-outline-secondary dropdown-toggle" data-toggle="dropdown" title="">
+                       <a wicket:id="hyperlink" class="btn 
btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" title="">
                                <i class="fas fa-link"></i>
                        </a>
                        <div class="dropdown-menu input-append">
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
index 21b61a6..bcf293e 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.html
@@ -25,9 +25,9 @@
                <span wicket:id="feedback"></span>
                <div class="tabs">
                        <ul class="nav nav-tabs" role="tablist">
-                               <li class="nav-item"><a class="nav-link active" 
id="tab1-tab" data-toggle="tab" role="tab" aria-controls="tab1" 
href="#tab1"><wicket:message key="lbl.general"/></a></li>
-                               <li class="nav-item"><a class="nav-link" 
id="tab2-tab" data-toggle="tab" role="tab" aria-controls="tab2" 
href="#tab2"><wicket:message key="406"/></a></li>
-                               <li class="nav-item"><a class="nav-link" 
id="tab3-tab" data-toggle="tab" role="tab" aria-controls="tab3" 
href="#tab3"><wicket:message key="appointment.tab.advanced"/></a></li>
+                               <li class="nav-item"><a class="nav-link active" 
id="tab1-tab" data-bs-toggle="tab" role="tab" aria-controls="tab1" 
href="#tab1"><wicket:message key="lbl.general"/></a></li>
+                               <li class="nav-item"><a class="nav-link" 
id="tab2-tab" data-bs-toggle="tab" role="tab" aria-controls="tab2" 
href="#tab2"><wicket:message key="406"/></a></li>
+                               <li class="nav-item"><a class="nav-link" 
id="tab3-tab" data-bs-toggle="tab" role="tab" aria-controls="tab3" 
href="#tab3"><wicket:message key="appointment.tab.advanced"/></a></li>
                        </ul>
                        <div class="tab-content">
                                <div id="tab1" class="tab-pane fade show active 
pt-1" role="tabpanel" aria-labelledby="tab1-tab">
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
index 9100e9b..757d0b3 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
@@ -22,7 +22,7 @@ import static 
org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnable
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CHANGE;
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 import static org.apache.openmeetings.web.util.CalendarWebHelper.getDate;
 import static org.apache.openmeetings.web.util.CalendarWebHelper.getDateTime;
 
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
index 2ab4c66..68156a6 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
@@ -19,7 +19,7 @@
 package org.apache.openmeetings.web.user.calendar;
 
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 
 import java.util.List;
 
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
index 3edfb5c..6e4f265 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
@@ -22,13 +22,13 @@
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
        <div wicket:id="toolbar" class="btn-toolbar chat-toolbar navbar 
navbar-expand navbar-light bg-light p-0" data-role="editor-toolbar">
-               <button class="navbar-toggler" type="button" 
data-toggle="collapse" data-target="#navbarChatContent" 
aria-controls="navbarChatContent" aria-expanded="false">
+               <button class="navbar-toggler" type="button" 
data-bs-toggle="collapse" data-bs-target="#navbarChatContent" 
aria-controls="navbarChatContent" aria-expanded="false">
                        <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarChatContent">
                        <ul class="navbar-nav ms-auto">
                                <li class="nav-item dropup">
-                                       <a id="emoticons" class="chat btn 
btn-outline-secondary emt dropdown-toggle nav-link" data-toggle="dropdown" 
title="Emoticons"></a>
+                                       <a id="emoticons" class="chat btn 
btn-outline-secondary emt dropdown-toggle nav-link" data-bs-toggle="dropdown" 
title="Emoticons"></a>
                                        <ul class="chat dropdown-menu" >
                                                <li>
                                                        <table 
id="emotMenuList">
@@ -37,7 +37,7 @@
                                        </ul>
                                </li>
                                <li class="nav-item dropup">
-                                       <a id="fontSize" class="chat btn 
btn-outline-secondary dropdown-toggle nav-link" data-toggle="dropdown" 
role="button" title="Font Size"> A </a>
+                                       <a id="fontSize" class="chat btn 
btn-outline-secondary dropdown-toggle nav-link" data-bs-toggle="dropdown" 
role="button" title="Font Size"> A </a>
                                        <div class="dropdown-menu">
                                                <a class="dropdown-item" 
data-edit="fontSize 5"><span class="font-huge text-center 
clickable">Huge</span></a>
                                                <a class="dropdown-item" 
data-edit="fontSize 3"><span class="font-small text-center 
clickable">Normal</span></a>
@@ -45,7 +45,7 @@
                                        </div>
                                </li>
                                <li class="nav-item dropup">
-                                       <a id="fontStyle" class="chat btn 
btn-outline-secondary dropdown-toggle nav-link" data-toggle="dropdown" 
title="Font Style">
+                                       <a id="fontStyle" class="chat btn 
btn-outline-secondary dropdown-toggle nav-link" data-bs-toggle="dropdown" 
title="Font Style">
                                                <i class="fas fa-cog"></i>
                                        </a>
                                        <ul class="dropdown-menu btns-only">
@@ -56,7 +56,7 @@
                                        </ul>
                                </li>
                                <li class="nav-item dropup">
-                                       <a id="hyperlink" class="chat btn 
btn-outline-secondary dropdown-toggle nav-link" data-toggle="dropdown" 
title="Hyperlink">
+                                       <a id="hyperlink" class="chat btn 
btn-outline-secondary dropdown-toggle nav-link" data-bs-toggle="dropdown" 
title="Hyperlink">
                                                <i class="fas fa-link"></i>
                                        </a>
                                        <div class="dropdown-menu input-append">
@@ -65,7 +65,7 @@
                                        </div>
                                </li>
                                <li class="nav-item dropup">
-                                       <a id="actions" class="chat btn 
btn-outline-secondary dropdown-toggle nav-link" data-toggle="dropdown" 
wicket:message="title:635">
+                                       <a id="actions" class="chat btn 
btn-outline-secondary dropdown-toggle nav-link" data-bs-toggle="dropdown" 
wicket:message="title:635">
                                                <i class="fas fa-bars"></i>
                                        </a>
                                        <ul class="dropdown-menu btns-only">
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
index 635866c..eb4394a 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
@@ -26,7 +26,7 @@ import static 
org.apache.openmeetings.web.app.WebSession.getDateFormat;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CLICK;
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 import static org.apache.openmeetings.web.room.RoomPanel.isModerator;
 
 import java.util.List;
@@ -173,7 +173,7 @@ public class ChatToolbar extends Panel implements 
IWysiwygToolbar {
 
        @Override
        public void attachToEditor(Component editor) {
-               toolbar.add(AttributeModifier.replace("data-target", 
JQueryWidget.getSelector(editor)));
+               toolbar.add(AttributeModifier.replace("data-bs-target", 
JQueryWidget.getSelector(editor)));
        }
 
        @Override
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.html
index e1cfaca..34d1e4c 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidgetView.html
@@ -24,8 +24,8 @@
        <div id="feedcontainer"></div>
        <div class="d-none">
                <div class="card" id="rss-item-template">
-                       <div class="card-header p-0">
-                               <button class="btn btn-outline-info btn-block" 
type="button" data-toggle="collapse"></button>
+                       <div class="card-header p-0 d-grid gap-2">
+                               <button class="btn btn-outline-info" 
type="button" data-bs-toggle="collapse"></button>
                        </div>
                        <div class="collapse">
                                <div class="card-body"></div>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html
index 5228ede..f6b7324 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidgetView.html
@@ -23,21 +23,21 @@
 <wicket:panel>
        <h3><wicket:message key="widget.start.header"/></h3>
        <div wicket:id="step1" class="clickable start_step1">
-               <span class="badge badge-pill badge-secondary">1</span>
+               <span class="badge rounded-pill bg-secondary">1</span>
                <wicket:message key="768"/>
        </div>
        <div wicket:id="step2" class="clickable start_step2">
-               <span class="badge badge-pill badge-secondary">2</span>
+               <span class="badge rounded-pill bg-secondary">2</span>
                <wicket:message key="771"/>
        </div>
        <div wicket:id="step3" class="start_step3">
                <a wicket:id="avTest" target="_blank" rel="noopener noreferrer">
-                       <span class="badge badge-pill badge-secondary">3</span>
+                       <span class="badge rounded-pill bg-secondary">3</span>
                        <wicket:message key="772"/>
                </a>
        </div>
        <div wicket:id="step4" class="clickable start_step4">
-               <span class="badge badge-pill badge-secondary">4</span>
+               <span class="badge rounded-pill bg-secondary">4</span>
                <wicket:message key="773"/>
        </div>
        <table>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
index 5d76376..44509eb 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/admin/AdminCleanupInfoDialog.java
@@ -26,7 +26,7 @@ import static 
org.apache.openmeetings.cli.CleanupHelper.getRecUnit;
 import static org.apache.openmeetings.util.OmFileHelper.getHumanSize;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsDir;
 import static org.apache.openmeetings.util.OmFileHelper.getUploadDir;
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 
 import org.apache.openmeetings.cli.CleanupEntityUnit;
 import org.apache.openmeetings.cli.CleanupUnit;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/rss.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/rss.js
index 9ef9f64..5704a31 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/rss.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/rss.js
@@ -12,7 +12,7 @@ function displayRss(entries) {
                        , bodyId = `om-rss-content${i}`
                        , markup = OmUtil.tmpl('#rss-item-template');
                markup.find('.card-header').attr('id', headId);
-               markup.find('button').attr('data-target', 
`#${bodyId}`).attr('aria-controls', bodyId)
+               markup.find('button').attr('data-bs-target', 
`#${bodyId}`).attr('aria-controls', bodyId)
                        .append(entries[i].title);
                markup.find('.collapse').attr('id', 
bodyId).attr('aria-labelledby', headId);
                markup.find('.card-body').html(entries[i].content);
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationDetails.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationDetails.java
index f8df56a..8e968e4 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationDetails.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationDetails.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.web.user.profile;
 
 import static org.apache.openmeetings.db.util.FormatHelper.formatUser;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 
 import java.util.Date;
 
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.html
index 36d5a89..fe5549a 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.html
@@ -24,7 +24,7 @@
        <div class="adminPanel profile-panel">
        <div class="adminPanelColumnTable">
                <div class="adminNav" wicket:id="navigator">[dataview 
navigator]</div>
-               <table class="list-table table-striped table-hover">
+               <table class="list-table table table-striped table-hover">
                        <thead>
                                <tr>
                                        <th class="col-1"><span 
wicket:id="orderById"></span><wicket:message key="188" /></th>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
index 83d6b73..f5f6819 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
@@ -24,7 +24,7 @@ import static 
org.apache.openmeetings.db.entity.user.PrivateMessage.TRASH_FOLDER
 import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
+import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper.newOkCancelDangerConfirm;
 
 import java.util.ArrayList;
 import java.util.HashSet;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html
index 5313e19..da9e44f 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html
@@ -37,7 +37,7 @@
                </div>
                <div wicket:id="container" class="pe-3 h-100">
                        <div><strong><wicket:message 
key="1184"/></strong>&nbsp;&nbsp;&nbsp;<div class="adminNav"  
wicket:id="navigator"></div></div>
-                       <table id="searchUsersTable" class="list-table 
table-striped table-hover">
+                       <table id="searchUsersTable" class="list-table table 
table-striped table-hover">
                                <thead>
                                        <tr>
                                                <th 
class="col-3"><wicket:message key="165"/></th>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.html
index d693306..b3ead92 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.html
@@ -21,7 +21,7 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
-       <table class="widget table-striped table-hover">
+       <table class="widget table table-striped table-hover">
                <tr>
                        <th><wicket:message key="165"/></th>
                        <th><wicket:message key="lbl.description"/></th>
diff --git 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
index 76879b3..e4a09ba 100644
--- 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
+++ 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/mysql_persistence.xml
@@ -63,7 +63,7 @@
                        <property name="openjpa.ConnectionDriverName" 
value="org.apache.commons.dbcp2.BasicDataSource" />
                        <property name="openjpa.ConnectionProperties"
                                value="DriverClassName=com.mysql.cj.jdbc.Driver
-                                       , 
Url=jdbc:mysql://localhost:3306/openmeetings?autoReconnect=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=utf-8&amp;connectionCollation=utf8_general_ci&amp;cachePrepStmts=true&amp;cacheCallableStatements=true&amp;cacheServerConfiguration=true&amp;useLocalSessionState=true&amp;elideSetAutoCommits=true&amp;alwaysSendSetIsolation=false&amp;enableQueryTimeouts=false&amp;prepStmtCacheSize=3000&amp;prepStmtCacheSqlLimit=1000&amp;useSSL=false&amp;nullNam
 [...]
+                                       , 
Url=jdbc:mysql://192.168.1.102:3306/openmeetings?autoReconnect=true&amp;useUnicode=true&amp;createDatabaseIfNotExist=true&amp;characterEncoding=utf-8&amp;connectionCollation=utf8_general_ci&amp;cachePrepStmts=true&amp;cacheCallableStatements=true&amp;cacheServerConfiguration=true&amp;useLocalSessionState=true&amp;elideSetAutoCommits=true&amp;alwaysSendSetIsolation=false&amp;enableQueryTimeouts=false&amp;prepStmtCacheSize=3000&amp;prepStmtCacheSqlLimit=1000&amp;useSSL=false&amp;nul
 [...]
                                        , maxTotal=100
                                        , maxIdle=100
                                        , minIdle=0
diff --git 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings.properties 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings.properties
index 54796a3..3c60aa4 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings.properties
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings.properties
@@ -65,7 +65,7 @@ nettest.max.clients=50
 
 ################## SIP ##################
 ### Should be updated with real values for Asterisk ###
-sip.hostname=
+sip.hostname=192.168.1.102
 sip.manager.port=5038
 sip.manager.user=openmeetings
 sip.manager.password=12345
@@ -74,7 +74,7 @@ sip.manager.timeout=10000
 sip.ws.local.port.min=6666
 sip.ws.local.port.max=7666
 ## 127.0.0.1 is NOT working here
-sip.ws.local.host=
+sip.ws.local.host=192.168.1.211
 sip.ws.remote.port=8088
 sip.ws.remote.user=omsip_user
 sip.ws.remote.password=12345
diff --git a/openmeetings-web/src/main/webapp/css/raw-activities.css 
b/openmeetings-web/src/main/webapp/css/raw-activities.css
index 681a59d..8198104 100644
--- a/openmeetings-web/src/main/webapp/css/raw-activities.css
+++ b/openmeetings-web/src/main/webapp/css/raw-activities.css
@@ -26,7 +26,7 @@
        position: relative;
        padding: 5px;
        margin-bottom: 3px;
-       border-bottom: 1px solid var(--secondary);
+       border-bottom: 1px solid var(--bs-secondary);
 }
 .activity.item button {
        padding: 0 5px;
diff --git a/openmeetings-web/src/main/webapp/css/raw-admin.css 
b/openmeetings-web/src/main/webapp/css/raw-admin.css
index b3918be..2691a26 100644
--- a/openmeetings-web/src/main/webapp/css/raw-admin.css
+++ b/openmeetings-web/src/main/webapp/css/raw-admin.css
@@ -88,11 +88,11 @@
 }
 .onoff-checkbox + .onoff-label::before {
        content: '\f204';
-       color: var(--danger);
+       color: var(--bs-danger);
 }
 .onoff-checkbox:checked + .onoff-label::before {
        content: '\f205';
-       color: var(--success);
+       color: var(--bs-success);
 }
 .addLanguagePanel select {
        padding: 0px 0px;
diff --git a/openmeetings-web/src/main/webapp/css/raw-chat.css 
b/openmeetings-web/src/main/webapp/css/raw-chat.css
index a2f3c9e..bfaf9c2 100644
--- a/openmeetings-web/src/main/webapp/css/raw-chat.css
+++ b/openmeetings-web/src/main/webapp/css/raw-chat.css
@@ -53,7 +53,7 @@
        content: "\f104";
 }
 #chat .messageArea .msg-row.need-moderation {
-       background-color: var(--warning);
+       background-color: var(--bs-warning);
 }
 #chat .messageArea .time {
        margin-right: 5px;
diff --git a/openmeetings-web/src/main/webapp/css/raw-general.css 
b/openmeetings-web/src/main/webapp/css/raw-general.css
index e05380f..35d38d8 100644
--- a/openmeetings-web/src/main/webapp/css/raw-general.css
+++ b/openmeetings-web/src/main/webapp/css/raw-general.css
@@ -215,7 +215,7 @@ html, body {
 .om-icon::before {
        font-family: 'Font Awesome 5 Free';
        font-weight: 900;
-       color: var(--secondary);
+       color: var(--bs-secondary);
        font-size: 1.2em;
        vertical-align: text-bottom;
        line-height: 1em;
@@ -228,11 +228,11 @@ html, body {
        content: '\f055';
 }
 .online.om-icon::before {
-       color: var(--success);
+       color: var(--bs-success);
        content: '\f111';
 }
 .offline.om-icon::before {
-       color: var(--danger);
+       color: var(--bs-danger);
        content: '\f111';
 }
 .message {
@@ -294,7 +294,7 @@ table.messages td.from, table.messages td.subject {
 }
 .email.selected {
        border: 1px solid #cccccc;
-       background-color:var(--light);
+       background-color:var(--bs-light);
 }
 .email.folder {
        font-weight: normal;
@@ -608,7 +608,7 @@ select.messages.selector {
 }
 .dragbox .dragbox-header .dragbox-actions .icon.delete::before {
        content: "\f00d";
-       color: var(--danger);
+       color: var(--bs-danger);
 }
 .dragbox-content .tableWrapper {
        /* room users on dashboard */
@@ -620,6 +620,7 @@ select.messages.selector {
 }
 .sort-icon a {
        vertical-align: middle;
+       text-decoration: none;
 }
 .sort-icon.none a::before {
        content: '\f0dc';
diff --git a/openmeetings-web/src/main/webapp/css/raw-menu.css 
b/openmeetings-web/src/main/webapp/css/raw-menu.css
index 42b6459..70c4a6b 100644
--- a/openmeetings-web/src/main/webapp/css/raw-menu.css
+++ b/openmeetings-web/src/main/webapp/css/raw-menu.css
@@ -23,7 +23,7 @@
        font-weight: bold;
 }
 .room-block .menu .details .room.name.screen {
-       color: var(--danger);
+       color: var(--bs-danger);
 }
 .room-block .menu .details .icon {
        width: 30px;
@@ -49,7 +49,7 @@
 .room-block .menu .details .detail-btn i.add-on {
        position: absolute;
        left: 5px;
-       color: var(--warning);
+       color: var(--bs-warning);
        bottom:  0;
 }
 .room-block .menu .details .icon .profile {
diff --git a/openmeetings-web/src/main/webapp/css/raw-nettest.css 
b/openmeetings-web/src/main/webapp/css/raw-nettest.css
index 3360489..ee11cba 100644
--- a/openmeetings-web/src/main/webapp/css/raw-nettest.css
+++ b/openmeetings-web/src/main/webapp/css/raw-nettest.css
@@ -15,24 +15,24 @@
 .nettest .test-container button.not-started
 , .nettest .test-container button.started
 {
-       color: var(--secondary);
-       border-color: var(--secondary);
+       color: var(--bs-secondary);
+       border-color: var(--bs-secondary);
 }
 .nettest .test-container button:hover {
-       color: var(--white);
+       color: var(--bs-white);
        border-color: transparent;
 }
 .nettest .test-container button.not-started:hover
 , .nettest .test-container button.started:hover
 {
-       background-color: var(--secondary);
+       background-color: var(--bs-secondary);
 }
 .nettest .test-container button.complete {
-       color: var(--success);
-       border-color: var(--success);
+       color: var(--bs-success);
+       border-color: var(--bs-success);
 }
 .nettest .test-container button.complete:hover {
-       background-color: var(--success);
+       background-color: var(--bs-success);
 }
 .nettest .test-container button.not-started i::before {
        content: '\f04b';
@@ -46,6 +46,12 @@
 .nettest .test-container button.complete i::before {
        content: '\f00c';
 }
+.nettest .test-container .value {
+       min-height: 3em;
+}
+.nettest .test-container .card-title {
+       white-space: nowrap;
+}
 .nettest .output {
        border-radius: 10px;
        border: 1px solid #cccccc;
diff --git a/openmeetings-web/src/main/webapp/css/raw-room.css 
b/openmeetings-web/src/main/webapp/css/raw-room.css
index 110aa8c..44a5398 100644
--- a/openmeetings-web/src/main/webapp/css/raw-room.css
+++ b/openmeetings-web/src/main/webapp/css/raw-room.css
@@ -108,13 +108,13 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
        border-radius: 50%;
 }
 .room-block .sb-wb .sidebar .user-list .user.entry .om-icon.user-status.user {
-       background-color: var(--success);
+       background-color: var(--bs-success);
 }
 .room-block .sb-wb .sidebar .user-list .user.entry .om-icon.user-status.wb {
-       background-color: var(--warning);
+       background-color: var(--bs-warning);
 }
 .room-block .sb-wb .sidebar .user-list .user.entry .om-icon.user-status.mod {
-       background-color: var(--danger);
+       background-color: var(--bs-danger);
 }
 .room-block .sb-wb .sidebar .user-list .user.entry .om-icon.audio-activity {
        position: absolute;
@@ -170,8 +170,8 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 .audio-activity.om-icon {
        opacity: 0.2;
        border-radius: 50%;
-       background-color: var(--success);
-       border: 1px solid var(--gray-dark);
+       background-color: var(--bs-success);
+       border: 1px solid var(--bs-gray-dark);
 }
 .typing-activity {
        display: none;
@@ -182,7 +182,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
        position: absolute;
        left: 0;
        animation: typing-ani 2s infinite;
-       color: var(--primary);
+       color: var(--bs-primary);
 }
 @keyframes typing-ani {
        0% {
@@ -207,12 +207,12 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 .om-icon.volume-control a.volume-on::before {
        content: "\f027";
        font-size: 1.2em;
-       color: var(--secondary);
+       color: var(--bs-secondary);
 }
 .om-icon.volume-control a.volume-off::before {
        content: "\f6a9";
        font-size: 1.2em;
-       color: var(--danger);
+       color: var(--bs-danger);
 }
 .om-icon.volume-control .dropdown-menu {
        width: 20px;
@@ -225,17 +225,17 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 .om-icon.volume-control .dropdown-menu .slider {
        border-radius: 0;
        background-color: white;
-       border-color: var(--secondary);
+       border-color: var(--bs-secondary);
 }
 .om-icon.volume-control .dropdown-menu .slider .ui-slider-range {
        border-radius: 0;
-       background-color: var(--light);
+       background-color: var(--bs-light);
 }
 .om-icon.volume-control .dropdown-menu .slider .handle {
        border-radius: 0;
-       background-color: var(--light);
-       border-color: var(--secondary);
-       color: var(--secondary);
+       background-color: var(--bs-light);
+       border-color: var(--bs-secondary);
+       color: var(--bs-secondary);
 }
 .user-video .om-icon.volume-control
 , .user-video .btn.btn-refresh
@@ -247,7 +247,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 }
 .user-video .om-icon.volume-control {
        border-radius: 0.2rem;
-       border: 1px solid var(--secondary);
+       border: 1px solid var(--bs-secondary);
        margin-top: 3px;
        padding: 1px;
 }
@@ -273,11 +273,11 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
        font-size: .6em;
 }
 .right.om-icon i::before {
-       color: var(--success);
+       color: var(--bs-success);
        content: "\f055";
 }
 .right.om-icon.granted i::before {
-       color: var(--danger);
+       color: var(--bs-danger);
        content: "\f056";
 }
 .right.moderator.om-icon::before {
@@ -312,18 +312,18 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 }
 .activity.cam.enabled.om-icon::before {
        content: '\f03d';
-       color: var(--success);
+       color: var(--bs-success);
 }
 .activity.cam.om-icon, .activity.mic.om-icon {
        display: none;
 }
 .activity.cam.om-icon::before {
        content: '\f4e2';
-       color: var(--warning);
+       color: var(--bs-warning);
 }
 .activity.mic.enabled.om-icon::before {
        content: '\f130';
-       color: var(--success);
+       color: var(--bs-success);
 }
 .om-icon.disabled {
        filter: grayscale(100%);
@@ -332,11 +332,11 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 }
 .activity.mic.om-icon::before {
        content: '\f131';
-       color: var(--warning);
+       color: var(--bs-warning);
 }
 .room-block .sb-wb .sidebar .user-list .user.entry.current {
        font-weight: bold;
-       background-color: var(--light);
+       background-color: var(--bs-light);
 }
 .dropdown-menu.video.volume, .dropdown-menu.video.volume li {
        width: 20px;
@@ -404,7 +404,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 
 /************ VIDEO **************/
 .mic-on {
-       background-color: var(--warning);
+       background-color: var(--bs-warning);
 }
 .ui-dialog.video
 , .ui-dialog.sharer
@@ -417,14 +417,14 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 , .sharer .ui-dialog-titlebar
 , .wb-tool-settings .ui-dialog-titlebar
 {
-       background-color: var(--white);
+       background-color: var(--bs-white);
 }
 .sharer .ui-dialog-titlebar-close {
        position: absolute;
        top: 20px
 }
 .user-video .buttonpane {
-       background-color: var(--white);
+       background-color: var(--bs-white);
        position: absolute;
        right: 2px;
        top: 2px
@@ -524,7 +524,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
        right: -21px;
        bottom: -16px;
        background: repeating-linear-gradient(
-               var(--dark), var(--dark) 3px, transparent 3px, transparent 5px
+               var(--bs-dark), var(--bs-dark) 3px, transparent 3px, 
transparent 5px
        );
 }
 .room-block .room-container .user-video .header {
@@ -664,7 +664,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
        right: 40px;
        bottom: 40px;
        padding: 5px;
-       background-color: var(--info);
+       background-color: var(--bs-info);
 }
 #quick-vote .control {
        display: inline-block;
@@ -685,10 +685,10 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
        line-height: 1.2em;
 }
 #quick-vote .control.pro i::before {
-       color: var(--success);
+       color: var(--bs-success);
 }
 #quick-vote .control.con i::before {
-       color: var(--danger);
+       color: var(--bs-danger);
 }
 #quick-vote .close-btn {
        float: right;
@@ -744,7 +744,7 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 }
 .video .mute-others::before {
        content: '\f3c9';
-       color: var(--warning);
+       color: var(--bs-warning);
        line-height: 1em;
        font-size: 2.5em;
 }
diff --git a/openmeetings-web/src/main/webapp/css/raw-tree.css 
b/openmeetings-web/src/main/webapp/css/raw-tree.css
index 8d61614..d30cdae 100644
--- a/openmeetings-web/src/main/webapp/css/raw-tree.css
+++ b/openmeetings-web/src/main/webapp/css/raw-tree.css
@@ -53,18 +53,17 @@
        line-height: 20px;
        color: transparent;
        height: var(--tree-header-height);
-       padding-top: 3px;
        overflow: hidden;
 }
 .trash-toolbar .om-confirm-dialog {
-       color: var(--danger);
+       color: var(--bs-danger);
 }
 .trash-toolbar .om-icon.fileitem, .trash-toolbar .om-icon.recorditem {
        display: none !important;
 }
 .trash-toolbar-hover {
        color: inherit;
-       background-color: var(--light);
+       background-color: var(--bs-light);
 }
 .file-tree .info .details {
        width: 100%;
@@ -99,8 +98,11 @@
 .trees .tree-node {
        white-space: nowrap;
 }
+.trees .tree-node .tree-junction {
+       text-decoration: none;
+}
 .file-tree .trees .om-icon.active {
-       background-color: var(--info);
+       background-color: var(--bs-info);
 }
 .file-tree .trees .om-icon i {
        display: none;
@@ -125,7 +127,7 @@
        content: '\f008';
 }
 .broken.om-icon::before {
-       color: var(--danger);
+       color: var(--bs-danger);
 }
 .file-tree .trees .processing.om-icon i {
        display: block;
@@ -192,7 +194,7 @@
        padding: 0px;
 }
 .file.item .errors::before {
-       color: var(--warning);
+       color: var(--bs-warning);
        content: '\f071';
 }
 .dialog.errors {
@@ -204,10 +206,10 @@
        height: calc(100% - 50px);
 }
 .dialog.errors .alert {
-       color: var(--danger);
+       color: var(--bs-danger);
 }
 .dialog.errors .warn {
-       color: var(--warning);
+       color: var(--bs-warning);
 }
 .dialog.errors .message {
        display: block;
diff --git a/openmeetings-web/src/main/webapp/css/raw-wb.css 
b/openmeetings-web/src/main/webapp/css/raw-wb.css
index 4dafebb..cbc49fd 100644
--- a/openmeetings-web/src/main/webapp/css/raw-wb.css
+++ b/openmeetings-web/src/main/webapp/css/raw-wb.css
@@ -36,7 +36,7 @@ html[dir="rtl"] .room-block .sb-wb .wb-block {
        display: inline-block;
        width: 100%;
        text-align: center;
-       color: var(--success);
+       color: var(--bs-success);
 }
 .room-block .sb-wb .wb-block .tabs {
        height: calc(100% - var(--buffer-size));

Reply via email to