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

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


The following commit(s) were added to refs/heads/csp by this push:
     new a3106aa  [OPENMEETINGS-2165] more work on admin panels
a3106aa is described below

commit a3106aa053d2f5c440d473fa9c9740d7e49ae169
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Sat Feb 8 01:39:47 2020 +0700

    [OPENMEETINGS-2165] more work on admin panels
---
 .../openmeetings/web/admin/backup/BackupPanel.html |  5 +-
 .../openmeetings/web/admin/backup/BackupPanel.java |  4 +-
 .../web/admin/connection/ConnectionsPanel.html     |  2 +-
 .../web/admin/connection/ConnectionsPanel.java     | 31 +++++---
 .../web/admin/labels/AddLanguageDialog.java        |  2 +-
 .../openmeetings/web/admin/ldaps/LdapsPanel.html   |  4 +-
 .../openmeetings/web/admin/rooms/RoomsPanel.html   | 17 ++--
 .../web/admin/users/PasswordDialog.html            |  4 +-
 .../web/admin/users/PasswordDialog.java            | 91 +++++++++-------------
 .../openmeetings/web/admin/users/UserForm.html     | 25 +++---
 .../openmeetings/web/admin/users/UserForm.java     |  6 +-
 .../openmeetings/web/common/ComunityUserForm.html  | 28 ++++---
 .../openmeetings/web/common/GeneralUserForm.html   | 49 +++++++-----
 .../openmeetings/web/room/NicknameDialog.java      |  2 +-
 .../web/room/poll/CreatePollDialog.java            |  2 +-
 .../openmeetings/web/room/poll/VoteDialog.java     |  2 +-
 .../web/user/InviteUserToRoomDialog.html           |  2 +-
 .../openmeetings/web/user/MessageDialog.html       |  2 +-
 .../openmeetings/web/user/rooms/RoomListPanel.html | 24 +++---
 .../openmeetings/web/user/rooms/RoomListPanel.java | 35 +++++----
 .../web/user/rooms/RoomsSelectorPanel.html         |  2 +-
 .../web/user/rooms/RoomsSelectorPanel.java         |  2 +-
 .../web/user/rooms/RoomsTabbedPanel.html           |  7 +-
 .../web/user/rooms/RoomsTabbedPanel.java           | 34 ++------
 openmeetings-web/src/main/webapp/css/raw-admin.css | 58 --------------
 .../src/main/webapp/css/raw-general-rtl.css        |  8 --
 .../src/main/webapp/css/raw-general.css            | 49 +-----------
 27 files changed, 187 insertions(+), 310 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
index 0a65c97..e4b7f44 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
@@ -26,7 +26,7 @@
                <fieldset class="ui-widget-content">
                        <legend class="ui-widget-header"><wicket:message 
key="1066" /></legend>
                        <div class="formelement">
-                               <div class="info-text"><wicket:message 
key="1065" /></div>
+                               <div><i class="fas fa-info-circle 
m-1"></i><wicket:message key="1065" /></div>
                        </div>
                        <div class="formelement">
                                <label 
wicket:for="includeFilesInBackup"><wicket:message key="1537" /></label> <input 
type="checkbox" wicket:id="includeFilesInBackup" />
@@ -50,7 +50,8 @@
                        </div>
                        <div class="formelement">
                                <!-- Backup CLI import information -->
-                               <div class="info-text" 
wicket:id="cmdLineDesc"></div>
+                               <i class="fas fa-info-circle m-1"></i>
+                               <div wicket:id="cmdLineDesc"></div>
                        </div>
                </fieldset>
        </form>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
index bf0951c..0971cba 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
@@ -215,7 +215,7 @@ public class BackupPanel extends AdminBasePanel {
                                        target.add(feedback);
                                }
                        }));
-                       add(new Label("cmdLineDesc", 
getString("1505")).setEscapeModelStrings(false));
+                       add(new Label("cmdLineDesc", 
getString("1505")).setEscapeModelStrings(false).setRenderBodyOnly(true));
                        super.onInitialize();
                }
 
