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/02/21 04:02:13 UTC

[openmeetings] branch csp updated: [OPENMEETINGS-2165] initial work on wb

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 b799c29  [OPENMEETINGS-2165] initial work on wb
b799c29 is described below

commit b799c29470eea1d3aeb555031c934f0ca1a4900a
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Fri Feb 21 11:01:55 2020 +0700

    [OPENMEETINGS-2165] initial work on wb
---
 .../openmeetings/web/admin/backup/BackupPanel.html |  4 +-
 .../openmeetings/web/admin/ldaps/LdapsPanel.html   |  4 +-
 .../openmeetings/web/admin/rooms/RoomsPanel.html   | 16 ++---
 .../openmeetings/web/admin/users/UserForm.html     |  2 +-
 .../apache/openmeetings/web/room/wb/WbPanel.html   | 20 +++---
 .../apache/openmeetings/web/room/wb/raw-wb-area.js | 77 +++++++++++-----------
 .../openmeetings/web/room/wb/raw-wb-board.js       | 34 +++++-----
 .../web/user/InviteUserToRoomDialog.html           |  2 +-
 .../openmeetings/web/user/MessageDialog.html       |  2 +-
 .../openmeetings/web/user/rooms/RoomListPanel.html |  2 +-
 .../openmeetings/web/user/rooms/RoomListPanel.java |  2 +-
 .../web/user/rooms/RoomsSelectorPanel.html         |  2 +-
 openmeetings-web/src/main/webapp/css/raw-wb.css    | 38 ++++++-----
 13 files changed, 107 insertions(+), 98 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 f66e437..767934e 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>
 			<legend><wicket:message key="1066" /></legend>
 			<div class="formelement">
-				<div><i class="fas fa-info-circle m-1"></i><wicket:message key="1065" /></div>
+				<div><i class="fas fa-info-circle m-1 text-info"></i><wicket:message key="1065" /></div>
 			</div>
 			<div class="formelement">
 				<div class="custom-control custom-checkbox m-2">
@@ -52,7 +52,7 @@
 			</div>
 			<div class="formelement">
 				<!-- Backup CLI import information -->
-				<i class="fas fa-info-circle m-1"></i>
+				<i class="fas fa-info-circle m-1 text-info"></i>
 				<div wicket:id="cmdLineDesc"></div>
 			</div>
 		</fieldset>
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 33bfc3c..1c14d62 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
@@ -73,7 +73,7 @@
 					<div class="formelement">
 						<div>
 							<div class="col-3 d-inline-block"></div>
-							<div class="col-8 d-inline-block"><i class="fas fa-info-circle m-1"></i><wicket:message key="1114" /></div>
+							<div class="col-8 d-inline-block"><i class="fas fa-info-circle m-1 text-info"></i><wicket:message key="1114" /></div>
 						</div>
 						<label wicket:for="configFileName" class="col-3 text-right"><wicket:message key="1115" /></label>
 						<input type="text" wicket:id="configFileName" class="col-8"/>
@@ -81,7 +81,7 @@
 					<div class="formelement">
 						<div>
 							<div class="col-3 d-inline-block"></div>
-							<div class="col-8 d-inline-block"><i class="fas fa-info-circle m-1"></i><wicket:message key="1116" /></div>
+							<div class="col-8 d-inline-block"><i class="fas fa-info-circle m-1 text-info"></i><wicket:message key="1116" /></div>
 						</div>
 						<label wicket:for="addDomainToUserName" class="col-3 text-right"><wicket:message key="1117" /></label>
 						<input type="checkbox" class="formcheckbox" wicket:id="addDomainToUserName"/>
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 cc1c9bb..e354752 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
@@ -80,7 +80,7 @@
 					<div class="formelement">
 						<div class="col-3 d-inline-block"></div>
 						<div class="col-8 d-inline-block">
