You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2020/09/06 15:15:43 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2426] multiple UI issues should be fixed

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 1a0d10b  [OPENMEETINGS-2426] multiple UI issues should be fixed
1a0d10b is described below

commit 1a0d10b98be16c20a54ef8a8fdebde9400e2599c
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sun Sep 6 22:14:33 2020 +0700

    [OPENMEETINGS-2426] multiple UI issues should be fixed
---
 .../openmeetings/web/admin/AdminActionsPanel.java  |  2 +-
 .../web/admin/configurations/ConfigsPanel.html     |  2 +-
 .../web/admin/connection/ConnectionsPanel.java     |  2 +-
 .../openmeetings/web/admin/email/EmailForm.java    |  2 +-
 .../web/admin/groups/GroupUsersPanel.java          |  2 +-
 .../openmeetings/web/admin/labels/LangPanel.java   |  2 +-
 .../openmeetings/web/admin/oauth/OAuthForm.java    |  2 +-
 .../openmeetings/web/admin/rooms/RoomForm.java     |  2 +-
 .../openmeetings/web/common/FormActionsPanel.java  |  2 +-
 .../apache/openmeetings/web/common/MainPanel.java  |  2 +-
 .../web/common/UploadableImagePanel.java           |  2 +-
 .../common/confirmation/ConfirmableAjaxBorder.html |  1 -
 .../common/confirmation/ConfirmableAjaxBorder.java | 72 ++--------------------
 .../common/confirmation/ConfirmationBehavior.java  | 18 ++++++
 .../web/common/tree/FileTreePanel.html             |  1 +
 .../web/common/tree/FileTreePanel.java             | 26 ++++----
 .../web/room/poll/PollResultsDialog.java           |  2 +-
 .../web/user/calendar/AppointmentDialog.java       |  2 +-
 .../web/user/calendar/CalendarDialog.java          |  2 +-
 .../openmeetings/web/user/chat/ChatToolbar.java    |  2 +-
 .../dashboard/admin/AdminCleanupInfoDialog.java    |  2 +-
 .../web/user/profile/InvitationDetails.java        |  2 +-
 .../web/user/profile/MessagesContactsPanel.java    |  2 +-
 openmeetings-web/src/main/webapp/css/raw-room.css  | 17 ++++-
 24 files changed, 68 insertions(+), 103 deletions(-)

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 3fc63da..c565b78 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.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.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 a34bc28..8f29abd 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
@@ -67,7 +67,7 @@
 							<label wicket:for="valueB" class="col-3 text-right"><wicket:message key="271" /></label>
 							<div class="onoffswitch">
 								<input type="checkbox" class="onoff-checkbox" wicket:id="valueB"/>
-								<label class="onoff-label" wicket:for="valueB"></label>
+								<label class="onoff-label clickable" wicket:for="valueB"></label>
 							</div>
 						</div>
 						<div wicket:id="hotkey-box">
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 3ba5697..a57b704 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.ConfirmableAjaxBorder.newOkCancelConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.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 cfbdb03..4ea2256 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.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.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/groups/GroupUsersPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
index fe55167..10a7605 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.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
 
 import java.util.ArrayList;
 import java.util.List;
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 8c4791d..4d43642 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.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.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/oauth/OAuthForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
index b3a144c..6027e9d 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
@@ -19,7 +19,7 @@
 package org.apache.openmeetings.web.admin.oauth;
 
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static org.apache.openmeetings.web.common.confirmation.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
 import static org.apache.openmeetings.web.pages.auth.SignInPage.getRedirectUri;
 
 import java.util.AbstractMap.SimpleEntry;
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 a67edcc..9706455 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
@@ -23,7 +23,7 @@ import static org.apache.openmeetings.web.admin.AdminUserChoiceProvider.PAGE_SIZ
 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.confirmation.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.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/common/FormActionsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.java
index 48e268d..6591b2e 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.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.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 ed16515..2cc9ec4 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
@@ -24,7 +24,7 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
 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.ConfirmableAjaxBorder.newOkCancelConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.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 36bb7e8..42a72d5 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.ConfirmableAjaxBorder.newOkCancelConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelConfirm;
 
 import java.io.File;
 import java.util.Optional;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmableAjaxBorder.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmableAjaxBorder.html