@@ -250,7 +250,7 @@ public class BackupPanel extends AdminBasePanel {
        public BackupPanel(String id) {
                super(id);
 
-               add(feedback);
+               add(feedback.setOutputMarkupId(true));
 
                BackupForm backupForm = new BackupForm("backupUpload");
 
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 51f2c88..76a2b2e 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
@@ -40,7 +40,7 @@
                                        <td class="col-2" 
wicket:id="login"></td>
                                        <td class="col-2" 
wicket:id="since"></td>
                                        <td class="col-2" 
wicket:id="scope"></td>
-                                       <td class="col-2"><a 
wicket:id="kick"><wicket:message key="603" /></a></td>
+                                       <td class="col-2 p-0"><a 
wicket:id="kick" class="om-kick-btn"></a></td>
                                        <td class="col-2" 
wicket:id="server"></td>
                                </tr>
                        </tbody>
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 a5cc37c..b939d94 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
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.web.admin.connection;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
+import static 
org.apache.openmeetings.web.util.CallbackFunctionHelper.newOkCancelConfirmCfg;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
@@ -32,7 +33,6 @@ import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.web.admin.AdminBasePanel;
 import org.apache.openmeetings.web.admin.SearchableDataView;
 import org.apache.openmeetings.web.app.ClientManager;
-import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
 import org.apache.openmeetings.web.data.SearchableDataProvider;
 import org.apache.wicket.AttributeModifier;
@@ -42,9 +42,12 @@ import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.markup.repeater.RepeatingView;
+import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 
-import com.googlecode.wicket.jquery.ui.form.button.ButtonBehavior;
+import 
de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
+import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
+import 
de.agilecoders.wicket.extensions.markup.html.bootstrap.confirmation.ConfirmationBehavior;
 
 public class ConnectionsPanel extends AdminBasePanel {
        private static final long serialVersionUID = 1L;
@@ -86,22 +89,26 @@ public class ConnectionsPanel extends AdminBasePanel {
                        @Override
                        protected void populateItem(final Item<Client> item) {
                                Client c = item.getModelObject();
-                               final ConfirmableAjaxBorder confirm = new 
ConfirmableAjaxBorder("kick", getString("603"), getString("605")) {
+                               item.add(new Label("type", "html5"));
+                               item.add(new Label("login", 
c.getUser().getLogin()));
+                               item.add(new Label("since", 
c.getConnectedSince()));
+                               item.add(new Label("scope", c.getRoom() == null 
? "html5" : "" + c.getRoom().getId()));
+                               item.add(new Label("server", c.getServerId()));
+                               item.add(new BootstrapAjaxLink<String>("kick", 
null, Buttons.Type.Outline_Danger, new ResourceModel("603")) {
                                        private static final long 
serialVersionUID = 1L;
+                                       {
+                                               setSize(Buttons.Size.Small);
+                                               add(new 
ConfirmationBehavior(/*TODO 
https://github.com/l0rdn1kk0n/wicket-bootstrap/issues/845 ".om-kick-btn", 
*/newOkCancelConfirmCfg(container, getString("605"))
+                                                               
.withSingleton(true)
+                                                               ));
+                                       }
 
                                        @Override
-                                       protected void 
onSubmit(AjaxRequestTarget target) {
+                                       public void onClick(AjaxRequestTarget 
target) {
                                                cm.invalidate(c.getUserId(), 
c.getSessionId());
                                                target.add(container, 
details.setVisible(false));
                                        }
-                               };
-                               confirm.setOutputMarkupId(true).add(new 
ButtonBehavior(String.format("#%s", confirm.getMarkupId())));
-                               item.add(new Label("type", "html5"));
-                               item.add(new Label("login", 
c.getUser().getLogin()));
-                               item.add(new Label("since", 
c.getConnectedSince()));
-                               item.add(new Label("scope", c.getRoom() == null 
? "html5" : "" + c.getRoom().getId()));
-                               item.add(new Label("server", c.getServerId()));
-                               item.add(confirm);
+                               });
                                item.add(new AjaxEventBehavior(EVT_CLICK) {
                                        private static final long 
serialVersionUID = 1L;
 
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
index 87a2466..2651058 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/AddLanguageDialog.java
@@ -50,7 +50,7 @@ public class AddLanguageDialog extends 
AbstractFormDialog<String> {
        public AddLanguageDialog(String id, final LangPanel langPanel) {
                super(id, "");
                this.langPanel = langPanel;
-               add(form.add(feedback, iso.setOutputMarkupId(true)));
+               add(form.add(feedback.setOutputMarkupId(true), 
iso.setOutputMarkupId(true)));
                iso.add(new IValidator<String>() {
                        private static final long serialVersionUID = 1L;
 
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 259a51d..5c1b4f6 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
@@ -65,12 +65,12 @@
                                                <label><wicket:message 
key="269" /></label><span wicket:id="updatedby.login"/>
                                        </div>
                                        <div class="formelement">
-                                               <div 
class="info-text"><wicket:message key="1114" /></div>
+                                               <div><i class="fas 
fa-info-circle m-1"></i><wicket:message key="1114" /></div>
                                                <br/>
                                                <label 
wicket:for="configFileName"><wicket:message key="1115" /></label><input 
type="text" wicket:id="configFileName"/>
                                        </div>
                                        <div class="formelement">
-                                               <div 
class="info-text"><wicket:message key="1116" /></div>
+                                               <div><i class="fas 
fa-info-circle m-1"></i><wicket:message key="1116" /></div>
                                                <br/>
                                                <label 
wicket:for="addDomainToUserName"><wicket:message key="1117" /></label><input 
type="checkbox" class="formcheckbox" wicket:id="addDomainToUserName"/>
                                        </div>
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 d702812..7d96379 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
@@ -72,7 +72,7 @@
                                                <label 
wicket:for="ispublic"><wicket:message key="190" /></label><input 
type="checkbox" class="formcheckbox" wicket:id="ispublic" />
                                        </div>
                                        <div class="formelement">
-                                               <div 
class="info-text"><wicket:message key="828" /></div>
+                                               <i class="fas fa-info-circle 
m-1"></i><wicket:message key="828" />
                                                <label 
wicket:for="groups"><wicket:message key="126" /></label><div 
class="om-select2"><select class="input" wicket:id="groups"></select></div>
                                        </div>
                                </fieldset>
@@ -92,22 +92,22 @@
                                <fieldset class="ui-widget-content">
                                        <legend 
class="ui-widget-header"><wicket:message key="881" /></legend>
                                        <div class="formelement">
-                                               <div 
class="info-text"><wicket:message key="880" /></div>
+                                               <i class="fas fa-info-circle 
m-1"></i><wicket:message key="880" />
                                                <label 
wicket:for="allowUserQuestions"><wicket:message key="879" /></label><input 
type="checkbox" class="formcheckbox" wicket:id="allowUserQuestions" />
                                        </div>
                                        <div class="formelement">
-                                               <div 
class="info-text"><wicket:message key="1077" /></div>
+                                               <i class="fas fa-info-circle 
m-1"></i><wicket:message key="1077" />
                                                <label 
wicket:for="audioOnly"><wicket:message key="1076" /></label><input 
type="checkbox" class="formcheckbox" wicket:id="audioOnly" />
                                        </div>
                                        <div class="formelement">
-                                               <div 
class="info-text"><wicket:message key="1101" /></div>
+                                               <i class="fas fa-info-circle 
m-1"></i><wicket:message key="1101" />
                                                <label 
wicket:for="closed"><wicket:message key="1099" /></label><input type="checkbox" 
class="formcheckbox" wicket:id="closed" />
                                        </div>
                                        <div class="formelement">
                                                <label 
wicket:for="redirectURL"><wicket:message key="1100" /></label><input 
type="text" wicket:id="redirectURL" />
                                        </div>
                                        <div class="formelement">
-                                               <div 
class="info-text"><wicket:message key="1102" /></div>
+                                               <i class="fas fa-info-circle 
m-1"></i><wicket:message key="1102" />
                                                <br/>
                                                <label 
wicket:for="waitRecording"><wicket:message key="1356" /></label><input 
type="checkbox" class="formcheckbox" wicket:id="waitRecording" />
                                        </div>
@@ -199,11 +199,11 @@
                                <fieldset class="ui-widget-content">
                                        <legend 
class="ui-widget-header"><wicket:message key="816" /></legend>
                                        <div class="formelement">
-                                               <div 
class="info-text"><wicket:message key="823" /></div>
+                                               <i class="fas fa-info-circle 
m-1"></i><wicket:message key="823" />
                                                <label 
wicket:for="moderated"><wicket:message key="640" /></label><input 
type="checkbox" class="formcheckbox" wicket:id="moderated" />
                                        </div>
                                        <div class="formelement">
-                                               <div 
class="info-text"><wicket:message key="admin.room.wait-moderator.info" /></div>
+                                               <i class="fas fa-info-circle 
m-1"></i><wicket:message key="admin.room.wait-moderator.info" />
                                                <label 
wicket:for="waitModerator"><wicket:message 
key="admin.room.wait-moderator.label" /></label><input type="checkbox" 
class="formcheckbox" wicket:id="waitModerator" />
                                        </div>
                                        <div class="formelement">
@@ -240,8 +240,7 @@
                                <fieldset class="ui-widget-content">
                                        <legend 
class="ui-widget-header"><wicket:message key="1001" /></legend>
                                        <div class="formelement">
-                                               <div 
class="info-text"><wicket:message key="1002" /></div>
-                                               <br/>
+                                               <i class="fas fa-info-circle 
m-1"></i><wicket:message key="1002" />
                                        </div>
                                        <div class="formelement">
                                                <label 
wicket:for="confno"><wicket:message key="1003" /></label><input type="text" 
wicket:id="confno" />
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.html
index 0d3f592..a441ed0 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.html
@@ -20,10 +20,10 @@
 -->
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org";>
-<wicket:panel>
+<wicket:extend>
        <form wicket:id="form">
                <label class="pl-4 pr-4" wicket:for="password"><wicket:message 
key="current.password"/></label><input type="password" wicket:id="password"/>
                <div wicket:id="feedback"></div>
        </form>
-</wicket:panel>
+</wicket:extend>
 </html>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.java
index a044c13..c8a911a 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.java
@@ -20,9 +20,6 @@ package org.apache.openmeetings.web.admin.users;
 
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
-import java.util.Arrays;
-import java.util.List;
-
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
@@ -33,15 +30,13 @@ import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.danekja.java.util.function.serializable.SerializableConsumer;
 
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-
+import 
de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxButton;
+import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
 import 
de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
+import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
 
-public class PasswordDialog extends AbstractFormDialog<String> {
+public class PasswordDialog extends Modal<String> {
        private static final long serialVersionUID = 1L;
-       private DialogButton btnOk;
-       private DialogButton btnCancel;
        private final NotificationPanel feedback = new 
NotificationPanel("feedback");
        private final Form<String> form = new Form<>("form");
        private final PasswordTextField pass = new 
PasswordTextField("password", Model.of(""));
@@ -50,7 +45,7 @@ public class PasswordDialog extends 
AbstractFormDialog<String> {
        private UserDao userDao;
 
        public PasswordDialog(String id) {
-               super(id, "");
+               super(id);
        }
 
        public UserForm getUserForm() {
@@ -59,62 +54,46 @@ public class PasswordDialog extends 
AbstractFormDialog<String> {
 
        @Override
        protected void onInitialize() {
-               setTitle(new ResourceModel("537"));
-               btnOk = new DialogButton("ok", getString("54"));
-               btnCancel = new DialogButton("cancel", getString("lbl.cancel"));
-               add(form.add(feedback, pass.setRequired(false).setLabel(new 
ResourceModel("110")).setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true)));
-               super.onInitialize();
-       }
+               header(new ResourceModel("537"));
+               setCloseOnEscapeKey(true);
+               setBackdrop(Backdrop.STATIC);
 
-       @Override
-       protected List<DialogButton> getButtons() {
-               return Arrays.asList(btnOk, btnCancel);
-       }
+               addButton(new BootstrapAjaxButton("button", new 
ResourceModel("54"), form, Buttons.Type.Primary) {
+                       private static final long serialVersionUID = 1L;
 
-       @Override
-       public DialogButton getSubmitButton() {
-               return btnOk;
-       }
-
-       @Override
-       public Form<?> getForm() {
-               return form;
-       }
+                       @Override
+                       protected void onError(AjaxRequestTarget target) {
+                               target.add(feedback);
+                       }
 
-       @Override
-       protected void onError(AjaxRequestTarget target, DialogButton btn) {
-               target.add(feedback);
+                       @Override
+                       protected void onSubmit(AjaxRequestTarget target) {
+                               final UserForm uf = getUserForm();
+                               if (uf.isAdminPassRequired()) {
+                                       if (userDao.verifyPassword(getUserId(), 
pass.getConvertedInput())) {
+                                               if (action != null) {
+                                                       action.accept(target);
+                                               }
+                                               
PasswordDialog.this.close(target);
+                                       } else {
+                                               
form.error(getString("error.bad.password"));
+                                               target.add(feedback);
+                                       }
+                               }
+                       }
+               }); // OK
+               addCloseButton(new ResourceModel("lbl.cancel"));
+               add(form.add(feedback.setOutputMarkupId(true), 
pass.setRequired(false).setLabel(new 
ResourceModel("110")).setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true)));
+               super.onInitialize();
        }
 
        @Override
-       protected void onOpen(IPartialPageRequestHandler handler) {
+       public Modal<String> show(IPartialPageRequestHandler handler) {
                handler.add(pass.setModelObject(""));
-               super.onOpen(handler);
-       }
-
-       @Override
-       public void onClick(AjaxRequestTarget target, DialogButton button) {
-               if (!form.hasError() || !button.equals(btnOk)) {
-                       super.onClick(target, button);
-               }
+               return super.show(handler);
        }
 
        public void setAction(SerializableConsumer<AjaxRequestTarget> action) {
                this.action = action;
        }
-
-       @Override
-       protected void onSubmit(AjaxRequestTarget target, DialogButton btn) {
-               final UserForm uf = getUserForm();
-               if (uf.isAdminPassRequired()) {
-                       if (userDao.verifyPassword(getUserId(), 
pass.getConvertedInput())) {
-                               if (action != null) {
-                                       action.accept(target);
-                               }
-                       } else {
-                               form.error(getString("error.bad.password"));
-                               target.add(feedback);
-                       }
-               }
-       }
 }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
index 2c57f2a..6dc8001 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.html
@@ -27,36 +27,35 @@
                                <wicket:message key="143" />
                        </legend>
                        <div class="formelement">
-                               <label wicket:for="login"><wicket:message 
key="108" /></label><input type="text" wicket:id="login" />
+                               <label wicket:for="login" class="col-3 
text-right"><wicket:message key="108" /></label><input type="text" 
wicket:id="login" class="col-8"/>
                        </div>
                        <div class="formelement">
-                               <label wicket:for="password"><wicket:message 
key="110" /></label><input type="password" wicket:id="password" />
+                               <label wicket:for="password" class="col-3 
text-right"><wicket:message key="110" /></label><input type="password" 
wicket:id="password" class="col-8"/>
                        </div>
                        <form wicket:id="general"></form>
                        <div class="formelement">
-                               <label wicket:for="type"><wicket:message 
key="45" /></label><select wicket:id="type"></select>
+                               <label wicket:for="type" class="col-3 
text-right"><wicket:message key="45" /></label><select wicket:id="type" 
class="custom-select col-8"></select>
                        </div>
                        <div class="formelement" wicket:id="domain">
-                               <label wicket:for="domainId"><wicket:message 
key="1118" /></label><select wicket:id="domainId"></select>
+                               <label wicket:for="domainId" class="col-3 
text-right"><wicket:message key="1118" /></label><select wicket:id="domainId" 
class="col-8"></select>
                        </div>
                        <div class="formelement">
-                               <label><wicket:message key="1308" 
/></label><span wicket:id="ownerId"></span>
+                               <label class="col-3 text-right"><wicket:message 
key="1308" /></label><span wicket:id="ownerId" class="col-8"/>
                        </div>
                        <div class="formelement">
-                               <label><wicket:message key="1110" 
/></label><span wicket:id="inserted" />
+                               <label class="col-3 text-right"><wicket:message 
key="1110" /></label><span wicket:id="inserted" class="col-8"/>
                        </div>
                        <div class="formelement">
-                               <label><wicket:message key="1112" 
/></label><span wicket:id="updated" />
+                               <label class="col-3 text-right"><wicket:message 
key="1112" /></label><span wicket:id="updated" class="col-8"/>
                        </div>
                        <div class="formelement">
-                               <div class="info-text">
-                                       <wicket:message key="1149" />
-                               </div>
-                               <br /> <label 
wicket:for="forceTimeZoneCheck"><wicket:message key="1148" /></label><input 
class="formcheckbox" type="checkbox"
-                                       wicket:id="forceTimeZoneCheck" />
+                               <div><i class="fas fa-info-circle 
m-1"></i><wicket:message key="1149" /></div>
+                               <label wicket:for="forceTimeZoneCheck" 
class="col-3 text-right"><wicket:message key="1148" /></label>
+                               <input class="formcheckbox" type="checkbox" 
wicket:id="forceTimeZoneCheck"/>
                        </div>
                        <div class="formelement">
-                               <label wicket:for="rights"><wicket:message 
key="881" /></label><div class="om-select2"><select class="input" 
wicket:id="rights"></select></div>
+                               <label wicket:for="rights" class="col-3 
text-right"><wicket:message key="881" /></label>
+                               <div class="om-select2 p-0 d-inline-block 
col-8"><select class="input w-100" wicket:id="rights"></select></div>
                        </div>
                </fieldset>
                <fieldset class="ui-widget-content">
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
index 6d3223e..e53ca5d 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
@@ -208,7 +208,7 @@ public class UserForm extends AdminBaseForm<User> {
        protected void onPurgeSubmit(AjaxRequestTarget target, Form<?> form) {
                if (isAdminPassRequired()) {
                        adminPass.setAction(this::purgeUser);
-                       adminPass.open(target);
+                       adminPass.show(target);
                } else {
                        purgeUser(target);
                }
@@ -218,7 +218,7 @@ public class UserForm extends AdminBaseForm<User> {
        protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
                if (isAdminPassRequired()) {
                        
adminPass.setAction((SerializableConsumer<AjaxRequestTarget>)t -> saveUser(t, 
password.getModelObject()));
-                       adminPass.open(target);
+                       adminPass.show(target);
                } else {
                        saveUser(target, password.getConvertedInput());
                }
@@ -298,7 +298,7 @@ public class UserForm extends AdminBaseForm<User> {
        protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
                if (isAdminPassRequired()) {
                        adminPass.setAction(this::deleteUser);
-                       adminPass.open(target);
+                       adminPass.show(target);
                } else {
                        deleteUser(target);
                }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ComunityUserForm.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ComunityUserForm.html
index e5b4bce..f6cf181 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ComunityUserForm.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/ComunityUserForm.html
@@ -21,29 +21,33 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
-       <div class="formelementradiobox">
-               <div wicket:id="community_settings">
-                       <div>
+       <div wicket:id="community_settings">
+               <div>
+                       <div class="d-inline-block col-3"></div>
+                       <div class="d-inline-block col-8">
                                <input wicket:id="everybody" type="radio" 
/><label wicket:for="everybody"><wicket:message key="1160"/></label>
-                               <div class="clear"></div>
                        </div>
-                       <div>
+               </div>
+               <div>
+                       <div class="d-inline-block col-3"></div>
+                       <div class="d-inline-block col-8">
                                <input wicket:id="contact" type="radio" 
/><label wicket:for="contact"><wicket:message key="1168"/></label>
-                               <div class="clear"></div>
                        </div>
-                       <div>
+               </div>
+               <div>
+                       <div class="d-inline-block col-3"></div>
+                       <div class="d-inline-block col-8">
                                <input wicket:id="nobody" type="radio" /><label 
wicket:for="nobody"><wicket:message key="1169"/></label>
-                               <div class="clear"></div>
                        </div>
                </div>
        </div>
        <div class="formelement">
-               <label wicket:for="userOffers"><wicket:message key="1162" 
/></label>
-               <textarea wicket:id="userOffers" />
+               <label wicket:for="userOffers" class="col-3"><wicket:message 
key="1162" /></label>
+               <textarea wicket:id="userOffers" class="col-8"/>
        </div>
        <div class="formelement">
-               <label wicket:for="userSearchs"><wicket:message key="1163" 
/></label>
-               <textarea wicket:id="userSearchs" />
+               <label wicket:for="userSearchs" class="col-3"><wicket:message 
key="1163" /></label>
+               <textarea wicket:id="userSearchs" class="col-8"/>
        </div>
 </wicket:panel>
 </html>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html
index 3c2c7ce..b998656 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/GeneralUserForm.html
@@ -22,50 +22,59 @@
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
        <div class="formelement">
-               <label wicket:for="address.email"><wicket:message key="119" 
/></label><input type="text" wicket:id="address.email" />
+               <label wicket:for="address.email" class="col-3 
text-right"><wicket:message key="119" /></label>
+               <input type="text" wicket:id="address.email" class="col-8"/>
        </div>
        <div class="formelement">
-               <label wicket:for="firstname"><wicket:message key="135" 
/></label><select
-                       wicket:id="salutation"/><input type="text"
-                       wicket:id="firstname"/>
+               <label wicket:for="firstname" class="col-3 
text-right"><wicket:message key="135" /></label>
+               <select wicket:id="salutation" class="custom-select 
col-2"/><input type="text" wicket:id="firstname" class="col-6"/>
        </div>
        <div class="formelement">
-               <label wicket:for="lastname"><wicket:message key="136" 
/></label><input type="text" wicket:id="lastname" />
+               <label wicket:for="lastname" class="col-3 
text-right"><wicket:message key="136" /></label>
+               <input type="text" wicket:id="lastname" class="col-8"/>
        </div>
        <div class="formelement">
-               <label wicket:for="displayName"><wicket:message 
key="user.label.displayName" /></label><input type="text" 
wicket:id="displayName" />
+               <label wicket:for="displayName" class="col-3 
text-right"><wicket:message key="user.label.displayName" /></label>
+               <input type="text" wicket:id="displayName" class="col-8"/>
        </div>
        <div class="formelement">
-               <label wicket:for="timeZoneId"><wicket:message key="1143" 
/></label><select wicket:id="timeZoneId" />
+               <label wicket:for="timeZoneId" class="col-3 
text-right"><wicket:message key="1143" /></label>
+               <select wicket:id="timeZoneId" class="custom-select col-8"/>
        </div>
        <div class="formelement">
-               <label wicket:for="languageId"><wicket:message key="59" 
/></label><select wicket:id="languageId" />
+               <label wicket:for="languageId" class="col-3 
text-right"><wicket:message key="59" /></label>
+               <select wicket:id="languageId" class="custom-select col-8"/>
        </div>
        <div class="formelement">
-               <label wicket:for="address.phone"><wicket:message key="607" 
/></label><input type="text" wicket:id="address.phone" />
+               <label wicket:for="address.phone" class="col-3 
text-right"><wicket:message key="607" /></label>
+               <input type="text" wicket:id="address.phone" class="col-8"/>
        </div>
        <div class="formelement">
-               <label wicket:for="age"><wicket:message key="138" 
/></label><input type="text" class="date time picker" wicket:id="age"/>
+               <label wicket:for="age" class="col-3 
text-right"><wicket:message key="138" /></label>
+               <div class="d-inline-block col-8 p-0">
+                       <input type="text" class="date time picker" 
wicket:id="age"/>
+               </div>
        </div>
        <div class="formelement">
-               <label wicket:for="address.street"><wicket:message key="139" 
/></label><input type="text"
-                       wicket:id="address.street"/> <input
-                       type="text" wicket:id="address.additionalname"/>
+               <label wicket:for="address.street" class="col-3 
text-right"><wicket:message key="139" /></label>
+               <input type="text" wicket:id="address.street" class="col-6"/>
+               <input type="text" wicket:id="address.additionalname" 
class="col-2"/>
        </div>
        <div class="formelement">
-               <label wicket:for="address.town"><wicket:message key="140" 
/></label><input type="text"
-                       wicket:id="address.zip"/> <input type="text"
-                       wicket:id="address.town"/>
+               <label wicket:for="address.town" class="col-3 
text-right"><wicket:message key="140" /></label>
+               <input type="text" wicket:id="address.zip" class="col-2"/> 
<input type="text" wicket:id="address.town" class="col-6"/>
        </div>
        <div class="formelement">
-               <label wicket:for="address.country"><wicket:message key="141" 
/></label><select wicket:id="address.country" />
+               <label wicket:for="address.country" class="col-3 
text-right"><wicket:message key="141" /></label>
+               <select wicket:id="address.country" class="custom-select 
col-8"/>
        </div>
        <div class="formelement">
-               <label wicket:for="address.comment"><wicket:message key="142" 
/></label>
-               <textarea wicket:id="address.comment" />
+               <label wicket:for="address.comment" class="col-3 
text-right"><wicket:message key="142" /></label>
+               <textarea wicket:id="address.comment" class="col-8"/>
        </div>
        <div class="formelement">
-               <label wicket:for="groupUsers"><wicket:message key="161" 
/></label><div class="om-select2"><select class="input" 
wicket:id="groupUsers"></select></div>
+               <label wicket:for="groupUsers" class="col-3 
text-right"><wicket:message key="161" /></label>
+               <div class="om-select2 p-0 d-inline-block col-8"><select 
class="input w-100" wicket:id="groupUsers"></select></div>
        </div>
 </wicket:panel>
 </html>
\ No newline at end of file
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
index 9c2e1ba..e099cea 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
@@ -65,7 +65,7 @@ public class NicknameDialog extends NonClosableDialog<User> {
        protected void onInitialize() {
                getTitle().setObject(getString("1287"));
                ok = new DialogButton("ok", getString("54"));
-               form.add(feedback);
+               form.add(feedback.setOutputMarkupId(true));
                form.add(new 
RequiredTextField<String>("firstname").setLabel(new 
ResourceModel("135")).add(minimumLength(getMinFnameLength())));
                form.add(new RequiredTextField<String>("lastname").setLabel(new 
ResourceModel("136")).add(minimumLength(getMinLnameLength())));
                form.add(new 
RequiredTextField<String>("address.email").setLabel(new 
ResourceModel("119")).add(RfcCompliantEmailAddressValidator.getInstance()));
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
index 8af14d7..8914cf5 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/CreatePollDialog.java
@@ -139,7 +139,7 @@ public class CreatePollDialog extends 
AbstractFormDialog<RoomPoll> {
                                                }
                                        })
                                        .setRequired(true).setLabel(new 
ResourceModel("21")));
-                       add(feedback);
+                       add(feedback.setOutputMarkupId(true));
                        super.onInitialize();
                }
        }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
index 34711aa..dd60495 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
@@ -155,7 +155,7 @@ public class VoteDialog extends 
AbstractFormDialog<RoomPollAnswer> {
 
                PollAnswerForm(String id, IModel<RoomPollAnswer> model) {
                        super(id, model);
-                       add(feedback);
+                       add(feedback.setOutputMarkupId(true));
                        add(new Label("user", user));
                        add(new Label("roomPoll.question"));
                        add(typeBool.add(new 
RadioGroup<Boolean>("answer").setRequired(true)
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserToRoomDialog.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserToRoomDialog.html
index 468f29f..724a6dc 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserToRoomDialog.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/InviteUserToRoomDialog.html
@@ -21,7 +21,7 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:extend>
-       <div class="rooms desc info-text"><wicket:message key="1132"/></div>
+       <div class="rooms desc"><i class="fas fa-info-circle 
m-1"></i><wicket:message key="1132"/></div>
        <div class="rooms title"><wicket:message key="777"/></div>
        <div class="room list container">
                <div wicket:id="publicRooms"></div>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.html
index 1a530e4..072325e 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.html
@@ -63,7 +63,7 @@
                                                                        </tr>
                                                                </table>
                                                        </td>
-                                                       <td><div 
class="info-text"><wicket:message key="1221" /></div></td>
+                                                       <td><i class="fas 
fa-info-circle m-1"></i><wicket:message key="1221" /></td>
                                                </tr>
                                        </table>
                                </td>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html
index 4fab5a0..8131d36 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.html
@@ -21,17 +21,19 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
-       <div class="room-list">
-               <div wicket:id="list" class="room-row">
-                       <div class="container" wicket:id="roomContainer">
-                               <div><span wicket:id="roomName">[room 
name]</span>&nbsp;<span wicket:id="info" class="info-text">&nbsp;</span></div>
-                               <div>
-                                       <wicket:message key="398" />&nbsp;<span 
wicket:id="curUsers"></span>&nbsp;/&nbsp;<span
-                                               
wicket:id="totalUsers"></span>&nbsp;&nbsp;<span 
wicket:id="refresh"><wicket:message key="lbl.refresh"/></span>
+       <table class="room-list table table-striped table-hover">
+               <tr wicket:id="list" class="room-row">
+                       <td class="position-relative">
+                               <div class="container" 
wicket:id="roomContainer">
+                                       <div><span wicket:id="roomName">[room 
name]</span>&nbsp;<i wicket:id="info" class="fas fa-info-circle 
info-text"></i></div>
+                                       <div>
+                                               <wicket:message key="398" 
/>&nbsp;<span wicket:id="curUsers"></span>&nbsp;/&nbsp;<span
+                                                       
wicket:id="totalUsers"></span>&nbsp;&nbsp;<button wicket:id="refresh" 
class="refresh btn-sm m2"></button>
+                                       </div>
                                </div>
-                       </div>
-                       <button wicket:id="btn"><span 
wicket:id="label"></span></button>
-               </div>
-       </div>
+                               <button wicket:id="btn" class="enter btn 
btn-outline-primary"><span wicket:id="label"></span></button>
+                       </td>
+               </tr>
+       </table>
 </wicket:panel>
 </html>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java
index 1e256be..9ea63bf 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomListPanel.java
@@ -21,12 +21,14 @@ package org.apache.openmeetings.web.user.rooms;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CLICK;
 
+import java.io.Serializable;
 import java.util.List;
 
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.web.app.ClientManager;
 import org.apache.openmeetings.web.pages.MainPage;
 import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
@@ -35,16 +37,18 @@ import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 
-import com.googlecode.wicket.jquery.core.JQueryBehavior;
-import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.JQueryIcon;
-import com.googlecode.wicket.jquery.ui.form.button.Button;
-import com.googlecode.wicket.jquery.ui.markup.html.link.AjaxLink;
 import com.googlecode.wicket.jquery.ui.widget.tooltip.TooltipBehavior;
 
+import 
de.agilecoders.wicket.core.markup.html.bootstrap.behavior.CssClassNameAppender;
+import 
de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
+import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
+import 
de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome5IconType;
+
 public class RoomListPanel extends Panel {
        private static final long serialVersionUID = 1L;
        private final ListView<Room> list;
@@ -76,7 +80,7 @@ public class RoomListPanel extends Panel {
                                final Label curUsers = new Label("curUsers", 
new Model<>(cm.listByRoom(r.getId()).size()));
                                
roomContainer.add(curUsers.setOutputMarkupId(true));
                                roomContainer.add(new Label("totalUsers", 
r.getCapacity()));
-                               item.add(new Button("btn").add(new 
Label("label", label)).add(new RoomEnterBehavior(r.getId()) {
+                               item.add(new WebMarkupContainer("btn").add(new 
Label("label", label)).add(new RoomEnterBehavior(r.getId()) {
                                        private static final long 
serialVersionUID = 1L;
 
                                        @Override
@@ -84,21 +88,24 @@ public class RoomListPanel extends Panel {
                                                onRoomEnter(target, roomId);
                                        }
                                }));
-                               roomContainer.add(new 
AjaxLink<String>("refresh") {
+                               roomContainer.add(new 
BootstrapAjaxLink<String>("refresh", null, Buttons.Type.Outline_Info, new 
ResourceModel("lbl.refresh")) {
                                        private static final long 
serialVersionUID = 1L;
 
+                                       {
+                                               
setIconType(FontAwesome5IconType.sync_alt_s);
+                                       }
+
                                        @Override
-                                       public void onClick(AjaxRequestTarget 
target) {
-                                               
target.add(curUsers.setDefaultModelObject(cm.listByRoom(r.getId()).size()));
-                                               onRefreshClick(target, r);
+                                       protected <L extends Serializable> 
Component newLabel(String markupId, IModel<L> model) {
+                                               return super.newLabel(markupId, 
model).setRenderBodyOnly(false).add(new CssClassNameAppender("sr-only"));
                                        }
 
                                        @Override
-                                       public void onConfigure(JQueryBehavior 
behavior) {
-                                               behavior.setOption("icon", 
Options.asString(JQueryIcon.REFRESH));
-                                               behavior.setOption("showLabel", 
false);
+                                       public void onClick(AjaxRequestTarget 
target) {
+                                               
target.add(curUsers.setDefaultModelObject(cm.listByRoom(r.getId()).size()));
+                                               onRefreshClick(target, r);
                                        }
-                               });
+                               }.add(AttributeModifier.append(ATTR_TITLE, new 
ResourceModel("lbl.refresh"))));
                        }
                });
                add(new TooltipBehavior(".info-text"));
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html
index 9ce81bb..b4cd629 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.html
@@ -23,7 +23,7 @@
 <wicket:panel>
        <div class="rooms-header">
                <div wicket:id="title" class="rooms title"></div>
-               <div wicket:id="desc" class="rooms desc info-text"></div>
+               <i class="fas fa-info-circle m-1"></i><div wicket:id="desc" 
class="rooms desc"></div>
        </div>
        <div class="rooms-area" wicket:id="rooms"></div>
 </wicket:panel>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
index 2554380..94c84a4 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
@@ -61,7 +61,7 @@ public class RoomsSelectorPanel extends UserBasePanel {
        @Override
        protected void onInitialize() {
                add(new Label("title", getString(title)));
-               add(new Label("desc", getString(desc)));
+               add(new Label("desc", getString(desc)).setRenderBodyOnly(true));
                super.onInitialize();
        }
 }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.html
index 2f45a05..c762062 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.html
@@ -21,11 +21,6 @@
 <!DOCTYPE html>
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:panel>
-       <div id="orgTabs">
-               <ul>
-                       <li wicket:id="orgTabs"><a 
wicket:id="link"><wicket:container wicket:id="name"></wicket:container></a></li>
-               </ul>
-               <wicket:container wicket:id="orgRooms"><div 
wicket:id="rooms"></div></wicket:container>
-       </div>
+       <div wicket:id="orgTabs" id="orgTabs"></div>
 </wicket:panel>
 </html>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java
index c09fe0f..bf84df6 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsTabbedPanel.java
@@ -20,21 +20,18 @@ package org.apache.openmeetings.web.user.rooms;
 
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
+import java.util.stream.Collectors;
+
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.user.Group;
-import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.common.UserPanel;
-import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.extensions.markup.html.tabs.AbstractTab;
 import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 
-import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import 
de.agilecoders.wicket.core.markup.html.bootstrap.tabs.AjaxBootstrapTabbedPanel;
 
 public class RoomsTabbedPanel extends UserPanel {
        private static final long serialVersionUID = 1L;
@@ -52,28 +49,13 @@ public class RoomsTabbedPanel extends UserPanel {
        protected void onInitialize() {
                super.onInitialize();
                User u = userDao.get(getUserId());
-               add(new ListView<>("orgTabs", u.getGroupUsers()) {
-                       private static final long serialVersionUID = 1L;
-
-                       @Override
-                       protected void populateItem(ListItem<GroupUser> item) {
-                               Group org = item.getModelObject().getGroup();
-                               item.add(new WebMarkupContainer("link")
-                                       .add(new Label("name", 
Model.of(org.getName())))
-                                       .add(AttributeModifier.replace("href", 
"#org" + org.getId())));
-                       }
-               });
-               add(new ListView<>("orgRooms", u.getGroupUsers()) {
+               add(new AjaxBootstrapTabbedPanel<>("orgTabs", 
u.getGroupUsers().stream().map(gu -> new 
AbstractTab(Model.of(gu.getGroup().getName())) {
                        private static final long serialVersionUID = 1L;
 
                        @Override
-                       protected void populateItem(ListItem<GroupUser> item) {
-                               Group org = item.getModelObject().getGroup();
-                               item.add(new RoomsPanel("rooms"
-                                       , roomDao.getGroupRooms(org.getId()))
-                                       .setMarkupId("org" + 
org.getId())).setRenderBodyOnly(true);
+                       public WebMarkupContainer getPanel(String panelId) {
+                               return new RoomsPanel(panelId, 
roomDao.getGroupRooms(gu.getGroup().getId()));
                        }
-               });
-               add(new JQueryBehavior("#orgTabs", "tabs"));
+               }).collect(Collectors.toList())));
        }
 }
diff --git a/openmeetings-web/src/main/webapp/css/raw-admin.css 
b/openmeetings-web/src/main/webapp/css/raw-admin.css
index 0b98f16..fb3238a 100644
--- a/openmeetings-web/src/main/webapp/css/raw-admin.css
+++ b/openmeetings-web/src/main/webapp/css/raw-admin.css
@@ -36,75 +36,17 @@
        height: var(--actions-height);
        padding-top: 5px;
 }
-.adminPanelColumnTable .list-table .ui-button.ui-widget {
-       padding: 0;
-}
 .adminPanelColumnForm div.scrollcontent {
        height: calc(100% - var(--actions-height));
        vertical-align: top;
        overflow-y: auto;
 }
-.adminForm .input, .adminForm input, .adminForm input.formcheckbox
-,.adminForm textarea, .adminForm select, .adminForm label
- {
-       display: block;
-       float: left;
-       font-size: 14px;
-       padding: 0px 0px;
-       margin: 2px 2px;
-}
-.adminForm .input {
-       border: solid 1px #aacfe4;
-       width: 280px;
-       min-height: 20px;
-       white-space: normal; /* IE */
-       white-space: initial;
-}
-.adminForm input {
-       border: solid 1px #aacfe4;
-       width: 280px;
-       height: 20px;
-}
-.adminForm input[type=checkbox], .adminForm input[type=radio] {
-       width: auto;
-}
-.adminForm input.formcheckbox {
-       border: none;
-       width: 20px;
-       height: 20px;
-}
-.adminForm fieldset {
-       margin-top: 4px;
-       padding: 4px;
-}
 .adminForm legend {
        padding: 0.2em 0.5em;
        margin: 0px 10px;
        font-style: italic;
        text-align: right;
 }
-.adminForm textarea {
-       border: solid 1px #aacfe4;
-       width: 280px;
-       height: 60px;
-}
-.adminForm div.formelement {
-       display: block;
-       clear: both;
-       max-width: 540px;
-       white-space: nowrap;
-}
-.adminForm select {
-       height: 20px;
-       border: solid 1px #aacfe4;
-       width: 282px;
-}
-.adminForm label {
-       font-weight: bold;
-       text-align: right;
-       width: 180px;
-       white-space: normal;
-}
 .adminForm .group.logo .profile img {
        height: 16px;
        width: auto;
diff --git a/openmeetings-web/src/main/webapp/css/raw-general-rtl.css 
b/openmeetings-web/src/main/webapp/css/raw-general-rtl.css
index 980958c..edd32bf 100644
--- a/openmeetings-web/src/main/webapp/css/raw-general-rtl.css
+++ b/openmeetings-web/src/main/webapp/css/raw-general-rtl.css
@@ -22,11 +22,6 @@ html[dir="rtl"] #busy-indicator {
 html[dir="rtl"] .ui-tabs .ui-tabs-nav li {
        float: right !important;
 }
-html[dir="rtl"] .info-text {
-       background-position: right top !important;
-       padding-left: initial !important;
-       padding-right: 20px;
-}
 html[dir="rtl"] .start_step1
 , html[dir="rtl"] .start_step2
 , html[dir="rtl"] .start_step3
@@ -48,9 +43,6 @@ html[dir="rtl"] .start_step4 {
        margin-left: initial !important;
        margin-right: 60px !important;
 }
-html[dir="rtl"] form .input {
-       float: right !important;
-}
 html[dir="rtl"] .ui-dialog .ui-dialog-title {
        float: right !important;
 }
diff --git a/openmeetings-web/src/main/webapp/css/raw-general.css 
b/openmeetings-web/src/main/webapp/css/raw-general.css
index f2d11b5..17b2902 100644
--- a/openmeetings-web/src/main/webapp/css/raw-general.css
+++ b/openmeetings-web/src/main/webapp/css/raw-general.css
@@ -96,18 +96,6 @@ html, body {
        max-width: 100%;
        height: calc(100% - 50px);
 }
-.formelementradiobox {
-       margin-left: 100px;
-}
-.formelementradiobox input {
-       margin: 0px 0px;
-       border: none;
-       width: 20px;
-}
-.formelementradiobox label {
-       width: 260px;
-       margin: 0px
-}
 .pagedEntityListPanel {
        margin-left: 2px;
        display: inline-block;
@@ -370,16 +358,6 @@ textarea.messages.body {
 select.messages.selector {
        width: 220px;
 }
-.info-text {
-       background-image: url(images/information.png);
-       background-repeat: no-repeat;
-       background-position: left top;
-       cursor: default;
-       border: none;
-       padding-left: 20px;
-       font-style: italic;
-       white-space: normal;
-}
 .info-title {
        background-image: url(images/information.png);
        background-repeat: no-repeat;
@@ -406,21 +384,10 @@ select.messages.selector {
 #ui-datepicker-div {
        z-index: 100 !important;
 }
-.room-list {
-       border-collapse: collapse;
-       min-width: 400px;
-}
-.room-list .room-row {
-       border: 1px solid transparent;
-       background-color: rgb(248, 248, 248);
-       margin-bottom: 4px;
-       padding: 5px;
-       position: relative;
-}
-.room-list .room-row .container {
-       margin-right: 120px;
+.room-list .room-row button.refresh {
+       padding: 0 0.25rem;
 }
-.room-list .room-row button {
+.room-list .room-row button.enter {
        position: absolute;
        right: 10px;
        top: 10px;
@@ -498,7 +465,7 @@ select.messages.selector {
 .rooms-area {
        display: flex;
 }
-#orgTabs.ui-tabs .ui-tabs-panel {
+#orgTabs .tab-content {
        display: flex;
        padding-bottom: 0;
        height: calc(100% - var(--tabs-height));
@@ -539,14 +506,6 @@ select.messages.selector {
        bottom: 0;
        position: fixed;
 }
-form .input {
-       display: block;
-       float: left;
-       font-size: 14px;
-       padding: 0px 0px;
-       width: 280px;
-       margin: 2px 2px;
-}
 .profile {
        position: relative;
 }

Reply via email to