-							<i class="fas fa-info-circle m-1"></i><wicket:message key="828" />
+							<i class="fas fa-info-circle m-1 text-info"></i><wicket:message key="828" />
 						</div>
 						<label wicket:for="groups" class="col-3 text-right"><wicket:message key="126" /></label>
 						<div class="om-select2 p-0 d-inline-block col-8"><select class="input w-100" wicket:id="groups"></select></div>
@@ -106,7 +106,7 @@
 					<div class="formelement">
 						<div class="col-3 d-inline-block"></div>
 						<div class="col-8 d-inline-block">
-							<i class="fas fa-info-circle m-1"></i><wicket:message key="880" />
+							<i class="fas fa-info-circle m-1 text-info"></i><wicket:message key="880" />
 						</div>
 						<label wicket:for="allowUserQuestions" class="col-3 text-right"><wicket:message key="879" /></label>
 						<input type="checkbox" class="formcheckbox" wicket:id="allowUserQuestions" />
@@ -114,7 +114,7 @@
 					<div class="formelement">
 						<div class="col-3 d-inline-block"></div>
 						<div class="col-8 d-inline-block">
-							<i class="fas fa-info-circle m-1"></i><wicket:message key="1077" />
+							<i class="fas fa-info-circle m-1 text-info"></i><wicket:message key="1077" />
 						</div>
 						<label wicket:for="audioOnly" class="col-3 text-right"><wicket:message key="1076" /></label>
 						<input type="checkbox" class="formcheckbox" wicket:id="audioOnly" />
@@ -122,7 +122,7 @@
 					<div class="formelement">
 						<div class="col-3 d-inline-block"></div>
 						<div class="col-8 d-inline-block">
-							<i class="fas fa-info-circle m-1"></i><wicket:message key="1101" />
+							<i class="fas fa-info-circle m-1 text-info"></i><wicket:message key="1101" />
 						</div>
 						<label wicket:for="closed" class="col-3 text-right"><wicket:message key="1099" /></label>
 						<input type="checkbox" class="formcheckbox" wicket:id="closed" />
@@ -134,7 +134,7 @@
 					<div class="formelement">
 						<div class="col-3 d-inline-block"></div>
 						<div class="col-8 d-inline-block">
-							<i class="fas fa-info-circle m-1"></i><wicket:message key="1102" />
+							<i class="fas fa-info-circle m-1 text-info"></i><wicket:message key="1102" />
 						</div>
 						<label wicket:for="waitRecording" class="col-3 text-right"><wicket:message key="1356" /></label>
 						<input type="checkbox" class="formcheckbox" wicket:id="waitRecording" />
@@ -232,7 +232,7 @@
 					<div class="formelement">
 						<div class="col-3 d-inline-block"></div>
 						<div class="col-8 d-inline-block">
-							<i class="fas fa-info-circle m-1"></i><wicket:message key="823" />
+							<i class="fas fa-info-circle m-1 text-info"></i><wicket:message key="823" />
 						</div>
 						<label wicket:for="moderated" class="col-3 text-right"><wicket:message key="640" /></label>
 						<input type="checkbox" class="formcheckbox" wicket:id="moderated" />
@@ -240,7 +240,7 @@
 					<div class="formelement">
 						<div class="col-3 d-inline-block"></div>
 						<div class="col-8 d-inline-block">
-							<i class="fas fa-info-circle m-1"></i><wicket:message key="admin.room.wait-moderator.info" />
+							<i class="fas fa-info-circle m-1 text-info"></i><wicket:message key="admin.room.wait-moderator.info" />
 						</div>
 						<label wicket:for="waitModerator" class="col-3 text-right"><wicket:message key="admin.room.wait-moderator.label" /></label>
 						<input type="checkbox" class="formcheckbox" wicket:id="waitModerator" />
@@ -278,7 +278,7 @@
 				<fieldset>
 					<legend><wicket:message key="1001" /></legend>
 					<div class="formelement">