index e1325f5..e5bd812 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmableAjaxBorder.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmableAjaxBorder.html
@@ -22,6 +22,5 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:border>
 	<wicket:body/>
-	<div wicket:id="dialog"></div>
 </wicket:border>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmableAjaxBorder.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmableAjaxBorder.java
index a5039c3..2b651c5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmableAjaxBorder.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/confirmation/ConfirmableAjaxBorder.java
@@ -20,40 +20,21 @@ package org.apache.openmeetings.web.common.confirmation;
 
 import static org.apache.openmeetings.web.common.BasePanel.EVT_CLICK;
 
-import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.markup.html.border.Border;
-import org.apache.wicket.model.IModel;
 
 public abstract class ConfirmableAjaxBorder extends Border {
 	private static final long serialVersionUID = 1L;
-	private final IModel<String> title;
-	private final IModel<String> message;
-	private ConfirmationDialog dialog;
+	private final ConfirmationDialog dialog;
 
-	public ConfirmableAjaxBorder(String id, IModel<String> title, IModel<String> message) {
+	public ConfirmableAjaxBorder(String id, ConfirmationDialog dialog) {
 		super(id);
-		this.title = title;
-		this.message = message;
+		this.dialog = dialog;
 		setOutputMarkupId(true);
 	}
 
-	private ConfirmationDialog getDialog() {
-		if (dialog == null) {
-			dialog = new ConfirmationDialog("dialog", title, message) {
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				protected void onConfirm(AjaxRequestTarget target) {
-					ConfirmableAjaxBorder.this.onConfirm(target);
-				}
-			};
-		}
-		return dialog;
-	}
-
 	@Override
 	protected void onInitialize() {
 		super.onInitialize();
@@ -69,27 +50,16 @@ public abstract class ConfirmableAjaxBorder extends Border {
 			@Override
 			protected void onEvent(AjaxRequestTarget target) {
 				if (isClickable()) {
-					getDialog().show(target);
+					dialog.show(target);
 				}
 			}
 		});
-		addToBorder(getDialog());
 	}
 
 	protected boolean isClickable() {
 		return true;
 	}
 
-	public ConfirmableAjaxBorder setTitle(IModel<String> title) {
-		getDialog().header(title);
-		return this;
-	}
-
-	public ConfirmableAjaxBorder setMessage(IModel<String> message) {
-		getDialog().setModel(message);
-		return this;
-	}
-
 	/**
 	 * Gives a chance to the specializations to modify the attributes.
 	 *
@@ -99,38 +69,6 @@ public abstract class ConfirmableAjaxBorder extends Border {
 	}
 
 	protected void onEvent(AjaxRequestTarget target) {
-		getDialog().show(target);
-	}
-
-	/**
-	 * Triggered when the form is submitted, and the validation succeed
-	 *
-	 * @param target - the {@link AjaxRequestTarget}
-	 */
-	protected abstract void onConfirm(AjaxRequestTarget target);
-
-	@Override
-	protected void detachModel() {
-		super.detachModel();
-		title.detach();
-		message.detach();
-	}
-
-	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")
-				);
-	}
-
-	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);
+		dialog.show(target);
 	}
 }
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
index 582617a..5b0864f 100644
--- 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
@@ -91,4 +91,22 @@ public class ConfirmationBehavior extends BootstrapJavascriptBehavior {
 			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/tree/FileTreePanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
index 99ef290..b1dc66a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
@@ -67,5 +67,6 @@
 		<div wicket:id="errors"></div>
 	</div>
 	</form>
+	<div wicket:id="trash-confirm-dialog"></div>
 </wicket:panel>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index d60e6a7..9dcce65 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -46,6 +46,7 @@ import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.web.common.NameDialog;
 import org.apache.openmeetings.web.common.confirmation.ConfirmableAjaxBorder;
+import org.apache.openmeetings.web.common.confirmation.ConfirmationDialog;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxEventBehavior;
@@ -133,6 +134,7 @@ public abstract class FileTreePanel extends Panel {
 		}
 	});
 	private final Component upload = new WebMarkupContainer("upload");