-						<i class="fas fa-info-circle m-1"></i><wicket:message key="1002" />
+						<i class="fas fa-info-circle m-1 text-info"></i><wicket:message key="1002" />
 					</div>
 					<div class="formelement">
 						<label wicket:for="confno" class="col-3 text-right"><wicket:message key="1003" /></label>
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 6119143..352efc3 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
@@ -51,7 +51,7 @@
 			<div class="formelement">
 				<div class="col-3 d-inline-block"></div>
 				<div class="col-8 d-inline-block">
-					<i class="fas fa-info-circle m-1"></i><wicket:message key="1149" />
+					<i class="fas fa-info-circle m-1 text-info"></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"/>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
index efa3473..31080a1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
@@ -22,9 +22,12 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
 	<div class="tabs">
-		<div class="wb-tabbar ui-corner-all ui-widget-header">
-			<div class="scroll-container"><ul class="scrollable"></ul></div>
+		<div class="wb-tabbar">
+			<div class="scroll-container">
+				<ul class="scrollable nav nav-tabs" role="tablist"></ul>
+			</div>
 		</div>
+		<div class="wb-tab-content tab-content"></div>
 	</div>
 
 	<div hidden="hidden">
@@ -36,13 +39,12 @@
 		<div id="wb-tabbar-ctrls-right">
 			<div class="next clickable om-icon big"></div>
 		</div>
-		<ul><li id="wb-area-tab">
-			<a><span>[title]</span></a>
+		<ul><li id="wb-area-tab" class="nav-item">
+			<a class="nav-link" data-toggle="tab" role="tab"><span></span></a>
 		</li></ul>
-		<button id="wb-tab-close" type="button" class="ui-button ui-corner-all ui-widget ui-button-icon-only ui-dialog-titlebar-close" wicket:message="title:85">
-			<span class="ui-button-icon ui-icon ui-icon-closethick"></span>
-			<span class="ui-button-icon-space"> </span>
-			<wicket:message key="85"/>
+		<button id="wb-tab-close" class="btn btn-sm btn-outline-secondary" wicket:message="title:85">
+			<i class="fas fa-times"></i>
+			<span class="sr-only"><wicket:message key="85"/></span>
 		</button>
 		<div id="wb-area-texts" class="btn-group texts align-left">
 			<a class="dropdown-toggle" data-toggle="dropdown">
@@ -82,7 +84,7 @@
 				</li>
 			</ul>
 		</div>
-		<div id="wb-area">
+		<div id="wb-area" class="tab-pane" role="tabpanel">
 			<div class="scroll-container">
 				<div class="canvases"></div>
 				<div class="bottom-bumper"></div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
index a7a5349..5610696 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
@@ -60,9 +60,6 @@ var DrawWbArea = function() {
 		}
 	}
 
-	function refreshTabs() {
-		tabs.tabs('refresh').find('ul').removeClass('ui-corner-all').removeClass('ui-widget-header');
-	}
 	function getActive() {
 		const idx = tabs.tabs('option', 'active');
 		if (idx > -1) {
@@ -105,22 +102,20 @@ var DrawWbArea = function() {
 			}
 		}
 	}
-	function _getWbTab(wbId) {
-		return tabs.find('li[data-wb-id="' + wbId + '"]');
-	}
 	function _activateTab(wbId) {
-		container.find('.wb-tabbar li').each(function(idx) {
-			if (wbId === 1 * $(this).data('wb-id')) {
-				tabs.tabs('option', 'active', idx);
-				$(this)[0].scrollIntoView();
-				return false;
-			}
-		});
+		const li = _getWbTab(wbId);
+		if (li.length > 0) {
+			li.tab('show');
+			li[0].scrollIntoView();
+		}
 	}
-	function _setTabName(li, name) {
-		return li.find('a').attr('title', name)
+	function _setTabName(link, name) {
+		return link.attr('title', name)
 			.find('span').text(name)
 	}
+	function _getWbTab(wbId) {
+		return $('#' + __getWbTabId(wbId));
+	}
 	function _renameTab(obj) {
 		_setTabName(_getWbTab(obj.wbId), obj.name);
 	}
@@ -128,7 +123,7 @@ var DrawWbArea = function() {
 		if (role !== PRESENTER) {
 			return;
 		}
-		li.append(OmUtil.tmpl('#wb-tab-close'));
+		li.find('a').append(OmUtil.tmpl('#wb-tab-close'));
 		li.find('button').click(function() {
 			OmUtil.confirmDlg('wb-confirm-remove', function() { OmUtil.wbAction({action: 'removeWb', data: {wbId: li.data().wbId}}); });
 		});
@@ -151,12 +146,15 @@ var DrawWbArea = function() {
 			 _videoStatus(arr[i]);
 		}
 	}
-
-	self.getWbTabId = function(id) {
+	function __getWbTabId(id) {
 		return 'wb-tab-' + id;
 	};
+	function __getWbContentId(id) {
+		return 'wb-content-' + id;
+	};
+
 	self.getWb = function(id) {
-		return $('#' + self.getWbTabId(id)).data();
+		return $('#' + __getWbContentId(id)).data();
 	};
 	self.getCanvas = function(id) {
 		return self.getWb(id).getCanvas();
@@ -166,7 +164,7 @@ var DrawWbArea = function() {
 			return;
 		}
 		role = _role;
-		const tabsNav = tabs.find('.ui-tabs-nav');
+		const tabsNav = tabs.find('ul.nav-tabs');
 		tabsNav.sortable(role === PRESENTER ? 'enable' : 'disable');
 		const prev = tabs.find('.prev.om-icon'), next = tabs.find('.next.om-icon');
 		if (role === PRESENTER) {
@@ -185,20 +183,21 @@ var DrawWbArea = function() {
 					scroll.scrollLeft(scroll.scrollLeft() + 30);
 				});
 				tabsNav.find('li').each(function() {
-					const li = $(this);
-					_addCloseBtn(li);
+					_addCloseBtn($(this));
 				});
 				self.addDeleteHandler();
 			}
+			tabsNav.find('li > a').prop('disable', false);
 		} else {
 			if (prev.length > 0) {
 				prev.parent().remove();
 				next.parent().remove();
+				tabsNav.find('li > a').prop('disable', true);
 				tabsNav.find('li button').remove();
 			}
 			self.removeDeleteHandler();
 		}
-		tabs.find('.ui-tabs-panel').each(function() {
+		tabs.find('.wb-tab-content .tab-pane').each(function() {
 			$(this).data().setRole(role);
 		});
 	}
@@ -212,6 +211,9 @@ var DrawWbArea = function() {
 			setTimeout(_doInit, 100, callback);
 			return;
 		}
+		//FIXME TODO check disabled
+		//FIXME TODO send activating
+		/*
 		tabs.tabs({
 			beforeActivate: function(e) {
 				let res = true;
@@ -227,13 +229,11 @@ var DrawWbArea = function() {
 				}
 			}
 		});
+		*/
 		scroll = tabs.find('.scroll-container');
 		area = container.find('.wb-area');
-		tabs.find('.ui-tabs-nav').sortable({
+		tabs.find('ul.nav-tabs').sortable({
 			axis: 'x'
-			, stop: function() {
-				refreshTabs();
-			}
 		});
 		_inited = true;
 		self.setRole(role);
@@ -257,9 +257,10 @@ var DrawWbArea = function() {
 		if (!_inited) {
 			return;
 		}
-		const tid = self.getWbTabId(obj.wbId)
-			, wb = OmUtil.tmpl('#wb-area', tid)
-			, li = OmUtil.tmpl('#wb-area-tab').data('wb-id', obj.wbId).attr('data-wb-id', obj.wbId)
+		const tid = __getWbTabId(obj.wbId)
+			, tcid = __getWbContentId(obj.wbId)
+			, wb = OmUtil.tmpl('#wb-area', tcid).attr('aria-labelledby', tid)
+			, li = OmUtil.tmpl('#wb-area-tab')
 				.contextmenu(function(e) {
 					if (role !== PRESENTER) {
 						return;
@@ -267,9 +268,10 @@ var DrawWbArea = function() {
 					e.preventDefault();
 					$('#wb-rename-menu').show().data('wb-id', obj.wbId)
 						.position({my: 'left top', collision: 'none', of: _getWbTab(obj.wbId)});
-				});
-		li.find('a').attr('href', '#' + tid);
-		_setTabName(li, obj.name)
+				})
+			, link = li.find('a');
+		link.attr('id', tid).attr('data-wb-id', obj.wbId).attr('href', '#' + tcid).attr('aria-controls', tcid);
+		_setTabName(link, obj.name)
 			.dblclick(function() {
 				if (role !== PRESENTER) {
 					return;
@@ -293,13 +295,12 @@ var DrawWbArea = function() {
 					});
 			});
 
-		tabs.find('.ui-tabs-nav').append(li);
-		tabs.append(wb);
-		refreshTabs();
+		tabs.find('ul.nav-tabs').append(li);
+		tabs.find('.wb-tab-content').append(wb);
 		_addCloseBtn(li);
 
 		const wbo = Wb();
-		wbo.init(obj, tid, role);
+		wbo.init(obj, tcid, role);
 		wb.on('remove', wbo.destroy);
 		wb.data(wbo);
 	}
@@ -330,7 +331,6 @@ var DrawWbArea = function() {
 		const tabId = self.getWbTabId(obj.wbId);
 		_getWbTab(obj.wbId).remove();
 		$('#' + tabId).remove();
-		refreshTabs();
 		_actionActivateWb(getActive().data().id);
 	};
 	self.load = function(json) {
@@ -436,7 +436,6 @@ var DrawWbArea = function() {
 			$(this).remove();
 			$('#' + tabId).remove();
 		});
-		refreshTabs();
 	};
 	return self;
 };
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
index 07e7c75..bb82eca 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
@@ -1,9 +1,9 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") http://www.apache.org/licenses/LICENSE-2.0 */
 var Wb = function() {
 	const ACTIVE = 'active', BUMPER = 100, wb = {id: -1, name: ''}, canvases = []
-		, area = $('.room-block .wb-block .wb-area .tabs.ui-tabs'), bar = area.find('.wb-tabbar')
+		, area = $('.room-block .wb-block .wb-area .tabs'), bar = area.find('.wb-tabbar')
 		, extraProps = ['uid', 'fileId', 'fileType', 'count', 'slide', 'omType', '_src', 'formula'];
-	let a, t, z, s, f, mode, slide = 0, width = 0, height = 0
+	let c, t, z, s, f, mode, slide = 0, width = 0, height = 0
 			, zoom = 1., zoomMode = 'pageWidth', role = null, scrollTimeout = null;
 
 	function _getBtn(m) {
@@ -630,7 +630,7 @@ var Wb = function() {
 			clearTimeout(scrollTimeout);
 		}
 		scrollTimeout = setTimeout(function() {
-			const sc = a.find('.scroll-container')
+			const sc = wbEl.find('.scroll-container')
 				, canvases = sc.find('.canvas-container');
 			if (Math.round(sc.height() + sc[0].scrollTop) === sc[0].scrollHeight) {
 				if (slide !== canvases.length - 1) {
@@ -648,10 +648,10 @@ var Wb = function() {
 		}, 100);
 	}
 	function showCurrentSlide() {
-		a.find('.scroll-container .canvas-container').each(function(idx) {
+		wbEl.find('.scroll-container .canvas-container').each(function(idx) {
 			if (role === PRESENTER) {
 				$(this).show();
-				const cclist = a.find('.scroll-container .canvas-container');
+				const cclist = wbEl.find('.scroll-container .canvas-container');
 				if (cclist.length > slide) {
 					cclist[slide].scrollIntoView();
 				}
@@ -702,9 +702,9 @@ var Wb = function() {
 	}
 	function addCanvas() {
 		const sl = canvases.length
-			, cid = 'can-' + a.attr('id') + '-slide-' + sl
+			, cid = 'can-' + wb.id + '-slide-' + sl
 			, c = $('<canvas></canvas>').attr('id', cid);
-		a.find('.canvases').append(c);
+		wbEl.find('.canvases').append(c);
 		const canvas = new fabric.Canvas(c.attr('id'), {
 			preserveObjectStacking: true
 		});
@@ -777,11 +777,11 @@ var Wb = function() {
 			if (__validBtn(btn)) {
 				btn.data().deactivate();
 			}
-			a.find('.tools').remove();
-			a.find('.wb-tool-settings').remove();
-			a.find('.wb-zoom').remove();
+			wbEl.find('.tools').remove();
+			wbEl.find('.wb-tool-settings').remove();
+			wbEl.find('.wb-zoom').remove();
 			role = _role;
-			const sc = a.find('.scroll-container');
+			const sc = wbEl.find('.scroll-container');
 			z = OmUtil.tmpl('#wb-zoom')
 				.attr('style', 'position: absolute; top: 0px; ' + (Settings.isRtl ? 'right' : 'left') + ': 80px;');
 			__safeRemove(t);
@@ -789,7 +789,7 @@ var Wb = function() {
 			__safeRemove(f);
 			if (role === NONE) {
 				__destroySettings();
-				t = !!Room.getOptions().questions ? OmUtil.tmpl('#wb-tools-readonly') : a.find('invalid-wb-element');
+				t = !!Room.getOptions().questions ? OmUtil.tmpl('#wb-tools-readonly') : wbEl.find('invalid-wb-element');
 				sc.off('scroll', scrollHandler);
 			} else {
 				t = OmUtil.tmpl('#wb-tools');
@@ -797,13 +797,13 @@ var Wb = function() {
 					.attr('style', 'display: none; bottom: 100px; ' + (Settings.isRtl ? 'left' : 'right') + ': 100px;');
 				f = OmUtil.tmpl('#wb-formula')
 					.attr('style', 'display: none; bottom: 100px; ' + (Settings.isRtl ? 'left' : 'right') + ': 100px;');
-				a.append(s, f);
+				wbEl.append(s, f);
 				sc.on('scroll', scrollHandler);
 			}
 			t.attr('style', 'position: absolute; top: 20px; ' + (Settings.isRtl ? 'left' : 'right') + ': 20px;');
-			a.append(t).append(z);
+			wbEl.append(t).append(z);
 			showCurrentSlide();
-			t = a.find('.tools'), s = a.find('.wb-tool-settings');
+			t = wbEl.find('.tools'), s = wbEl.find('.wb-tool-settings');
 			wb.eachCanvas(function(canvas) {
 				setHandlers(canvas);
 				canvas.forEachObject(function(__o) {
@@ -815,14 +815,14 @@ var Wb = function() {
 			internalInit();
 		}
 	};
-	wb.init = function(wbo, tid, _role) {
+	wb.init = function(wbo, tcid, _role) {
 		wb.id = wbo.wbId;
 		wb.name = wbo.name;
 		width = wbo.width;
 		height = wbo.height;
 		zoom = wbo.zoom;
 		zoomMode = wbo.zoomMode;
-		a = $('#' + tid);
+		wbEl = $('#' + tcid);
 		addCanvas();
 		wb.setRole(_role);
 	};
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 724a6dc..8e34fa8 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"><i class="fas fa-info-circle m-1"></i><wicket:message key="1132"/></div>
+	<div class="rooms desc"><i class="fas fa-info-circle m-1 text-info"></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 072325e..e1e2721 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><i class="fas fa-info-circle m-1"></i><wicket:message key="1221" /></td>
+							<td><i class="fas fa-info-circle m-1 text-info"></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 8131d36..bd406b6 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
@@ -25,7 +25,7 @@
 		<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><span wicket:id="roomName">[room name]</span>&nbsp;<i wicket:id="info" class="fas fa-info-circle text-info info-tooltip"></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>
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 9ea63bf..f3c8216 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
@@ -108,7 +108,7 @@ public class RoomListPanel extends Panel {
 				}.add(AttributeModifier.append(ATTR_TITLE, new ResourceModel("lbl.refresh"))));
 			}
 		});
-		add(new TooltipBehavior(".info-text"));
+		add(new TooltipBehavior(".info-tooltip"));
 	}
 
 	public void update(IPartialPageRequestHandler handler, List<Room> rooms) {
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 b4cd629..1b1068f 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>
-		<i class="fas fa-info-circle m-1"></i><div wicket:id="desc" class="rooms desc"></div>
+		<i class="fas fa-info-circle m-1 text-info"></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/webapp/css/raw-wb.css b/openmeetings-web/src/main/webapp/css/raw-wb.css
index c98ae76..a3b0a69 100644
--- a/openmeetings-web/src/main/webapp/css/raw-wb.css
+++ b/openmeetings-web/src/main/webapp/css/raw-wb.css
@@ -30,19 +30,32 @@ html[dir="rtl"] .room-block .wb-block {
 	height: inherit;
 	background-position: center;
 }
-.room-block .wb-block .tabs.ui-tabs {
+.room-block .wb-block .tabs {
 	height: calc(100% - var(--buffer-size));
 }
+.room-block .wb-block .tabs .wb-tabbar li a {
+	position: relative;
+	padding-right: 25px;
+}
+.room-block .wb-block .tabs .wb-tabbar li a button {
+	width: 20px;
+	height: 20px;
+	padding: 0;
+	position: absolute;
+	top: 2px;
+	right: 2px;
+}
 .room-block .wb-block .tabs.ui-tabs, .room-block .wb-block .ui-tabs-panel {
 	padding: 0;
 	background-color:transparent;
 }
-.room-block .wb-block .ui-tabs-panel {
+.room-block .wb-block .tabs .wb-tab-content {
 	height: calc(100% - var(--room-wb-tabs-height));
-}
-.room-block .wb-block .ui-tabs-panel {
 	position: relative;
 }
+.room-block .wb-block .tabs .wb-tab-content .tab-pane {
+	height: 100%;
+}
 .room-block .wb-block .tools {
 	position: relative;
 	display: inline-block;
@@ -146,11 +159,11 @@ html[dir="rtl"] .room-block .wb-block {
 .room-block .wb-block .tools .om-icon.big.textbox {
 	background-image: url(images/textbox.png);
 }
-.room-block .wb-block .om-icon.big.next {
-	background-image: url(images/next.png);
+.room-block .wb-block .om-icon.big.next::before {
+	content: '\f054';
 }
-.room-block .wb-block .om-icon.big.prev {
-	background-image: url(images/prev.png);
+.room-block .wb-block .om-icon.big.prev::before {
+	content: '\f053';
 }
 .wb-tool-settings, .wb-formula {
 	position: absolute;
@@ -293,16 +306,11 @@ html[dir="rtl"] .room-block .wb-block {
 .wb-tabbar .next {
 	right: 2px;
 }
-.wb-tabbar li button {
-	width: 20px;
-	height: 20px;
-	padding: 0;
-}
-.wb-area .ui-tabs-panel .scroll-container {
+.room-block .wb-block .tabs .wb-tab-content .scroll-container {
 	overflow: auto;
 	height: 100%;
 }
-.wb-area .ui-tabs-panel .scroll-container .canvas-container {
+.room-block .wb-block .tabs .wb-tab-content .scroll-container .canvas-container {
 	margin-top: 5px;
 	margin-left: 5px;
 	border: 1px solid #888888;