+	private ConfirmationDialog confirmTrashDialog;
 
 	@SpringBean
 	private RecordingDao recDao;
@@ -208,6 +210,7 @@ public abstract class FileTreePanel extends Panel {
 			}
 		}));
 		trashToolbar.add(getTrashBorder());
+		add(confirmTrashDialog);
 
 		form.add(trees.add(tree).setOutputMarkupId(true));
 		updateSizes();
@@ -304,33 +307,26 @@ public abstract class FileTreePanel extends Panel {
 
 	private ConfirmableAjaxBorder getTrashBorder() {
 		if (trashBorder == null) {
-			trashBorder = new ConfirmableAjaxBorder("trash", new ResourceModel("80"), new ResourceModel("713")) {
+			confirmTrashDialog = new ConfirmationDialog("trash-confirm-dialog", new ResourceModel("80"), new ResourceModel("713")) {
 				private static final long serialVersionUID = 1L;
 
 				@Override
-				protected boolean isClickable() {
-					return !readOnly && !selected.isEmpty();
+				protected void onConfirm(AjaxRequestTarget target) {
+					deleteAll(target);
 				}
+			};
+			trashBorder = new ConfirmableAjaxBorder("trash", confirmTrashDialog) {
+				private static final long serialVersionUID = 1L;
 
 				@Override
-				protected void onConfirm(AjaxRequestTarget target) {
-					deleteAll(target);
+				protected boolean isClickable() {
+					return !readOnly && !selected.isEmpty();
 				}
 			};
 		}
 		return trashBorder;
 	}
 
-	public FileTreePanel setBorderTitle(IModel<String> title) {
-		getTrashBorder().setTitle(title);
-		return this;
-	}
-
-	public FileTreePanel setBorderMessage(IModel<String> message) {
-		getTrashBorder().setMessage(message);
-		return this;
-	}
-
 	@Override
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);
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 ab9612f..c5cf96a 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
@@ -20,7 +20,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.confirmation.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
 
 import java.util.ArrayList;
 import java.util.List;
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 c0bfe0e..e10c8f9 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
@@ -21,7 +21,7 @@ package org.apache.openmeetings.web.user.calendar;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.isMyRoomsEnabled;
 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.confirmation.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.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 a64c2f6..5356be1 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.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
 
 import java.util.List;
 
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 e9d6428..76c5098 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.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
 import static org.apache.openmeetings.web.room.RoomPanel.isModerator;
 
 import java.util.List;
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 10acdbc..5d76376 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.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.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/profile/InvitationDetails.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationDetails.java
index 4e528c3..f8df56a 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.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
 
 import java.util.Date;
 
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 22d82b6..b60c3dc 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.ConfirmableAjaxBorder.newOkCancelDangerConfirm;
+import static org.apache.openmeetings.web.common.confirmation.ConfirmationBehavior.newOkCancelDangerConfirm;
 
 import java.util.ArrayList;
 import java.util.HashSet;
diff --git a/openmeetings-web/src/main/webapp/css/raw-room.css b/openmeetings-web/src/main/webapp/css/raw-room.css
index f80b552..2ffa913 100644
--- a/openmeetings-web/src/main/webapp/css/raw-room.css
+++ b/openmeetings-web/src/main/webapp/css/raw-room.css
@@ -509,13 +509,26 @@ html[dir="rtl"] .room-block .sb-wb .sidebar {
 }
 .room-block .room-container .user-video {
 	display: inline-block !important;
-	overflow: hidden;
 }
 .room-block .room-container .user-video .ui-resizable-se {
+	position: absolute;
+	display: inline-block;
+	width: 16px;
+	height: 16px;
+	right: 0px;
+	bottom: 0px;
+	overflow: hidden;
+	background: none;
+}
+.room-block .room-container .user-video .ui-resizable-se:before {
+	content: ' ';
 	width: 32px;
 	height: 32px;
 	transform: rotate(-45deg);
-	right: -16px;
+	position: absolute;
+	top: 0;
+	right: 0;
+	right: -21px;
 	bottom: -16px;
 	background: repeating-linear-gradient(
 		var(--dark), var(--dark) 3px, transparent 3px, transparent 5px