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 2019/03/11 14:24:09 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2032] basic CSS simplification is done

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 6641ccd  [OPENMEETINGS-2032] basic CSS simplification is done
6641ccd is described below

commit 6641ccdbdbb463bf2a270a743d9c0f7dd9f5e573
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Mon Mar 11 21:23:54 2019 +0700

    [OPENMEETINGS-2032] basic CSS simplification is done
---
 openmeetings-web/pom.xml                           |   1 +
 .../openmeetings/web/admin/AdminBaseForm.java      |   5 -
 .../openmeetings/web/admin/AdminBasePanel.java     |  23 --
 .../org/apache/openmeetings/web/admin/admin.js     |  12 --
 .../web/admin/configurations/ConfigForm.java       |   1 -
 .../web/admin/configurations/ConfigsPanel.html     |  33 ++-
 .../web/admin/configurations/ConfigsPanel.java     |   1 -
 .../web/admin/connection/ConnectionsPanel.html     |  51 +++--
 .../openmeetings/web/admin/email/EmailPanel.html   |  35 ++-
 .../openmeetings/web/admin/groups/GroupForm.java   |   3 +-
 .../web/admin/groups/GroupUsersPanel.html          |  42 ++--
 .../openmeetings/web/admin/groups/GroupsPanel.html |  33 ++-
 .../openmeetings/web/admin/groups/GroupsPanel.java |   1 -
 .../openmeetings/web/admin/labels/LabelsForm.java  |   2 +
 .../openmeetings/web/admin/labels/LangPanel.html   |  35 ++-
 .../openmeetings/web/admin/labels/LangPanel.java   |  12 ++
 .../openmeetings/web/admin/ldaps/LdapForm.java     |   4 -
 .../openmeetings/web/admin/ldaps/LdapsPanel.html   |  31 ++-
 .../openmeetings/web/admin/ldaps/LdapsPanel.java   |   1 -
 .../openmeetings/web/admin/oauth/OAuthForm.java    |   4 -
 .../openmeetings/web/admin/oauth/OAuthPanel.html   |  65 +++---
 .../openmeetings/web/admin/oauth/OAuthPanel.java   |   1 -
 .../openmeetings/web/admin/rooms/RoomForm.java     |   7 +-
 .../openmeetings/web/admin/rooms/RoomsPanel.html   | 149 ++++++-------
 .../openmeetings/web/admin/rooms/RoomsPanel.java   |   1 -
 .../openmeetings/web/admin/users/UserForm.html     |   3 +-
 .../openmeetings/web/admin/users/UserForm.java     |   2 -
 .../openmeetings/web/admin/users/UsersPanel.html   |  62 +++---
 .../openmeetings/web/common/FormActionsPanel.html  |   2 +-
 .../openmeetings/web/common/HeaderPanel.html       |   4 +-
 .../apache/openmeetings/web/common/MainPanel.html  |   2 +-
 .../openmeetings/web/common/OmPagingNavigator.java |   5 +
 .../apache/openmeetings/web/pages/BasePage.html    |   2 +-
 .../apache/openmeetings/web/pages/MainPage.html    |   2 +-
 .../org/apache/openmeetings/web/room/raw-room.js   |   2 +
 .../{ProfilePanel.html => EditProfileForm.html}    |  34 ++-
 .../{ProfileForm.java => EditProfileForm.java}     |  13 +-
 .../{ProfilePanel.html => EditProfilePanel.html}   |   5 +-
 .../{ProfilePanel.java => EditProfilePanel.java}   |   9 +-
 .../web/user/profile/InvitationsPanel.html         |  34 ++-
 .../web/user/profile/MessagesContactsPanel.html    | 187 ++++++++--------
 .../web/user/profile/MessagesContactsPanel.java    |   4 -
 .../openmeetings/web/user/profile/ProfileForm.html |  54 -----
 .../web/user/profile/SettingsPanel.html            |   2 +-
 .../web/user/profile/SettingsPanel.java            |  56 +++--
 .../web/user/profile/UserProfilePanel.html         | 109 +++++-----
 .../web/user/profile/UserProfilePanel.java         |  26 ++-
 .../web/user/profile/UserSearchPanel.html          |  84 ++++----
 .../web/user/profile/UserSearchPanel.java          |   5 +-
 .../openmeetings/web/user/rooms/RoomsPanel.html    |   2 +-
 openmeetings-web/src/main/webapp/css/raw-admin.css | 237 ++++-----------------
 .../src/main/webapp/css/raw-general-rtl.css        |   6 +-
 .../src/main/webapp/css/raw-general.css            | 150 +++++++++----
 .../css/raw-variables.css}                         |  36 ++--
 54 files changed, 770 insertions(+), 922 deletions(-)

diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index e7ab3ab..93a38c8 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -95,6 +95,7 @@
 						<configuration>
 							<charset>UTF-8</charset>
 							<cssSourceFiles>
+								<cssSourceFile>raw-variables.css</cssSourceFile>
 								<cssSourceFile>raw-nettest.css</cssSourceFile>
 								<cssSourceFile>raw-general.css</cssSourceFile>
 								<cssSourceFile>raw-activities.css</cssSourceFile>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
index 25478db..03fb0fc 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
@@ -20,7 +20,6 @@ package org.apache.openmeetings.web.admin;
 
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.util.time.Duration;
@@ -173,8 +172,4 @@ public abstract class AdminBaseForm<T> extends Form<T> {
 	protected void onRestoreSubmit(AjaxRequestTarget target, Form<?> form) {
 		//no-op
 	}
-
-	public static void reinitJs(IPartialPageRequestHandler handler) {
-		AdminBasePanel.reinitJs(handler);
-	}
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBasePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBasePanel.java
index 5fb7aa8..4a16df1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBasePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBasePanel.java
@@ -20,34 +20,15 @@ package org.apache.openmeetings.web.admin;
 
 import org.apache.openmeetings.web.common.BasePanel;
 import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.markup.head.PriorityHeaderItem;
-import org.apache.wicket.request.resource.JavaScriptResourceReference;
 
 @AuthorizeInstantiation("Admin")
 public abstract class AdminBasePanel extends BasePanel {
 	private static final long serialVersionUID = 1L;
-	private static final JavaScriptResourceReference ADMIN_SCRIPT = new JavaScriptResourceReference(AdminBasePanel.class, "admin.js");
 
 	public AdminBasePanel(String id) {
 		super(id);
 	}
 
-	@Override
-	public void renderHead(IHeaderResponse response) {
-		super.renderHead(response);
-		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(ADMIN_SCRIPT)));
-	}
-
-	@Override
-	public BasePanel onMenuPanelLoad(IPartialPageRequestHandler handler) {
-		super.onMenuPanelLoad(handler);
-		reinitJs(handler);
-		return this;
-	}
-
 	protected StringBuilder getRowClass(Long id, Long selectedId) {
 		StringBuilder sb = new StringBuilder(ROW_CLASS);
 		if (id != null && id.equals(selectedId)) {
@@ -55,8 +36,4 @@ public abstract class AdminBasePanel extends BasePanel {
 		}
 		return sb;
 	}
-
-	public static void reinitJs(IPartialPageRequestHandler handler) {
-		handler.appendJavaScript("adminPanelInit();");
-	}
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/admin.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/admin.js
deleted file mode 100644
index a35cd2c..0000000
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/admin.js
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Licensed under the Apache License, Version 2.0 (the "License") http://www.apache.org/licenses/LICENSE-2.0 */
-function adminPanelInit() {
-	if (typeof(extAdminPanelInit) === 'function') {
-		extAdminPanelInit();
-	}
-	const f = $('#adminForm'), t = $('#adminTable')
-		, h = window.innerHeight - 5;
-	if (f.length === 1 && t.length === 1) {
-		f.height(h - f.position().top);
-		t.height(h - t.position().top);
-	}
-}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
index acf050a..761ae59 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
@@ -83,7 +83,6 @@ public class ConfigForm extends AdminBaseForm<Configuration> {
 
 	private void refresh(AjaxRequestTarget target) {
 		target.add(this);
-		reinitJs(target);
 	}
 
 	private void update(AjaxRequestTarget target) {
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 420d7f5..d607edd 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
@@ -21,31 +21,27 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:extend>
 	<div class="adminPanelColumnTable">
-		<span wicket:id="navigator">[dataview navigator]</span>
-		<table class="adminListTable">
+		<div class="adminNav" wicket:id="navigator">[dataview navigator]</div>
+		<table class="list-table">
 			<thead>
-				<tr>
-					<th class="three_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
-					<th class="three_column_layout_column2 ui-widget-header"><span wicket:id="orderByKey"></span><wicket:message key="265" /></th>
-					<th class="three_column_layout_column3 ui-widget-header"><span wicket:id="orderByValue"></span><wicket:message key="271" /></th>
+				<tr class="ui-widget-header">
+					<th class="col-1"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
+					<th class="col-4"><span wicket:id="orderByKey"></span><wicket:message key="265" /></th>
+					<th class="col-7"><span wicket:id="orderByValue"></span><wicket:message key="271" /></th>
 				</tr>
 			</thead>
+			<tbody wicket:id="listContainer" >
+				<tr wicket:id="configList">
+					<td class="col-1"><div class="col-wrapper"><span wicket:id="id"></span></div></td>
+					<td class="col-4"><div class="col-wrapper"><span wicket:id="key"></span></div></td>
+					<td class="col-7"><div class="col-wrapper"><span wicket:id="value"></span></div></td>
+				</tr>
+			</tbody>
 		</table>
-		<div class="tableWrapper" id="adminTable">
-			<table class="adminListTable">
-				<tbody wicket:id="listContainer" >
-					<tr wicket:id="configList">
-						<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="id"></span></div></td>
-						<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="key"></span></div></td>
-						<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="value"></span></div></td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
 	</div>
 	<div class="adminPanelColumnForm">
 		<form wicket:id="form" class="adminForm">
-			<div wicket:id="buttons"></div>
+			<div class="actions" wicket:id="buttons"></div>
 			<div class="scrollcontent" id="adminForm">
 				<fieldset class="ui-widget-content">
 					<legend class="ui-widget-header"><wicket:message key="266" /></legend>
@@ -88,6 +84,7 @@
 						<label wicket:for="comment"><wicket:message key="196" /></label><textarea wicket:id="comment"/>
 					</div>
 				</fieldset>
+				<div class="bottom-bumper"></div>
 			</div>
 		</form>
 	</div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
index f5ca110..359f042 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
@@ -70,7 +70,6 @@ public class ConfigsPanel extends AdminBasePanel {
 						form.setNewVisible(false);
 						form.setModelObject(c);
 						target.add(form, listContainer);
-						reinitJs(target);
 					}
 				});
 				item.add(AttributeModifier.replace(ATTR_CLASS, getRowClass(c.getId(), form.getModelObject().getId())));
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 e8e1860..8899dec 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
@@ -21,38 +21,37 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:extend>
 	<div class="adminPanelColumnTable">
-		<span wicket:id="navigator">[dataview navigator]</span>
-		<table class="adminListTable">
+		<div class="adminNav" wicket:id="navigator">[dataview navigator]</div>
+		<table class="list-table">
 			<thead>
-				<tr>
-					<th class="ui-widget-header one_sixth"><wicket:message key="45" /></th>
-					<th class="ui-widget-header one_sixth"><wicket:message key="108" /></th>
-					<th class="ui-widget-header one_sixth"><wicket:message key="601" /></th>
-					<th class="ui-widget-header one_sixth"><wicket:message key="602" /></th>
-					<th class="ui-widget-header one_sixth" style="padding: 0 16px;"><wicket:message key="603" /></th>
-					<th class="ui-widget-header one_sixth"><wicket:message key="1500" /></th>
+				<tr class="ui-widget-header">
+					<th class="col-2"><wicket:message key="45" /></th>
+					<th class="col-2"><wicket:message key="108" /></th>
+					<th class="col-2"><wicket:message key="601" /></th>
+					<th class="col-2"><wicket:message key="602" /></th>
+					<th class="col-2" style="padding: 0 16px;"><wicket:message key="603" /></th>
+					<th class="col-2"><wicket:message key="1500" /></th>
 				</tr>
 			</thead>
+			<tbody wicket:id="container">
+				<tr wicket:id="clientList">
+					<td class="col-2" wicket:id="type"></td>
+					<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" wicket:id="server"></td>
+				</tr>
+			</tbody>
 		</table>
-		<div class="tableWrapper" id="adminTable">
-			<table class="adminListTable">
-				<tbody wicket:id="container">
-					<tr wicket:id="clientList">
-						<td class="one_sixth" wicket:id="type"></td>
-						<td class="one_sixth" wicket:id="login"></td>
-						<td class="one_sixth" wicket:id="since"></td>
-						<td class="one_sixth" wicket:id="scope"></td>
-						<td class="one_sixth"><a wicket:id="kick"><wicket:message key="603" /></a></td>
-						<td class="one_sixth" wicket:id="server"></td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
 	</div>
 	<div class="adminPanelColumnForm" id="adminForm">
-		<table wicket:id="details" style="width: 450px; overflow-y: auto; padding-bottom: 30px;">
-			<tr wicket:id="line"><td wicket:id="name"></td><td wicket:id="value"></td></tr>
-		</table>
+		<div class="scrollcontent">
+			<table wicket:id="details" style="width: 100%;">
+				<tr wicket:id="line"><td wicket:id="name"></td><td wicket:id="value"></td></tr>
+			</table>
+			<div class="bottom-bumper"></div>
+		</div>
 	</div>
 </wicket:extend>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
index 6fe4935..2f365a9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/email/EmailPanel.html
@@ -21,31 +21,27 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:extend>
 	<div class="adminPanelColumnTable">
-		<span wicket:id="navigator">[dataview navigator]</span>
-		<table class="adminListTable">
+		<div class="adminNav" wicket:id="navigator">[dataview navigator]</div>
+		<table class="list-table">
 			<thead>
-				<tr>
-					<th class="three_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
-					<th class="three_column_layout_column2 ui-widget-header"><span wicket:id="orderByStatus"></span><wicket:message key="996" /></th>
-					<th class="three_column_layout_column3 ui-widget-header"><span wicket:id="orderBySubject"></span><wicket:message key="215" /></th>
+				<tr class="ui-widget-header">
+					<th class="col-1"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
+					<th class="col-2"><span wicket:id="orderByStatus"></span><wicket:message key="996" /></th>
+					<th class="col-9"><span wicket:id="orderBySubject"></span><wicket:message key="215" /></th>
 				</tr>
 			</thead>
+			<tbody wicket:id="list">
+				<tr wicket:id="email">
+					<td class="col-1"><div class="col-wrapper"><span wicket:id="id"></span></div></td>
+					<td class="col-2"><div class="col-wrapper"><span wicket:id="status"></span></div></td>
+					<td class="col-9"><div class="col-wrapper"><span wicket:id="subject"></span></div></td>
+				</tr>
+			</tbody>
 		</table>
-		<div class="tableWrapper" id="adminTable">
-			<table class="adminListTable">
-				<tbody wicket:id="list">
-					<tr wicket:id="email">
-						<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="id"></span></div></td>
-						<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="status"></span></div></td>
-						<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="subject"></span></div></td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
 	</div>
 	<div class="adminPanelColumnForm">
 		<form wicket:id="form" class="adminForm">
-			<div class="formSaveBar ui-widget-header">
+			<div class="actions ui-widget-header">
 				<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="ajax-cancel-button" wicket:message="title:157">
 					<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
 				</div>
@@ -63,9 +59,10 @@
 						<label><wicket:message key="admin.email.errorCount" /></label><span class="input" wicket:id="errorCount"></span>
 						<label><wicket:message key="admin.email.lastError" /></label><span style="white-space: pre;" class="input" wicket:id="lastError"></span>
 					</div>
+					<button wicket:id="reset" style="float: right; margin-right: 20px;"><wicket:message key="admin.email.reset.status"/></button>
 				</fieldset>
+				<div class="bottom-bumper"></div>
 			</div>
-			<button wicket:id="reset" style="float: right; margin-right: 20px;"><wicket:message key="admin.email.reset.status"/></button>
 		</form>
 	</div>
 </wicket:extend>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
index 88094d3..9ff6524 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
@@ -145,7 +145,7 @@ public class GroupForm extends AdminBaseForm<Group> {
 	}
 
 	static String formatUser(User choice) {
-		return String.format("%s [%s %s]", choice.getLogin(), choice.getFirstname(), choice.getLastname());
+		return String.format("%s [%s]", choice.getLogin(), choice.getDisplayName());
 	}
 
 	@Override
@@ -195,7 +195,6 @@ public class GroupForm extends AdminBaseForm<Group> {
 		reminderDays.setEnabled(getModelObject().isLimited());
 		logo.update();
 		target.add(this, groupList);
-		reinitJs(target);
 	}
 
 	private long getGroupId() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
index 0f0309e..c414402 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.html
@@ -20,29 +20,27 @@
 <html xmlns:wicket="http://wicket.apache.org">
 	<wicket:panel>
 		<div class="usergroupspanel">
-			<span wicket:id="navigator">[dataview navigator]</span>
-			<table class="adminListTable" style="min-width: 440px; max-width: 440px" >
-				<tr>
-					<th class="ui-widget-header" style="width: 34px; max-width: 34px; overflow: hidden;" wicket:message="title:98"><wicket:message key="98" /></th>
-					<th class="ui-widget-header" style="width: 360px"><wicket:message key="177" /></th>
-					<th class="ui-widget-header" style="width: 34px"><wicket:message key="275" /></th>
-				</tr>
+			<div class="adminNav" wicket:id="navigator">[dataview navigator]</div>
+			<table class="list-table small">
+				<thead>
+					<tr class="ui-widget-header">
+						<th class="col-1" wicket:message="title:98"><wicket:message key="98" /></th>
+						<th class="col-10" ><wicket:message key="177" /></th>
+						<th class="col-1"><wicket:message key="275" /></th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr wicket:id="userList" class="ui-widget-content">
+						<td class="col-1"><input type="checkbox" wicket:id="isModerator"/></td>
+						<td class="col-10"><div class="col-wrapper"><span wicket:id="label"></span></div></td>
+						<td class="col-1">
+							<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="deleteUserBtn" wicket:message="title:274">
+								<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
+							</div>
+						</td>
+					</tr>
+				</tbody>
 			</table>
-			<div class="tableWrapper" style="width: 460px; height: 250px;">
-				<table class="adminListTable" style="min-width: 440px; max-width: 440px">
-					<tbody>
-						<tr wicket:id="userList" class="ui-widget-content">
-							<td style="width: 34px"><input type="checkbox" wicket:id="isModerator"/></td>
-							<td style="width: 360px"><div style="width: 360px"><span wicket:id="label"></span></div></td>
-							<td style="width: 34px">
-								<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="deleteUserBtn" wicket:message="title:274">
-									<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
-								</div>
-							</td>
-						</tr>
-					</tbody>
-				</table>
-			</div>
 		</div>
 	</wicket:panel>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
index 95b1834..6dfb6d4 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
@@ -21,27 +21,25 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:extend>
 	<div class="adminPanelColumnTable">
-		<span wicket:id="navigator">[dataview navigator]</span>
-		<table class="adminListTable">
-			<tr>
-				<th class="two_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
-				<th class="two_column_layout_column2 ui-widget-header"><span wicket:id="orderByName"></span><wicket:message key="165" /></th>
-			</tr>
+		<div class="adminNav" wicket:id="navigator">[dataview navigator]</div>
+		<table class="list-table">
+			<thead>
+				<tr class="ui-widget-header">
+					<th class="col-1"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
+					<th class="col-11"><span wicket:id="orderByName"></span><wicket:message key="165" /></th>
+				</tr>
+			</thead>
+			<tbody wicket:id="listContainer">
+				<tr wicket:id="groupList">
+					<td class="col-1"><div class="col-wrapper"><span wicket:id="id"></span></div></td>
+					<td class="col-11"><div class="col-wrapper"><span wicket:id="name"></span></div></td>
+				</tr>
+			</tbody>
 		</table>
-		<div class="tableWrapper" id="adminTable">
-			<table class="adminListTable">
-				<tbody wicket:id="listContainer">
-					<tr wicket:id="groupList">
-						<td class="two_column_layout_column1"><div class="two_column_layout_divcolumn1"><span wicket:id="id"></span></div></td>
-						<td class="two_column_layout_column2"><div class="two_column_layout_divcolumn2"><span wicket:id="name"></span></div></td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
 	</div>
 	<div class="adminPanelColumnForm">
 		<form wicket:id="form" class="adminForm">
-			<div wicket:id="buttons"></div>
+			<div class="actions" wicket:id="buttons"></div>
 			<div class="scrollcontent" id="adminForm">
 				<fieldset class="ui-widget-content">
 					<legend class="ui-widget-header"><wicket:message key="161" /></legend>
@@ -82,6 +80,7 @@
 						<label wicket:for="reminderDays"><wicket:message key="admin.group.form.reminderDays" /></label><input type="number" wicket:id="reminderDays" /><wicket:message key="admin.group.form.days"/>
 					</div>
 				</fieldset>
+				<div class="bottom-bumper"></div>
 			</div>
 		</form>
 	</div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
index e7b3067..a9ca9d3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
@@ -75,7 +75,6 @@ public class GroupsPanel extends AdminBasePanel {
 						form.setModelObject(g);
 						form.updateView(target);
 						target.add(listContainer);
-						reinitJs(target);
 					}
 				});
 				item.add(AttributeModifier.append(ATTR_CLASS, getRowClass(g.getId(), form.getModelObject().getId())));
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java
index 00db2e6..5e84da9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.web.admin.labels;
 
+import static org.apache.openmeetings.web.admin.labels.LangPanel.reinitJs;
+
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.db.entity.label.StringLabel;
 import org.apache.openmeetings.web.admin.AdminBaseForm;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
index ec40691..f95beac 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
@@ -21,7 +21,7 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:head>
 	<script type="text/javascript">
-		function extAdminPanelInit() {
+		function langPanelInit() {
 			$('#addLanguage').dialog({
 				closeOnEscape: true
 				, autoOpen: false
@@ -32,8 +32,8 @@
 </wicket:head>
 <wicket:extend>
 	<div wicket:id="feedback"></div>
-	<div class="adminPanelColumnTable">
-		<div>
+	<div class="adminPanelColumnTable label">
+		<div class="lblNav">
 			<div class="ui-button ui-widget ui-corner-all ui-button-icon-only" style="margin-top: -1.5em;" wicket:id="addLangBtn" wicket:message="title:362">
 				<span class="ui-button-icon ui-icon ui-icon-plusthick"></span>&nbsp;
 			</div>
@@ -59,29 +59,25 @@
 				</table>
 			</form>
 		</div>
-		<span wicket:id="navigator">[dataview navigator]</span>
-		<table class="adminListTable">
+		<div class="adminNav" wicket:id="navigator">[dataview navigator]</div>
+		<table class="list-table">
 			<thead>
-				<tr>
-					<th class="two_column_layout_column1 ui-widget-header"><span wicket:id="orderByName"></span><wicket:message key="165" /></th>
-					<th class="two_column_layout_column2 ui-widget-header"><span wicket:id="orderByValue"></span><wicket:message key="271" /></th>
+				<tr class="ui-widget-header">
+					<th class="col-6"><span wicket:id="orderByName"></span><wicket:message key="165" /></th>
+					<th class="col-6"><span wicket:id="orderByValue"></span><wicket:message key="271" /></th>
 				</tr>
 			</thead>
-		</table>
-		<div class="tableWrapper" id="adminTable">
-			<table class="adminListTable">
-				<tbody wicket:id="listContainer" >
+			<tbody wicket:id="listContainer" >
 				<tr wicket:id="langList">
-						<td class="two_column_layout_column1"><div class="three_column_layout_divcolumn2"><span wicket:id="key"></span></div></td>
-						<td class="two_column_layout_column2"><div class="three_column_layout_divcolumn3"><span wicket:id="value"></span></div></td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
+					<td class="col-6"><div class="col-wrapper"><span wicket:id="key"></span></div></td>
+					<td class="col-6"><div class="col-wrapper"><span wicket:id="value"></span></div></td>
+				</tr>
+			</tbody>
+		</table>
 	</div>
 	<div class="adminPanelColumnForm">
 		<form wicket:id="form" class="adminForm">
-			<div wicket:id="buttons"></div>
+			<div class="actions" wicket:id="buttons"></div>
 			<div class="scrollcontent" id="adminForm">
 				<fieldset class="ui-widget-content">
 					<legend class="ui-widget-header"><wicket:message key="353" /></legend>
@@ -92,6 +88,7 @@
 						<label wicket:for="value"><wicket:message key="271" /></label><textarea wicket:id="value"></textarea>
 					</div>
 				</fieldset>
+				<div class="bottom-bumper"></div>
 			</div>
 		</form>
 	</div>
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 153f9f6..9f2c8f9 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
@@ -35,6 +35,7 @@ import org.apache.openmeetings.db.entity.label.StringLabel;
 import org.apache.openmeetings.web.admin.AdminBasePanel;
 import org.apache.openmeetings.web.admin.SearchableDataView;
 import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.BasePanel;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
 import org.apache.openmeetings.web.data.DataViewContainer;
@@ -46,6 +47,7 @@ import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.extensions.ajax.AjaxDownloadBehavior;
 import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
 import org.apache.wicket.markup.html.WebMarkupContainer;
@@ -256,6 +258,16 @@ public class LangPanel extends AdminBasePanel {
 		super.onInitialize();
 	}
 
+	@Override
+	public BasePanel onMenuPanelLoad(IPartialPageRequestHandler handler) {
+		reinitJs(handler);
+		return this;
+	}
+
+	static void reinitJs(IPartialPageRequestHandler handler) {
+		handler.appendJavaScript("langPanelInit()");
+	}
+
 	public LangForm getLangForm() {
 		return langForm;
 	}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
index b90d156..920a28c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
@@ -74,14 +74,12 @@ public class LdapForm extends AdminBaseForm<LdapConfig> {
 		setModelObject(ldapDao.update(getModelObject(), WebSession.getUserId()));
 		setNewVisible(false);
 		target.add(this, listContainer);
-		reinitJs(target);
 	}
 
 	@Override
 	protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
 		this.setModelObject(new LdapConfig());
 		target.add(this);
-		reinitJs(target);
 	}
 
 	@Override
@@ -94,7 +92,6 @@ public class LdapForm extends AdminBaseForm<LdapConfig> {
 		}
 		this.setModelObject(ldapConfig);
 		target.add(this);
-		reinitJs(target);
 	}
 
 	@Override
@@ -103,6 +100,5 @@ public class LdapForm extends AdminBaseForm<LdapConfig> {
 		this.setModelObject(new LdapConfig());
 		target.add(listContainer);
 		target.add(this);
-		reinitJs(target);
 	}
 }
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 3c84ecb..b494b06 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
@@ -21,27 +21,23 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:extend>
 	<div class="adminPanelColumnTable">
-		<span wicket:id="navigator">[dataview navigator]</span>
-		<table class="adminListTable">
+		<div class="adminNav" wicket:id="navigator">[dataview navigator]</div>
+		<table class="list-table">
 			<thead>
-				<tr>
-					<th class="three_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
-					<th class="three_column_layout_column2 ui-widget-header"><span wicket:id="orderByName"></span><wicket:message key="165" /></th>
-					<th class="three_column_layout_column3 ui-widget-header"><span wicket:id="orderByFile"></span><wicket:message key="1106" /></th>
+				<tr class="ui-widget-header">
+					<th class="col-1"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
+					<th class="col-5"><span wicket:id="orderByName"></span><wicket:message key="165" /></th>
+					<th class="col-6"><span wicket:id="orderByFile"></span><wicket:message key="1106" /></th>
 				</tr>
 			</thead>
+			<tbody wicket:id="listContainer">
+				<tr wicket:id="ldapList">
+					<td class="col-1"><div class="col-wrapper"><span wicket:id="id"></span></div></td>
+					<td class="col-5"><div class="col-wrapper"><span wicket:id="name"></span></div></td>
+					<td class="col-6"><div class="col-wrapper"><span wicket:id="configFileName"></span></div></td>
+				</tr>
+			</tbody>
 		</table>
-		<div class="tableWrapper" id="adminTable">
-			<table class="adminListTable">
-				<tbody wicket:id="listContainer">
-					<tr wicket:id="ldapList">
-						<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="id"></span></div></td>
-						<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="name"></span></div></td>
-						<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="configFileName"></span></div></td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
 	</div>
 	<div class="adminPanelColumnForm">
 		<form wicket:id="form" class="adminForm">
@@ -84,6 +80,7 @@
 						<label wicket:for="comment"><wicket:message key="196" /></label><textarea wicket:id="comment"/>
 					</div>
 				</fieldset>
+				<div class="bottom-bumper"></div>
 			</div>
 		</form>
 	</div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
index 29f836a..2140e9f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
@@ -70,7 +70,6 @@ public class LdapsPanel extends AdminBasePanel {
 						form.setModelObject(lc);
 						form.setNewVisible(false);
 						target.add(form, listContainer);
-						reinitJs(target);
 					}
 				});
 				item.add(AttributeModifier.replace(ATTR_CLASS, getRowClass(lc.getId(), form.getModelObject().getId())));
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 a204079..96c72f5 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
@@ -155,14 +155,12 @@ public class OAuthForm extends AdminBaseForm<OAuthServer> {
 		setNewVisible(false);
 		target.add(this);
 		target.add(listContainer);
-		reinitJs(target);
 	}
 
 	@Override
 	protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
 		this.setModelObject(new OAuthServer());
 		target.add(this);
-		reinitJs(target);
 	}
 
 	@Override
@@ -175,7 +173,6 @@ public class OAuthForm extends AdminBaseForm<OAuthServer> {
 		}
 		this.setModelObject(server);
 		target.add(this);
-		reinitJs(target);
 	}
 
 	@Override
@@ -184,6 +181,5 @@ public class OAuthForm extends AdminBaseForm<OAuthServer> {
 		this.setModelObject(new OAuthServer());
 		target.add(listContainer);
 		target.add(this);
-		reinitJs(target);
 	}
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html
index 756926e..88c15fc 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.html
@@ -21,29 +21,25 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:extend>
 	<div class="adminPanelColumnTable">
-		<span wicket:id="navigator">[dataview navigator]</span>
-		<table class="adminListTable">
+		<div class="adminNav" wicket:id="navigator">[dataview navigator]</div>
+		<table class="list-table">
 			<thead>
-				<tr>
-					<th class="two_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
-					<th class="two_column_layout_column2 ui-widget-header"><span wicket:id="orderByName"></span><wicket:message key="165" /></th>
+				<tr class="ui-widget-header">
+					<th class="col-1"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
+					<th class="col-11"><span wicket:id="orderByName"></span><wicket:message key="165" /></th>
 				</tr>
 			</thead>
+			<tbody wicket:id="listContainer">
+				<tr wicket:id="oauthServersList">
+					<td class="col-1"><div class="col-wrapper"><span wicket:id="id"></span></div></td>
+					<td class="col-11"><div class="col-wrapper"><span wicket:id="name"></span></div></td>
+				</tr>
+			</tbody>
 		</table>
-		<div class="tableWrapper" id="adminTable">
-			<table class="adminListTable">
-				<tbody wicket:id="listContainer">
-					<tr wicket:id="oauthServersList">
-						<td class="two_column_layout_column1"><div class="two_column_layout_divcolumn1"><span wicket:id="id"></span></div></td>
-						<td class="two_column_layout_column2"><div class="two_column_layout_divcolumn2"><span wicket:id="name"></span></div></td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
 	</div>
 	<div class="adminPanelColumnForm">
 		<form wicket:id="form" class="adminForm">
-			<div wicket:id="buttons"></div>
+			<div class="actions" wicket:id="buttons"></div>
 			<div class="scrollcontent" id="adminForm">
 				<fieldset class="ui-widget-content">
 					<legend class="ui-widget-header"><wicket:message key="1581" /></legend>
@@ -97,32 +93,29 @@
 							</div>
 							<button type="button" wicket:id="addMapping"><wicket:message key="1261"/></button>
 						</form>
-						<table class="adminListTable">
+						<table class="list-table small">
 							<thead>
-								<tr>
-									<th class="ui-widget-header" style="width: 380px"><wicket:message key="admin.oauth.attr.om" /></th>
-									<th class="ui-widget-header" style="width: 80px"><wicket:message key="admin.oauth.attr.oauth" /></th>
-									<th class="ui-widget-header" style="width: 50px"><wicket:message key=275 /></th>
+								<tr class="ui-widget-header">
+									<th class="col-7"><wicket:message key="admin.oauth.attr.om" /></th>
+									<th class="col-4"><wicket:message key="admin.oauth.attr.oauth" /></th>
+									<th class="col-1"><wicket:message key=275 /></th>
 								</tr>
 							</thead>
+							<tbody wicket:id="attrsContainer">
+								<tr wicket:id="mapping">
+									<td class="col-7"><div class="col-wrapper"><span wicket:id="key"></span></div></td>
+									<td class="col-4"><div class="col-wrapper"><span wicket:id="value"></span></div></td>
+									<td class="col-1">
+										<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="delete" wicket:message="title:80">
+											<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
+										</div>
+									</td>
+								</tr>
+							</tbody>
 						</table>
-						<div class="tableWrapperSmall" id="adminTableSmall">
-							<table class="adminListTable">
-								<tbody wicket:id="attrsContainer">
-									<tr wicket:id="mapping">
-										<td style="width: 380px"><div class="three_column_layout_divcolumn1" style="width: auto"><span wicket:id="key"></span></div></td>
-										<td style="width: 80px"><span wicket:id="value"></span></td>
-										<td style="width: 50px">
-											<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="delete" wicket:message="title:80">
-												<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
-											</div>
-										</td>
-									</tr>
-								</tbody>
-							</table>
-						</div>
 					</fieldset>
 				</fieldset>
+				<div class="bottom-bumper"></div>
 			</div>
 		</form>
 	</div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java
index 43c1b99..6116fdb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java
@@ -64,7 +64,6 @@ public class OAuthPanel extends AdminBasePanel {
 						form.setModelObject(server);
 						form.setNewVisible(false);
 						target.add(form, listContainer);
-						reinitJs(target);
 					}
 				});
 				item.add(AttributeModifier.replace(ATTR_CLASS, getRowClass(server.getId(), form.getModelObject().getId())));
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 505cfae..706a20a 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
@@ -261,7 +261,7 @@ public class RoomForm extends AdminBaseForm<Room> {
 			@Override
 			public String getDisplayValue(User choice) {
 				Address a = choice.getAddress();
-				return String.format("\"%s %s\" <%s>", choice.getFirstname(), choice.getLastname(), a == null ? "" : a.getEmail());
+				return String.format("\"%s\" <%s>", choice.getDisplayName(), a == null ? "" : a.getEmail());
 			}
 		});
 		moderatorChoice.getSettings().setCloseOnSelect(true);
@@ -300,12 +300,12 @@ public class RoomForm extends AdminBaseForm<Room> {
 			@Override
 			protected void populateItem(final ListItem<RoomModerator> item) {
 				RoomModerator moderator = item.getModelObject();
-				Label name = new Label("uName", moderator.getUser().getFirstname() + " " + moderator.getUser().getLastname());
+				Label name = new Label("uName", moderator.getUser().getDisplayName());
 				if (moderator.getId() == null) {
 					name.add(AttributeModifier.append(ATTR_CLASS, "newItem"));
 				}
 				item.add(new CheckBox("superModerator", new PropertyModel<Boolean>(moderator, "superModerator")))
-					.add(new Label("userId", "" + moderator.getUser().getId()))
+					.add(new Label("userId", String.valueOf(moderator.getUser().getId())))
 					.add(name)
 					.add(new Label("email", moderator.getUser().getAddress().getEmail()))
 					.add(new ConfirmableAjaxBorder("delete", getString("80"), getString("833")) {
@@ -486,7 +486,6 @@ public class RoomForm extends AdminBaseForm<Room> {
 		target.add(roomList);
 		target.add(pin.setEnabled(getModelObject().isSipEnabled()));
 		updateClients(target);
-		reinitJs(target);
 	}
 
 	@Override
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 0414fe7..107927b 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
@@ -21,31 +21,27 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:extend>
 	<div class="adminPanelColumnTable rooms">
-		<span wicket:id="navigator">[dataview navigator]</span>
-		<table class="adminListTable">
+		<div class="adminNav" wicket:id="navigator">[dataview navigator]</div>
+		<table class="list-table">
 			<thead>
-				<tr>
-					<th class="three_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
-					<th class="three_column_layout_column2 ui-widget-header"><span wicket:id="orderByName"></span><wicket:message key="165" /></th>
-					<th class="three_column_layout_column3 ui-widget-header"><span wicket:id="orderByPublic"></span><wicket:message key="190" /></th>
+				<tr class="ui-widget-header">
+					<th class="col-1"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
+					<th class="col-9"><span wicket:id="orderByName"></span><wicket:message key="165" /></th>
+					<th class="col-2"><span wicket:id="orderByPublic"></span><wicket:message key="190" /></th>
 				</tr>
 			</thead>
+			<tbody wicket:id="listContainer">
+				<tr wicket:id="roomList">
+					<td class="col-1"><div class="col-wrapper"><span wicket:id="id"></span></div></td>
+					<td class="col-9"><div class="col-wrapper"><span wicket:id="name"></span></div></td>
+					<td class="col-2"><div class="col-wrapper"><span wicket:id="ispublic"></span></div></td>
+				</tr>
+			</tbody>
 		</table>
-		<div class="tableWrapper" id="adminTable">
-			<table class="adminListTable">
-				<tbody wicket:id="listContainer">
-					<tr wicket:id="roomList">
-						<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="id"></span></div></td>
-						<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="name"></span></div></td>
-						<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="ispublic"></span></div></td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
 	</div>
 	<div class="adminPanelColumnForm">
 		<form wicket:id="form" class="adminForm">
-			<div wicket:id="buttons"></div>
+			<div class="actions" wicket:id="buttons"></div>
 			<div class="scrollcontent" id="adminForm">
 
 				<!-- General -->
@@ -151,59 +147,51 @@
 						</div>
 						<button type="button" wicket:id="addFiles"><wicket:message key="1261"/></button>
 					</form>
-					<table class="adminListTable">
+					<table class="list-table small">
 						<thead>
-							<tr>
-								<th class="ui-widget-header" style="width: 380px"><wicket:message key="165" /></th>
-								<th class="ui-widget-header" style="width: 80px"><wicket:message key="615" /></th>
-								<th class="ui-widget-header" style="width: 50px"><wicket:message key=275 /></th>
+							<tr class="ui-widget-header">
+								<th class="col-9"><wicket:message key="165" /></th>
+								<th class="col-2"><wicket:message key="615" /></th>
+								<th class="col-1"><wicket:message key=275 /></th>
 							</tr>
 						</thead>
+						<tbody wicket:id="filesContainer">
+							<tr wicket:id="files">
+								<td class="col-9"><div class="col-wrapper" style="width: auto"><span wicket:id="name"></span></div></td>
+								<td class="col-2"><span wicket:id="wbIdx"></span></td>
+								<td class="col-1">
+									<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="delete" wicket:message="title:80">
+										<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
+									</div>
+								</td>
+							</tr>
+						</tbody>
 					</table>
-					<div class="tableWrapperSmall" id="adminTableSmall">
-						<table class="adminListTable">
-							<tbody wicket:id="filesContainer">
-								<tr wicket:id="files">
-									<td style="width: 380px"><div class="three_column_layout_divcolumn1" style="width: auto"><span wicket:id="name"></span></div></td>
-									<td style="width: 80px"><span wicket:id="wbIdx"></span></td>
-									<td style="width: 50px">
-										<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="delete" wicket:message="title:80">
-											<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
-										</div>
-									</td>
-								</tr>
-							</tbody>
-						</table>
-					</div>
 				</fieldset>
 
 				<!-- Users in this Room -->
 				<fieldset class="ui-widget-content">
 					<legend class="ui-widget-header"><wicket:message key="407" /></legend>
-					<table class="adminListTable">
+					<table class="list-table small">
 						<thead>
-							<tr>
-								<th class="three_column_layout_column1 ui-widget-header"><wicket:message key="188" /></th>
-								<th class="three_column_layout_column2 ui-widget-header"><wicket:message key="108" /></th>
-								<th class="three_column_layout_column3 ui-widget-header"><wicket:message key="275" /></th>
+							<tr class="ui-widget-header">
+								<th class="col-1"><wicket:message key="188" /></th>
+								<th class="col-10"><wicket:message key="108" /></th>
+								<th class="col-1"><wicket:message key="275" /></th>
 							</tr>
 						</thead>
+						<tbody wicket:id="clientsContainer">
+							<tr wicket:id="clients">
+								<td class="col-1"><div class="col-wrapper"><span wicket:id="clientId"></span></div></td>
+								<td class="col-10"><div class="col-wrapper"><span wicket:id="clientLogin"></span></div></td>
+								<td class="col-1">
+									<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="clientDelete" wicket:message="title:603">
+										<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
+									</div>
+								</td>
+							</tr>
+						</tbody>
 					</table>
-					<div class="tableWrapperSmall" id="adminTableSmall">
-						<table class="adminListTable">
-							<tbody wicket:id="clientsContainer">
-								<tr wicket:id="clients">
-									<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="clientId"></span></div></td>
-									<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="clientLogin"></span></div></td>
-									<td class="three_column_layout_column3">
-										<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="clientDelete" wicket:message="title:603">
-											<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
-										</div>
-									</td>
-								</tr>
-							</tbody>
-						</table>
-					</div>
 				</fieldset>
 
 				<!-- Default moderators -->
@@ -216,34 +204,30 @@
 						<label wicket:for="moderator2add"><wicket:message key="816" /></label><div class="om-select2"><select wicket:id="moderator2add" class="input"></select></div>
 					</div>
 					<div class="formelement" wicket:id="moderatorContainer">
-						<table class="adminListTableSmall">
+						<table class="list-table small">
 							<thead>
-								<tr>
-									<th class="three_column_layout_column1 ui-widget-header" style="overflow: hidden;" wicket:message="title:817"><wicket:message key="817" /></th>
-									<th class="three_column_layout_column2 ui-widget-header"><wicket:message key="188" /></th>
-									<th class="three_column_layout_column3 ui-widget-header"><wicket:message key="165" /></th>
-									<th class="three_column_layout_column4 ui-widget-header"><wicket:message key="510" /></th>
-									<th class="three_column_layout_column5 ui-widget-header"><wicket:message key="275" /></th>
+								<tr class="ui-widget-header">
+									<th class="col-1" style="overflow: hidden;" wicket:message="title:817"><wicket:message key="817" /></th>
+									<th class="col-1"><wicket:message key="188" /></th>
+									<th class="col-4"><wicket:message key="165" /></th>
+									<th class="col-5"><wicket:message key="510" /></th>
+									<th class="col-1"><wicket:message key="275" /></th>
 								</tr>
 							</thead>
+							<tbody>
+								<tr wicket:id="moderators">
+									<td class="col-1"><div class="col-wrapper"><input type="checkbox" wicket:id="superModerator"/></div></td>
+									<td class="col-1"><div class="col-wrapper"><span wicket:id="userId"></span></div></td>
+									<td class="col-4"><div class="col-wrapper"><span wicket:id="uName"></span></div></td>
+									<td class="col-5"><div class="col-wrapper" style="overflow: hidden;"><span wicket:id="email"></span></div></td>
+									<td class="col-1">
+										<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="delete" wicket:message="title:80">
+											<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
+										</div>
+									</td>
+								</tr>
+							</tbody>
 						</table>
-						<div class="tableWrapperSmall" id="adminTableSmall">
-							<table class="adminListTableSmall">
-								<tbody>
-									<tr wicket:id="moderators">
-										<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><input type="checkbox" wicket:id="superModerator"/></div></td>
-										<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="userId"></span></div></td>
-										<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="uName"></span></div></td>
-										<td class="three_column_layout_column4"><div class="three_column_layout_divcolumn4" style="overflow: hidden;"><span wicket:id="email"></span></div></td>
-										<td style="width: 50px">
-											<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="delete" wicket:message="title:80">
-												<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
-											</div>
-										</td>
-									</tr>
-								</tbody>
-							</table>
-						</div>
 					</div>
 				</fieldset>
 				<!--SIP Settings -->
@@ -266,6 +250,7 @@
 						<label wicket:for="sipEnabled"><wicket:message key="1538" /></label><input type="checkbox" class="formcheckbox" wicket:id="sipEnabled" />
 					</div>
 				</fieldset>
+				<div class="bottom-bumper"></div>
 			</div>
 		</form>
 	</div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
index 93c229a..4928bd1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
@@ -66,7 +66,6 @@ public class RoomsPanel extends AdminBasePanel {
 						form.setModelObject(roomDao.get(roomId));
 						form.updateView(target);
 						target.add(form, listContainer);
-						reinitJs(target);
 					}
 				});
 				item.add(AttributeModifier.replace(ATTR_CLASS, getRowClass(room.getId(), form.getModelObject().getId())));
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 b351db2..2fd0ef7 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
@@ -19,7 +19,7 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
-	<div wicket:id="buttons"></div>
+	<div class="actions" wicket:id="buttons"></div>
 	<div class="scrollcontent" wicket:id="adminForm" id="adminForm">
 		<fieldset class="ui-widget-content">
 			<legend class="ui-widget-header">
@@ -64,6 +64,7 @@
 			</legend>
 			<form wicket:id="comunity"></form>
 		</fieldset>
+		<div class="bottom-bumper"></div>
 	</div>
 	<div wicket:id="adminPass"></div>
 </wicket:panel>
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 8f30aa7..5fc2343 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
@@ -264,7 +264,6 @@ public class UserForm extends AdminBaseForm<User> {
 		setModelObject(userDao.get(getModelObject().getId()));
 		setNewVisible(false);
 		target.add(this, listContainer);
-		reinitJs(target);
 	}
 
 	@Override
@@ -341,7 +340,6 @@ public class UserForm extends AdminBaseForm<User> {
 		updateDomain(target);
 		if (target != null) {
 			target.add(this, listContainer);
-			reinitJs(target);
 		}
 	}
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.html
index b8dc48b..d146377 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.html
@@ -21,41 +21,41 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:extend>
 	<div class="adminPanelColumnTable">
-		<span wicket:id="navigator">[dataview navigator]</span>
-		<table class="adminListTable">
+		<div class="adminNav" wicket:id="navigator">[dataview navigator]</div>
+		<table class="list-table">
 			<thead>
-				<tr>
-					<th class="four_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span> <wicket:message key="188" /></th>
-					<th class="four_column_layout_column2 ui-widget-header"><span wicket:id="orderByLogin"></span> <wicket:message key="108" /></th>
-					<th class="four_column_layout_column3 ui-widget-header"><span wicket:id="orderByFirstName"></span> <wicket:message key="117" /></th>
-					<th class="four_column_layout_column4 ui-widget-header"><span wicket:id="orderByLastName"></span> <wicket:message key="136" /></th>
+				<tr class="ui-widget-header">
+					<th class="col-1"><span wicket:id="orderById"></span> <wicket:message key="188" /></th>
+					<th class="col-3"><span wicket:id="orderByLogin"></span> <wicket:message key="108" /></th>
+					<th class="col-4"><span wicket:id="orderByFirstName"></span> <wicket:message key="117" /></th>
+					<th class="col-4"><span wicket:id="orderByLastName"></span> <wicket:message key="136" /></th>
 				</tr>
 			</thead>
+			<tbody wicket:id="listContainer">
+				<tr wicket:id="userList">
+					<td class="col-1">
+						<div class="col-wrapper">
+							<span wicket:id="id"></span>
+						</div>
+					</td>
+					<td class="col-3">
+						<div class="col-wrapper">
+							<span wicket:id="login"></span>
+						</div>
+					</td>
+					<td class="col-4">
+						<div class="col-wrapper">
+							<span wicket:id="firstname"></span>
+						</div>
+					</td>
+					<td class="col-4">
+						<div class="col-wrapper">
+							<span wicket:id="lastname"></span>
+						</div>
+					</td>
+				</tr>
+			</tbody>
 		</table>
-		<div class="tableWrapper" id="adminTable">
-			<table class="adminListTable">
-				<tbody wicket:id="listContainer">
-					<tr wicket:id="userList">
-						<td class="four_column_layout_column1"><div
-								class="four_column_layout_divcolumn1">
-								<span wicket:id="id"></span>
-							</div></td>
-						<td class="four_column_layout_column2"><div
-								class="four_column_layout_divcolumn2">
-								<span wicket:id="login"></span>
-							</div></td>
-						<td class="four_column_layout_column3"><div
-								class="four_column_layout_divcolumn3">
-								<span wicket:id="firstname"></span>
-							</div></td>
-						<td class="four_column_layout_column4"><div
-								class="four_column_layout_divcolumn4">
-								<span wicket:id="lastname"></span>
-							</div></td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
 	</div>
 	<div class="adminPanelColumnForm">
 		<form wicket:id="form" class="adminForm"/>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.html
index 6578d94..c696064 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.html
@@ -20,7 +20,7 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
-	<div class="formSaveBar ui-widget-header">
+	<div class="ui-widget-header">
 		<div class="ui-button ui-widget ui-corner-all ui-button-icon-only" wicket:id="btn-save" wicket:message="title:144">
 			<span class="ui-button-icon ui-icon ui-icon-disk"></span>&nbsp;
 		</div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.html
index e3e2690..da6ff80 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/HeaderPanel.html
@@ -20,8 +20,6 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 	<wicket:panel>
-		<div id="header">
-			<span wicket:id="appName"></span>
-		</div>
+		<span wicket:id="appName"></span>
 	</wicket:panel>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
index 7f0a0af..4522e12 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
@@ -41,7 +41,7 @@
 		<div wicket:id="menu"></div>
 	</div>
 	<div wicket:id="dev" id="devMenu"/>
-	<div wicket:id="contents"><div wicket:id="child"></div></div>
+	<div wicket:id="contents"><div wicket:id="child" style="height: 100%;"></div></div>
 	<div wicket:id="chatPanel" class="closed"></div>
 	<div wicket:id="aboutDialog"></div>
 	<div wicket:id="userInfoDialog"></div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.java
index 635c178..06b40af 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.java
@@ -28,4 +28,9 @@ public class OmPagingNavigator extends AjaxPagingNavigator {
 		super(id, pageable);
 	}
 
+	@Override
+	protected void onInitialize() {
+		super.onInitialize();
+		getPagingNavigation().setViewSize(5);
+	}
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html
index e4d8c22..9f3f5a7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.html
@@ -68,7 +68,7 @@
 			<div class="sk-child sk-dot2"></div>
 		</div>
 	</div>
-	<div wicket:id="header"></div>
+	<div wicket:id="header" id="header"></div>
 	<wicket:child />
 </body>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html
index e8c0660..cc9a190 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html
@@ -20,6 +20,6 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:extend>
-	<div wicket:id="main-container" style="height: 100%"><div wicket:id="main" style="height: 100%"/></div>
+	<div wicket:id="main-container" style="height: calc(100% - var(--header-height))"><div wicket:id="main" style="height: 100%"/></div>
 </wicket:extend>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
index 264f5ae..3249857 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
@@ -175,6 +175,7 @@ var Room = (function() {
 			});
 			_sbAddResizable();
 		}
+		$('body').addClass('no-header');
 		$(window).on('resize.openmeetings', _setSize);
 		Wicket.Event.subscribe("/websocket/closed", _close);
 		Wicket.Event.subscribe("/websocket/error", _close);
@@ -183,6 +184,7 @@ var Room = (function() {
 		$(document).click(_mouseHandler);
 	}
 	function _unload() {
+		$('body').removeClass('no-header');
 		$(window).off('resize.openmeetings');
 		Wicket.Event.unsubscribe("/websocket/closed", _close);
 		Wicket.Event.unsubscribe("/websocket/error", _close);
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfilePanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.html
similarity index 51%
copy from openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfilePanel.html
copy to openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.html
index 3f38cec..dfa3c89 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfilePanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.html
@@ -20,8 +20,38 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
-	<form wicket:id="form" class="adminForm"/>
-	<div wicket:id="changePasswd"></div>
+	<div class="actions" wicket:id="buttons"></div>
+	<div style="height: calc(100% - 50px); overflow-y: auto;">
+		<table style="width: 100%; height: 100%">
+			<tr>
+				<td rowspan="2">
+					<fieldset class="ui-widget-content">
+						<legend class="ui-widget-header">
+							<wicket:message key="143" />
+						</legend>
+						<button type="button" wicket:id="changePwd" id="changePwd" style="margin-left: 180px;"><wicket:message key="327"/></button>
+						<div class="formelement" wicket:enclosure="passwd">
+							<label wicket:for="passwd"><wicket:message key="current.password" /></label><input type="password" wicket:id="passwd" />
+						</div>
+						<form wicket:id="general"></form>
+					</fieldset>
+				</td>
+				<td>
+					<div wicket:id="img"></div>
+				</td>
+			</tr>
+			<tr>
+				<td>
+					<fieldset class="ui-widget-content">
+						<legend class="ui-widget-header">
+							<wicket:message key="1159" />
+						</legend>
+						<form wicket:id="comunity"></form>
+					</fieldset>
+				</td>
+			</tr>
+		</table>
+	</div>
 	<div style="text-align: center; padding-top: 10px;">
 		<a wicket:id="link" target="_blank"><wicket:message key="register.privacy.statement"/></a>
 	</div>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfileForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.java
similarity index 92%
rename from openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfileForm.java
rename to openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.java
index 25f3968..ed94fc5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfileForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfileForm.java
@@ -29,12 +29,14 @@ import org.apache.openmeetings.web.common.ComunityUserForm;
 import org.apache.openmeetings.web.common.FormActionsPanel;
 import org.apache.openmeetings.web.common.GeneralUserForm;
 import org.apache.openmeetings.web.common.UploadableProfileImagePanel;
+import org.apache.openmeetings.web.pages.PrivacyPage;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.PasswordTextField;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
 import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
 import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
 import org.apache.wicket.model.CompoundPropertyModel;
@@ -48,9 +50,9 @@ import org.slf4j.LoggerFactory;
 
 import com.googlecode.wicket.jquery.ui.form.button.ButtonBehavior;
 
-public class ProfileForm extends Form<User> {
+public class EditProfileForm extends Form<User> {
 	private static final long serialVersionUID = 1L;
-	private static final Logger log = LoggerFactory.getLogger(ProfileForm.class);
+	private static final Logger log = LoggerFactory.getLogger(EditProfileForm.class);
 	private final PasswordTextField passwd = new PasswordTextField("passwd", new Model<String>());
 	private final GeneralUserForm userForm;
 	private final ChangePasswordDialog chPwdDlg;
@@ -60,7 +62,7 @@ public class ProfileForm extends Form<User> {
 	@SpringBean
 	private UserDao userDao;
 
-	public ProfileForm(String id, final ChangePasswordDialog chPwdDlg) {
+	public EditProfileForm(String id, final ChangePasswordDialog chPwdDlg) {
 		super(id);
 		setModel(new CompoundPropertyModel<>(userDao.get(getUserId())));
 		userForm = new GeneralUserForm("general", getModel(), false);
@@ -94,13 +96,13 @@ public class ProfileForm extends Form<User> {
 					error(e.getMessage());
 				}
 				refreshUser();
-				target.add(ProfileForm.this);
+				target.add(EditProfileForm.this);
 			}
 
 			@Override
 			protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
 				refreshUser();
-				target.add(ProfileForm.this);
+				target.add(EditProfileForm.this);
 			}
 
 			@Override
@@ -125,6 +127,7 @@ public class ProfileForm extends Form<User> {
 		// attach an ajax validation behavior to all form component's keydown
 		// event and throttle it down to once per second
 		add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
+		add(new BookmarkablePageLink<>("link", PrivacyPage.class));
 	}
 
 	@Override
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfilePanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfilePanel.html
similarity index 82%
rename from openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfilePanel.html
rename to openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfilePanel.html
index 3f38cec..9952fe3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfilePanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfilePanel.html
@@ -20,10 +20,7 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
-	<form wicket:id="form" class="adminForm"/>
+	<form wicket:id="form" class="adminForm edit-profile"/>
 	<div wicket:id="changePasswd"></div>
-	<div style="text-align: center; padding-top: 10px;">
-		<a wicket:id="link" target="_blank"><wicket:message key="register.privacy.statement"/></a>
-	</div>
 </wicket:panel>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfilePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfilePanel.java
similarity index 77%
rename from openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfilePanel.java
rename to openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfilePanel.java
index f834da5..c2ece82 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfilePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/EditProfilePanel.java
@@ -19,18 +19,15 @@
 package org.apache.openmeetings.web.user.profile;
 
 import org.apache.openmeetings.web.common.UserBasePanel;
-import org.apache.openmeetings.web.pages.PrivacyPage;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
 
-public class ProfilePanel extends UserBasePanel {
+public class EditProfilePanel extends UserBasePanel {
 	private static final long serialVersionUID = 1L;
 
-	public ProfilePanel(String id) {
+	public EditProfilePanel(String id) {
 		super(id);
 		setOutputMarkupId(true);
 
 		final ChangePasswordDialog chPwdDlg = new ChangePasswordDialog("changePasswd");
-		add(chPwdDlg, new ProfileForm("form", chPwdDlg));
-		add(new BookmarkablePageLink<>("link", PrivacyPage.class));
+		add(chPwdDlg, new EditProfileForm("form", chPwdDlg));
 	}
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.html
index 9fc8fde..d9ce01d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/InvitationsPanel.html
@@ -20,32 +20,29 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
+	<div class="adminPanel">
 	<div class="adminPanelColumnTable">
-		<span wicket:id="navigator">[dataview navigator]</span>
-		<table class="adminListTable">
+		<div class="adminNav" wicket:id="navigator">[dataview navigator]</div>
+		<table class="list-table">
 			<thead>
-				<tr>
-					<th class="three_column_layout_column1 ui-widget-header"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
-					<th class="three_column_layout_column2 ui-widget-header"><span wicket:id="orderByValid"></span><wicket:message key="526" /></th>
-					<th class="three_column_layout_column3 ui-widget-header"><span wicket:id="orderByInvitee"></span><wicket:message key="216" /></th>
+				<tr class="ui-widget-header">
+					<th class="col-1"><span wicket:id="orderById"></span><wicket:message key="188" /></th>
+					<th class="col-3"><span wicket:id="orderByValid"></span><wicket:message key="526" /></th>
+					<th class="col-8"><span wicket:id="orderByInvitee"></span><wicket:message key="216" /></th>
 				</tr>
 			</thead>
+			<tbody wicket:id="list">
+				<tr wicket:id="invitations">
+					<td class="col-1"><div class="col-wrapper"><span wicket:id="id"></span></div></td>
+					<td class="col-3"><div class="col-wrapper"><span wicket:id="valid"></span></div></td>
+					<td class="col-8"><div class="col-wrapper"><span wicket:id="invitee"></span></div></td>
+				</tr>
+			</tbody>
 		</table>
-		<div class="tableWrapper" id="adminTable">
-			<table class="adminListTable">
-				<tbody wicket:id="list">
-					<tr wicket:id="invitations">
-						<td class="three_column_layout_column1"><div class="three_column_layout_divcolumn1"><span wicket:id="id"></span></div></td>
-						<td class="three_column_layout_column2"><div class="three_column_layout_divcolumn2"><span wicket:id="valid"></span></div></td>
-						<td class="three_column_layout_column3"><div class="three_column_layout_divcolumn3"><span wicket:id="invitee"></span></div></td>
-					</tr>
-				</tbody>
-			</table>
-		</div>
 	</div>
 	<div class="adminPanelColumnForm">
 		<form wicket:id="form" class="adminForm">
-			<div class="formSaveBar ui-widget-header">
+			<div class="actions ui-widget-header">
 				<div class="ui-button ui-widget ui-corner-all ui-button-icon-only ui-state-error" wicket:id="ajax-cancel-button" wicket:message="title:157">
 					<span class="ui-button-icon ui-icon ui-icon-closethick"></span>&nbsp;
 				</div>
@@ -64,5 +61,6 @@
 			</div>
 		</form>
 	</div>
+	</div>
 </wicket:panel>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
index c557c89..441561d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.html
@@ -21,105 +21,108 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
 	<!-- TODO design should be changed in the future -->
-	<table class="messages">
-		<tr>
-			<td class="side left">
-				<div class="email new clickable" onclick="privateMessage();" wicket:message="title:1208"><wicket:message key="1207"/></div>
-				<div wicket:id="folders">
-					<div wicket:id="inbox"><wicket:message key="1222"/></div>
-					<div wicket:id="sent"><wicket:message key="1223"/></div>
-					<div wicket:id="trash"><wicket:message key="1224"/></div>
-					<div class="email newdir clickable" wicket:id="newdir" wicket:message="title:1259"><wicket:message key="703"/></div>
-					<div wicket:id="folder">
-						<div wicket:id="name"></div>
-						<div class="delete" wicket:id="delete" wicket:message="title:1262"></div>
+	<div style="height: 100%; overflow-y: auto;">
+		<table class="messages">
+			<tr>
+				<td class="side left">
+					<div class="email new clickable" onclick="privateMessage();" wicket:message="title:1208"><wicket:message key="1207"/></div>
+					<div wicket:id="folders">
+						<div wicket:id="inbox"><wicket:message key="1222"/></div>
+						<div wicket:id="sent"><wicket:message key="1223"/></div>
+						<div wicket:id="trash"><wicket:message key="1224"/></div>
+						<div class="email newdir clickable" wicket:id="newdir" wicket:message="title:1259"><wicket:message key="703"/></div>
+						<div wicket:id="folder">
+							<div wicket:id="name"></div>
+							<div class="delete" wicket:id="delete" wicket:message="title:1262"></div>
+						</div>
 					</div>
-				</div>
-			</td>
-			<td class="main">
-				<div><b><wicket:message key="1206"/>&nbsp;(<span wicket:id="unread"></span>)</b></div>
-				<div wicket:id="navigator"></div>
-				<table id="messagesTable" style="width: 100%;">
-					<thead>
-					<tr>
-						<th align="left"><span wicket:id="orderById"></span><wicket:message key="1205"/></th>
-						<th align="left"><span wicket:id="orderByFrom"></span><wicket:message key="1202"/></th>
-						<th align="left"><span wicket:id="orderBySubject"></span><wicket:message key="215"/></th>
-						<th align="left"><span wicket:id="orderBySend"></span><wicket:message key="218"/></th>
-					</tr>
-					</thead>
-					<tbody wicket:id="container" style="background-color: white;">
-					<tr wicket:id="messages">
-						<td wicket:id="id"></td>
-						<td wicket:id="from"></td>
-						<td wicket:id="subject"></td>
-						<td wicket:id="send"></td>
-					</tr>
-					</tbody>
-				</table>
-				<div wicket:id="buttons">
-					<select wicket:id="msgSelect"></select>
-					<input wicket:id="toInboxBtn" type="button" wicket:message="value:1255"/>
-					<input wicket:id="replyBtn" type="button" wicket:message="value:messages.btn.reply"/>
-					<input wicket:id="deleteBtn" type="button" wicket:message="value:80"/>
-					<input wicket:id="readBtn" type="button" wicket:message="value:1248"/>
-					<input wicket:id="unreadBtn" type="button" wicket:message="value:1247"/>
-					<select wicket:id="msgMove"></select>
-				</div>
-				<div wicket:id="selectedMessage">
-					<table style="width: 100%">
-						<tr>
-							<td style="width: 10px; padding-right: 20px;"><wicket:message key="1202"/></td>
-							<td wicket:id="from"></td>
-						</tr>
-						<tr>
-							<td style="width: 10px; padding-right: 20px;"><wicket:message key="1210"/></td>
-							<td wicket:id="to"></td>
-						</tr>
-						<tr>
-							<td style="width: 10px; padding-right: 20px;"><wicket:message key="1211"/></td>
-							<td wicket:id="subj"></td>
-						</tr>
+				</td>
+				<td class="main">
+					<div><b><wicket:message key="1206"/>&nbsp;(<span wicket:id="unread"></span>)</b></div>
+					<div class="adminNav" wicket:id="navigator"></div>
+					<table id="messagesTable" class="list-table small full-width">
+						<thead>
+							<tr class="ui-widget-header">
+								<th class="col-1"><span wicket:id="orderById"></span><wicket:message key="1205"/></th>
+								<th class="col-6"><span wicket:id="orderByFrom"></span><wicket:message key="1202"/></th>
+								<th class="col-3"><span wicket:id="orderBySubject"></span><wicket:message key="215"/></th>
+								<th class="col-2"><span wicket:id="orderBySend"></span><wicket:message key="218"/></th>
+							</tr>
+						</thead>
+						<tbody wicket:id="container">
+							<tr wicket:id="messages">
+								<td class="col-1" wicket:id="id"></td>
+								<td class="col-6" wicket:id="from"></td>
+								<td class="col-3" wicket:id="subject"></td>
+								<td class="col-2" wicket:id="send"></td>
+							</tr>
+						</tbody>
 					</table>
-					<div style="background-color: white;min-height: 300px;" wicket:id="body"></div>
-					<div wicket:id="roomContainer">
+					<div wicket:id="buttons">
+						<select wicket:id="msgSelect"></select>
+						<input wicket:id="toInboxBtn" type="button" wicket:message="value:1255"/>
+						<input wicket:id="replyBtn" type="button" wicket:message="value:messages.btn.reply"/>
+						<input wicket:id="deleteBtn" type="button" wicket:message="value:80"/>
+						<input wicket:id="readBtn" type="button" wicket:message="value:1248"/>
+						<input wicket:id="unreadBtn" type="button" wicket:message="value:1247"/>
+						<select wicket:id="msgMove"></select>
+					</div>
+					<div wicket:id="selectedMessage">
 						<table style="width: 100%">
 							<tr>
-								<td>
-									<button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" wicket:id="enter">
-										<span class="ui-button-text"><wicket:message key="1282"/></span>
-									</button>
-								</td>
-								<td>
-									<div style="display: inline-block; width: 300px;"><wicket:message key="570" /></div><span wicket:id="start"></span><br/>
-									<div style="display: inline-block; width: 300px;"><wicket:message key="571" /></div><span wicket:id="end"></span>
-								</td>
+								<td style="width: 10px; padding-right: 20px;"><wicket:message key="1202"/></td>
+								<td wicket:id="from"></td>
+							</tr>
+							<tr>
+								<td style="width: 10px; padding-right: 20px;"><wicket:message key="1210"/></td>
+								<td wicket:id="to"></td>
+							</tr>
+							<tr>
+								<td style="width: 10px; padding-right: 20px;"><wicket:message key="1211"/></td>
+								<td wicket:id="subj"></td>
 							</tr>
 						</table>
+						<div style="background-color: white;min-height: 300px;" wicket:id="body"></div>
+						<div wicket:id="roomContainer">
+							<table style="width: 100%">
+								<tr>
+									<td>
+										<button class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" wicket:id="enter">
+											<span class="ui-button-text"><wicket:message key="1282"/></span>
+										</button>
+									</td>
+									<td>
+										<div style="display: inline-block; width: 300px;"><wicket:message key="570" /></div><span wicket:id="start"></span><br/>
+										<div style="display: inline-block; width: 300px;"><wicket:message key="571" /></div><span wicket:id="end"></span>
+									</td>
+								</tr>
+							</table>
+						</div>
 					</div>
-				</div>
-			</td>
-			<td class="side right" wicket:id="contacts">
-				<div><b><wicket:message key="1189"/>&nbsp;(<span wicket:id="pendingContacts"></span>)</b></div>
-				<div><b><wicket:message key="1188"/>&nbsp;(<span wicket:id="allContacts"></span>)</b></div>
-				<table style="width: 100%">
-					<tr>
-						<th><wicket:message key="165"/></th>
-						<th><wicket:message key="635"/></th>
-					</tr>
-					<tr wicket:id="users">
-						<td><div wicket:id="name" style="overflow-x: hidden;"></div></td>
-						<td><div wicket:id="accept" class="tick om-icon clickable" wicket:message="title:1190"
-							></div><div wicket:id="decline" class="cross om-icon clickable" wicket:message="title:1191"
-							></div><div wicket:id="view" class="user om-icon clickable" wicket:message="title:1236"
-							></div><div wicket:id="message" class="new-email om-icon clickable" wicket:message="title:1253"
-							></div><div wicket:id="delete" class="cross om-icon clickable" wicket:message="title:1234"
-							></div></td>
-					</tr>
-				</table>
-			</td>
-		</tr>
-	</table>
+				</td>
+				<td class="side right" wicket:id="contacts">
+					<div><b><wicket:message key="1189"/>&nbsp;(<span wicket:id="pendingContacts"></span>)</b></div>
+					<div><b><wicket:message key="1188"/>&nbsp;(<span wicket:id="allContacts"></span>)</b></div>
+					<table style="width: 100%">
+						<tr>
+							<th><wicket:message key="165"/></th>
+							<th><wicket:message key="635"/></th>
+						</tr>
+						<tr wicket:id="users">
+							<td><div wicket:id="name" style="overflow-x: hidden;"></div></td>
+							<td><div wicket:id="accept" class="tick om-icon clickable" wicket:message="title:1190"
+								></div><div wicket:id="decline" class="cross om-icon clickable" wicket:message="title:1191"
+								></div><div wicket:id="view" class="user om-icon clickable" wicket:message="title:1236"
+								></div><div wicket:id="message" class="new-email om-icon clickable" wicket:message="title:1253"
+								></div><div wicket:id="delete" class="cross om-icon clickable" wicket:message="title:1234"
+								></div></td>
+						</tr>
+					</table>
+				</td>
+			</tr>
+		</table>
+		<div class="bottom-bumper"></div>
+	</div>
 	<div wicket:id="addFolder"></div>
 </wicket:panel>
 </html>
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 038082b..eec37c9 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
@@ -82,8 +82,6 @@ import org.apache.wicket.model.util.ListModel;
 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.plugins.fixedheadertable.FixedHeaderTableBehavior;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 
 public class MessagesContactsPanel extends UserBasePanel {
@@ -120,7 +118,6 @@ public class MessagesContactsPanel extends UserBasePanel {
 	private final Button replyBtn = new Button("replyBtn");
 	private final Button readBtn = new Button("readBtn");
 	private final Button unreadBtn = new Button("unreadBtn");
-	private final FixedHeaderTableBehavior fixedTable = new FixedHeaderTableBehavior("#messagesTable", new Options("height", 100));
 	private final DropDownChoice<String> selectDropDown = new DropDownChoice<>(
 		"msgSelect", Model.of(SELECT_CHOOSE)
 		, Arrays.asList(SELECT_CHOOSE, SELECT_ALL, SELECT_NONE, SELECT_UNREAD, SELECT_READ)
@@ -587,7 +584,6 @@ public class MessagesContactsPanel extends UserBasePanel {
 	}
 
 	void updateTable(AjaxRequestTarget target) {
-		container.add(fixedTable);
 		if (target != null) {
 			target.add(container);
 		}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfileForm.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfileForm.html
deleted file mode 100644
index 006634c..0000000
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/ProfileForm.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-
--->
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
-	<div wicket:id="buttons"></div>
-	<table style="width: 100%; height: 100%">
-		<tr>
-			<td rowspan="2">
-				<fieldset class="ui-widget-content">
-					<legend class="ui-widget-header">
-						<wicket:message key="143" />
-					</legend>
-					<button type="button" wicket:id="changePwd" id="changePwd" style="margin-left: 180px;"><wicket:message key="327"/></button>
-					<div class="formelement" wicket:enclosure="passwd">
-						<label wicket:for="passwd"><wicket:message key="current.password" /></label><input type="password" wicket:id="passwd" />
-					</div>
-					<form wicket:id="general"></form>
-				</fieldset>
-			</td>
-			<td>
-				<div wicket:id="img"></div>
-			</td>
-		</tr>
-		<tr>
-			<td>
-				<fieldset class="ui-widget-content">
-					<legend class="ui-widget-header">
-						<wicket:message key="1159" />
-					</legend>
-					<form wicket:id="comunity"></form>
-				</fieldset>
-			</td>
-		</tr>
-	</table>
-</wicket:panel>
-</html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/SettingsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/SettingsPanel.html
index 6c52e55..6d7c7d7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/SettingsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/SettingsPanel.html
@@ -20,6 +20,6 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 	<wicket:panel>
-		<div wicket:id="tabs"></div>
+		<div wicket:id="tabs" class="user-settings"></div>
 	</wicket:panel>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/SettingsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/SettingsPanel.java
index 5278d75..1a91608 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/SettingsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/SettingsPanel.java
@@ -33,7 +33,6 @@ import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 
 import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.widget.tabs.AjaxTab;
 import com.googlecode.wicket.jquery.ui.widget.tabs.TabbedPanel;
 
 public class SettingsPanel extends UserBasePanel {
@@ -45,6 +44,8 @@ public class SettingsPanel extends UserBasePanel {
 	public static final int INVITATIONS_TAB_ID = 4;
 	public static final int DASHBOARD_TAB_ID = 5;
 	public final int active;
+	private UserProfilePanel profilePanel;
+	private MessagesContactsPanel messagesPanel;
 	@SpringBean
 	private UserDao userDao;
 
@@ -56,34 +57,26 @@ public class SettingsPanel extends UserBasePanel {
 	@Override
 	protected void onInitialize() {
 		List<ITab> tabs = new ArrayList<>();
-		tabs.add(new AjaxTab(new ResourceModel("1170")) {
+		tabs.add(new AbstractTab(new ResourceModel("1170")) {
 			private static final long serialVersionUID = 1L;
-			UserProfilePanel profilePanel = null;
 
 			@Override
-			protected WebMarkupContainer getLazyPanel(String panelId) {
+			public WebMarkupContainer getPanel(String panelId) {
 				if (profilePanel == null) {
 					profilePanel = new UserProfilePanel(panelId, getUserId());
-					profilePanel.setOutputMarkupId(true);
 				}
 				return profilePanel;
 			}
-
-			@Override
-			public boolean load(AjaxRequestTarget target) {
-				if (profilePanel != null) {
-					profilePanel.setDefaultModelObject(userDao.get(getUserId()));
-					target.add(profilePanel);
-				}
-				return super.load(target);
-			}
 		});
-		tabs.add(new AjaxTab(new ResourceModel("1188")) {
+		tabs.add(new AbstractTab(new ResourceModel("1188")) {
 			private static final long serialVersionUID = 1L;
 
 			@Override
-			protected WebMarkupContainer getLazyPanel(String panelId) {
-				return new MessagesContactsPanel(panelId);
+			public WebMarkupContainer getPanel(String panelId) {
+				if (messagesPanel == null) {
+					messagesPanel = new MessagesContactsPanel(panelId);
+				}
+				return messagesPanel;
 			}
 		});
 		tabs.add(new AbstractTab(new ResourceModel("1171")) {
@@ -91,7 +84,7 @@ public class SettingsPanel extends UserBasePanel {
 
 			@Override
 			public WebMarkupContainer getPanel(String panelId) {
-				return new ProfilePanel(panelId);
+				return new EditProfilePanel(panelId);
 			}
 		});
 		tabs.add(new AbstractTab(new ResourceModel("1172")) {
@@ -118,7 +111,32 @@ public class SettingsPanel extends UserBasePanel {
 				return new WidgetsPanel(panelId);
 			}
 		});
-		add(new TabbedPanel("tabs", tabs, new Options("active", active)).setActiveTab(active));
+		add(new TabbedPanel("tabs", tabs, new Options("active", active)) {
+			private static final long serialVersionUID = 1L;
+
+			/* This doesn't work so far
+			@Override
+			public boolean isActivatingEventEnabled() {
+				return true;
+			}
+
+			@Override
+			public void onActivating(AjaxRequestTarget target, int index, ITab tab) {
+				if (index == 0) {
+					profilePanel.setDefaultModelObject(userDao.get(getUserId()));
+					target.add(profilePanel);
+				}
+			}
+			*/
+			@Override
+			public void onActivate(AjaxRequestTarget target, int index, ITab tab) {
+				if (index == 0) {
+					profilePanel.update(target);
+				} else if (index == 1) {
+					messagesPanel.updateTable(target);
+				}
+			}
+		}.setActiveTab(active));
 
 		super.onInitialize();
 	}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html
index 9ca7d97..94c8b94 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.html
@@ -20,68 +20,71 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
-	<div class="user info panel">
-		<table>
-			<tr>
-				<td><div wicket:id="img"></div></td>
-				<td>
+	<div style="height: 100%; overflow-y: auto;">
+		<div wicket:id="info-panel" class="user info panel">
+			<table>
+				<tr>
+					<td><div wicket:id="img"></div></td>
+					<td>
+						<table>
+							<tr>
+								<td><wicket:message key="165"/></td><td><span wicket:id="firstname"></span>&nbsp;<span wicket:id="lastname"></span></td>
+							</tr>
+							<tr>
+								<td><wicket:message key="1143"/></td><td><span wicket:id="timeZoneId"></span></td>
+							</tr>
+							<tr>
+								<td><wicket:message key="1296"/></td><td><span wicket:id="regdate"></span></td>
+							</tr>
+						</table>
+					</td>
+				</tr>
+			</table>
+			<div>
+				<fieldset class="ui-widget-content">
+					<legend class="ui-widget-header"><wicket:message key="1166"/></legend>
 					<table>
 						<tr>
-							<td><wicket:message key="165"/></td><td><span wicket:id="firstname"></span>&nbsp;<span wicket:id="lastname"></span></td>
+							<td><wicket:message key="1162"/></td>
+							<td><textarea wicket:id="userOffers"></textarea></td>
 						</tr>
 						<tr>
-							<td><wicket:message key="1143"/></td><td><span wicket:id="timeZoneId"></span></td>
+							<td><wicket:message key="1163"/></td>
+							<td><textarea wicket:id="userSearchs"></textarea></td>
+						</tr>
+					</table>
+				</fieldset>
+			</div>
+			<div>
+				<fieldset class="ui-widget-content">
+					<legend class="ui-widget-header"><wicket:message key="1167"/></legend>
+					<table wicket:id="address">
+						<tr>
+							<td><wicket:message key="607" /></td>
+							<td><span wicket:id="address.phone"></span></td>
+						</tr>
+						<tr>
+							<td><wicket:message key="139" /></td>
+							<td><span wicket:id="address.street"></span>&nbsp;<span wicket:id="address.additionalname"></span></td>
 						</tr>
 						<tr>
-							<td><wicket:message key="1296"/></td><td><span wicket:id="regdate"></span></td>
+							<td><wicket:message key="140" /></td>
+							<td><span wicket:id="address.zip"></span>&nbsp;<span wicket:id="address.town"></span></td>
+						</tr>
+						<tr>
+							<td><wicket:message key="141" /></td>
+							<td><span wicket:id="country"></span></td>
+						</tr>
+						<tr>
+							<td><wicket:message key="142" /></td>
+							<td><span wicket:id="address.comment"></span></td>
 						</tr>
 					</table>
-				</td>
-			</tr>
-		</table>
-		<div>
-			<fieldset class="ui-widget-content">
-				<legend class="ui-widget-header"><wicket:message key="1166"/></legend>
-				<table>
-					<tr>
-						<td><wicket:message key="1162"/></td>
-						<td><textarea wicket:id="userOffers"></textarea></td>
-					</tr>
-					<tr>
-						<td><wicket:message key="1163"/></td>
-						<td><textarea wicket:id="userSearchs"></textarea></td>
-					</tr>
-				</table>
-			</fieldset>
-		</div>
-		<div>
-			<fieldset class="ui-widget-content">
-				<legend class="ui-widget-header"><wicket:message key="1167"/></legend>
-				<table wicket:id="address">
-					<tr>
-						<td><wicket:message key="607" /></td>
-						<td><span wicket:id="address.phone"></span></td>
-					</tr>
-					<tr>
-						<td><wicket:message key="139" /></td>
-						<td><span wicket:id="address.street"></span>&nbsp;<span wicket:id="address.additionalname"></span></td>
-					</tr>
-					<tr>
-						<td><wicket:message key="140" /></td>
-						<td><span wicket:id="address.zip"></span>&nbsp;<span wicket:id="address.town"></span></td>
-					</tr>
-					<tr>
-						<td><wicket:message key="141" /></td>
-						<td><span wicket:id="country"></span></td>
-					</tr>
-					<tr>
-						<td><wicket:message key="142" /></td>
-						<td><span wicket:id="address.comment"></span></td>
-					</tr>
-				</table>
-				<div wicket:id="addressDenied"></div>
-			</fieldset>
+					<div wicket:id="addressDenied"></div>
+				</fieldset>
+			</div>
 		</div>
+		<div class="bottom-bumper"></div>
 	</div>
 </wicket:panel>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java
index 3fa0dd2..95cd5ae 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserProfilePanel.java
@@ -26,6 +26,7 @@ import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.common.ProfileImagePanel;
 import org.apache.openmeetings.web.common.UserBasePanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.TextArea;
@@ -36,6 +37,7 @@ public class UserProfilePanel extends UserBasePanel {
 	private static final long serialVersionUID = 1L;
 	private final WebMarkupContainer address = new WebMarkupContainer("address");
 	private final Label addressDenied = new Label("addressDenied", "");
+	private final WebMarkupContainer panel = new WebMarkupContainer("info-panel");
 	@SpringBean
 	private UserDao userDao;
 	@SpringBean
@@ -54,13 +56,13 @@ public class UserProfilePanel extends UserBasePanel {
 	protected void onInitialize() {
 		User u = (User)getDefaultModelObject();
 
-		add(new ProfileImagePanel("img", u.getId()));
-		add(new Label("firstname"));
-		add(new Label("lastname"));
-		add(new Label("timeZoneId"));
-		add(new Label("regdate"));
-		add(new TextArea<String>("userOffers").setEnabled(false));
-		add(new TextArea<String>("userSearchs").setEnabled(false));
+		panel.add(new ProfileImagePanel("img", u.getId()));
+		panel.add(new Label("firstname"));
+		panel.add(new Label("lastname"));
+		panel.add(new Label("timeZoneId"));
+		panel.add(new Label("regdate"));
+		panel.add(new TextArea<String>("userOffers").setEnabled(false));
+		panel.add(new TextArea<String>("userSearchs").setEnabled(false));
 		if (getUserId().equals(u.getId()) || u.isShowContactData()
 				|| (u.isShowContactDataToContacts() && contactDao.isContact(u.getId(), getUserId())))
 		{
@@ -76,9 +78,15 @@ public class UserProfilePanel extends UserBasePanel {
 			address.setVisible(false);
 			addressDenied.setDefaultModelObject(getString(u.isShowContactDataToContacts() ? "1269" : "1268"));
 		}
-		add(address.setDefaultModel(getDefaultModel()));
-		add(addressDenied);
+		panel.add(address.setDefaultModel(getDefaultModel()));
+		panel.add(addressDenied);
 
+		add(panel.setOutputMarkupId(true));
 		super.onInitialize();
 	}
+
+	void update(AjaxRequestTarget target) {
+		setDefaultModelObject(userDao.get(getUserId()));
+		target.add(panel);
+	}
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html
index 3d9e006..5dd5787 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.html
@@ -21,49 +21,45 @@
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
 	<!--  TODO move styles into CSS -->
-	<table style="width: 100%; height: 100%;">
-		<tr>
-			<td valign="top" style="width: 200px;">
-				<form wicket:id="form">
-					<div><wicket:message key="1179"/></div>
-					<input type="text" wicket:id="text"/><br/>
-					<div><wicket:message key="1177"/></div>
-					<input type="text" wicket:id="offer"/><br/>
-					<div><wicket:message key="1178"/></div>
-					<input type="text" wicket:id="search"/><br/>
-					<br/>
-					<button wicket:id="submit" type="button"><wicket:message key="714"/></button>
-				</form>
-			</td>
-			<td valign="top">
-				<div wicket:id="container" style="height: 100%; min-height: 400px;">
-					<div><strong><wicket:message key="1184"/></strong>&nbsp;&nbsp;&nbsp;<span wicket:id="navigator"></span></div>
-					<table id="searchUsersTable" style="width: 100%;">
-						<thead>
-							<tr>
-								<th><wicket:message key="165"/></th>
-								<th><wicket:message key="1143"/></th>
-								<th><wicket:message key="1182"/></th>
-								<th><wicket:message key="1183"/></th>
-								<th><wicket:message key="635"/></th>
-							</tr>
-						</thead>
-						<tbody>
-							<tr wicket:id="users">
-								<td><span class="om-icon" wicket:id="status"></span><span wicket:id="name"></span></td>
-								<td wicket:id="tz"></td>
-								<td wicket:id="offer"></td>
-								<td wicket:id="search"></td>
-								<td style="white-space: nowrap;"><div wicket:id="add" class="add om-icon clickable" wicket:message="title:1186"
-									></div><div wicket:id="message" class="new-email om-icon clickable" wicket:message="title:1253"
-									></div><div wicket:id="view" class="user om-icon clickable" wicket:message="title:1236"
-									></div><div wicket:id="invite" class="invite om-icon clickable" wicket:message="title:1131"></div></td>
-							</tr>
-						</tbody>
-					</table>
-				</div>
-			</td>
-		</tr>
-	</table>
+	<div style="height: 100%; display: flex;">
+		<div style="width: 200px;">
+			<form wicket:id="form">
+				<div><wicket:message key="1179"/></div>
+				<input type="text" wicket:id="text"/><br/>
+				<div><wicket:message key="1177"/></div>
+				<input type="text" wicket:id="offer"/><br/>
+				<div><wicket:message key="1178"/></div>
+				<input type="text" wicket:id="search"/><br/>
+				<br/>
+				<button wicket:id="submit" type="button"><wicket:message key="714"/></button>
+			</form>
+		</div>
+		<div wicket:id="container" style="height: 100%; padding-left: 10px;">
+			<div><strong><wicket:message key="1184"/></strong>&nbsp;&nbsp;&nbsp;<div class="adminNav"  wicket:id="navigator"></div></div>
+			<table id="searchUsersTable" class="list-table">
+				<thead>
+					<tr class="ui-widget-header">
+						<th class="col-3"><wicket:message key="165"/></th>
+						<th class="col-2"><wicket:message key="1143"/></th>
+						<th class="col-2"><wicket:message key="1182"/></th>
+						<th class="col-3"><wicket:message key="1183"/></th>
+						<th class="col-2"><wicket:message key="635"/></th>
+					</tr>
+				</thead>
+				<tbody>
+					<tr wicket:id="users">
+						<td class="col-3"><span class="om-icon" wicket:id="status"></span><span wicket:id="name"></span></td>
+						<td class="col-2" wicket:id="tz"></td>
+						<td class="col-2" wicket:id="offer"></td>
+						<td class="col-3" wicket:id="search"></td>
+						<td class="col-2" style="white-space: nowrap;"><div wicket:id="add" class="add om-icon clickable" wicket:message="title:1186"
+							></div><div wicket:id="message" class="new-email om-icon clickable" wicket:message="title:1253"
+							></div><div wicket:id="view" class="user om-icon clickable" wicket:message="title:1236"
+							></div><div wicket:id="invite" class="invite om-icon clickable" wicket:message="title:1131"></div></td>
+					</tr>
+				</tbody>
+			</table>
+		</div>
+	</div>
 </wicket:panel>
 </html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
index fb1c4f1..12255df 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
@@ -49,9 +49,7 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 
-import com.googlecode.wicket.jquery.core.Options;
 import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
-import com.googlecode.wicket.jquery.ui.plugins.fixedheadertable.FixedHeaderTableBehavior;
 
 public class UserSearchPanel extends UserBasePanel {
 	private static final long serialVersionUID = 1L;
@@ -63,7 +61,6 @@ public class UserSearchPanel extends UserBasePanel {
 	private boolean asc = true;
 	private boolean searched = false;
 	private final WebMarkupContainer container = new WebMarkupContainer("container");
-	private final FixedHeaderTableBehavior fixedHeader = new FixedHeaderTableBehavior("#searchUsersTable", new Options("height", 400));
 	@SpringBean
 	private UserDao userDao;
 	@SpringBean
@@ -143,7 +140,7 @@ public class UserSearchPanel extends UserBasePanel {
 	}
 
 	private void refresh(IPartialPageRequestHandler handler) {
-		handler.add(container.add(fixedHeader));
+		handler.add(container);
 	}
 
 	private static String getName(User u) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html
index 402b9aa..9a47581 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsPanel.html
@@ -43,7 +43,7 @@
 						<label><wicket:message key="407" /></label>
 					</div>
 					<div class="tableWrapper" id="adminTable">
-						<table class="adminListTable">
+						<table class="list-table">
 							<tbody wicket:id="clientsContainer">
 								<tr wicket:id="clients">
 									<td style="width: 50px;"><img wicket:id="clientImage" style="min-width: 50px; height:50px" /></td>
diff --git a/openmeetings-web/src/main/webapp/css/raw-admin.css b/openmeetings-web/src/main/webapp/css/raw-admin.css
index 08edbb0..0d78975 100644
--- a/openmeetings-web/src/main/webapp/css/raw-admin.css
+++ b/openmeetings-web/src/main/webapp/css/raw-admin.css
@@ -18,217 +18,48 @@
  */
 .adminPanel {
 	min-width: 1070px;
+	display: flex;
+	height: 100%;
+}
+.adminNav {
+	height: var(--nav-height);
+}
+.adminNav .goto {
+	text-overflow: ellipsis;
+	max-width: 25px;
+	overflow: hidden;
+	display: inline-block; 
 }
-/*
-################################
- Column layout admin section
-################################
- */
 .adminPanelColumnTable {
 	display: inline-block;
 	vertical-align: top;
+	height: 100%;
+	width: var(--list-width);
 }
-.adminListTable {
-	max-width: 518px;
-	min-width: 518px;
-}
-.adminListTable tr:nth-child(odd), .adminListTableSmall tr:nth-child(odd), .striped-table .striped-row:nth-child(odd) {
-	opacity: .8;
-}
-.adminListTable tr.deleted {
-	background-image: repeating-linear-gradient(-45deg, transparent, transparent 5px, /* gap */ #cccccc 6px, /* overall width incluing gap */ #cccccc 6px);
-}
-.adminListTable tr:hover, .adminListTableSmall tr:hover, .room-row:hover {
-	/*SHOULD BE MANUALLY IN SYNC WITH THEME .ui-state-hover */
-	border: 1px solid #74b2e2;
-	background-color: #e4f1fb;
-	font-weight: normal;
-	color: #0070a3;
-}
-.adminListTable th.two_column_layout_column1 {
-	width: 136px;
-}
-.adminListTable th.two_column_layout_column2 {
-	width: 354px;
-}
-.adminListTable td.two_column_layout_column1 {
-	width: 136px;
-}
-.adminListTable td.two_column_layout_column2 {
-	width: 354px;
-}
-.adminListTable td div.two_column_layout_divcolumn1 {
-	word-wrap: break-word;
-	width: 136px;
-}
-.adminListTable td div.two_column_layout_divcolumn2 {
-	word-wrap: break-word;
-	width: 354px;
-}
-.adminListTable th.three_column_layout_column1 {
-	width: 96px;
-}
-.adminListTable th.three_column_layout_column2 {
-	width: 150px;
-}
-.adminListTable th.three_column_layout_column3 {
-	width: 244px;
-}
-.rooms .adminListTable th.three_column_layout_column1 {
-	width: 46px;
-}
-.rooms .adminListTable th.three_column_layout_column2 {
-	width: 370px;
-}
-.rooms .adminListTable th.three_column_layout_column3 {
-	width: 74px;
-}
-.adminListTableSmall th.three_column_layout_column1 {
-	width: 50px;
-}
-.adminListTableSmall th.three_column_layout_column2 {
-	width: 50px;
-}
-.adminListTableSmall th.three_column_layout_column3 {
-	width: 218px;
-}
-.adminListTableSmall th.three_column_layout_column4 {
-	width: 150px;
-}
-.adminListTableSmall th.three_column_layout_column5 {
-	width: 50px;
-}
-.adminListTable td.three_column_layout_column1 {
-	width: 96px;
-}
-.adminListTable td.three_column_layout_column2 {
-	width: 150px;
-}
-.adminListTable td.three_column_layout_column3 {
-	width: 244px;
-}
-.adminListTableSmall td.three_column_layout_column1 {
-	width: 50px;
-}
-.adminListTableSmall td.three_column_layout_column2 {
-	width: 50px;
-}
-.adminListTableSmall td.three_column_layout_column3 {
-	width: 218px;
-}
-.adminListTableSmall td.three_column_layout_column4 {
-	width: 150px;
-}
-.adminListTableSmall td.three_column_layout_column5 {
-	width: 50px;
-}
-.adminListTable td div.three_column_layout_divcolumn1 {
-	word-wrap: break-word;
-	width: 96px;
-}
-.adminListTable td div.three_column_layout_divcolumn2 {
-	word-wrap: break-word;
-	width: 150px;
-}
-.adminListTable td div.three_column_layout_divcolumn3 {
-	word-wrap: break-word;
-	width: 244px;
-}
-.rooms .adminListTable td div.three_column_layout_divcolumn1 {
-	word-wrap: break-word;
-	width: 44px;
-}
-.rooms .adminListTable td div.three_column_layout_divcolumn2 {
-	word-wrap: break-word;
-	width: 382px;
-}
-.rooms .adminListTable td div.three_column_layout_divcolumn3 {
-	word-wrap: break-word;
-	width: 74px;
-}
-table.adminListTableSmall td div.three_column_layout_divcolumn1 {
-	width: 50px;
-}
-table.adminListTableSmall td div.three_column_layout_divcolumn2 {
-	width: 50px;
-}
-table.adminListTableSmall td div.three_column_layout_divcolumn3 {
-	width: 218px;
-}
-table.adminListTableSmall td div.three_column_layout_divcolumn4 {
-	width: 150px;
-}
-table.adminListTableSmall td div.three_column_layout_divcolumn5 {
-	width: 50px;
-}
-
-table.adminListTable th.four_column_layout_column1 {
-	width: 96px;
-}
-
-table.adminListTable th.four_column_layout_column2 {
-	width: 130px;
+.adminPanelColumnTable.label .lblNav {
+	height: var(--lbl-nav-height);
 }
 
-table.adminListTable th.four_column_layout_column3 {
-	width: 132px;
-}
-
-table.adminListTable th.four_column_layout_column4 {
-	width: 132px;
-}
-
-table.adminListTable td.four_column_layout_column1 {
-	width: 96px;
-}
-
-table.adminListTable td.four_column_layout_column2 {
-	width: 130px;
-}
-
-table.adminListTable td.four_column_layout_column3 {
-	width: 132px;
-}
-
-table.adminListTable td.four_column_layout_column4 {
-	width: 132px;
-}
-
-table.adminListTable td div.four_column_layout_divcolumn1 {
-	word-wrap: break-word;
-	width: 96px;
-}
-
-table.adminListTable td div.four_column_layout_divcolumn2 {
-	word-wrap: break-word;
-	width: 130px;
-}
-
-table.adminListTable td div.four_column_layout_divcolumn3 {
-	word-wrap: break-word;
-	width: 132px;
-}
-
-table.adminListTable td div.four_column_layout_divcolumn4 {
-	word-wrap: break-word;
-	width: 132px;
-}
-table.adminListTable .one_sixth {
-	width: 16.67%;
-}
 .adminPanelColumnForm {
 	display: inline-block;
 	vertical-align: top;
-	margin-top: 2px;
+	padding-left: 5px;
+	height: calc(100% - var(--buffer-height));
+	min-width: 450px;
+}
+.adminPanelColumnForm .adminForm {
+	height: 100%;
+}
+.adminPanelColumnForm .adminForm .actions {
+	height: var(--actions-height);
+}
+.adminPanelColumnTable .list-table .ui-button.ui-widget {
+	padding: 0;
 }
-
 .adminPanelColumnForm div.scrollcontent {
+	height: calc(100% - var(--actions-height));
 	vertical-align: top;
-	height: 500px;
-	overflow-y: scroll;
-}
-
-.adminForm {
+	overflow-y: auto;
 }
 .adminForm .btn {
 	width: 280px;
@@ -392,3 +223,13 @@ table.adminListTable .one_sixth {
 	right: 0px;
 	background-color: #A1A1A1;
 }
+.addLanguagePanel {
+	display: inline-block;
+}
+.addLanguagePanel select {
+	padding: 0px 0px;
+	border: solid 1px #aacfe4;
+	width: 140px;
+	font-size: 12px;
+	margin-left: 2px;
+}
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 447683c..618588f 100644
--- a/openmeetings-web/src/main/webapp/css/raw-general-rtl.css
+++ b/openmeetings-web/src/main/webapp/css/raw-general-rtl.css
@@ -72,9 +72,6 @@
 form .input {
 	float: right !important;
 }
-#searchUsersTable th, .fht-table th {
-	text-align: right !important;
-}
 .ui-dialog .ui-dialog-title {
 	float: right !important;
 }
@@ -165,6 +162,9 @@ form .input {
 	right: initial !important;
 	left: 3px !important;
 }
+.list-table th {
+	text-align: right !important;
+}
 
 /**** TODO need to be moved to wicket-jquery-ui **************/
 span.css-emoticon.un-transformed-emoticon, span.css-emoticon.animated-emoticon:hover {
diff --git a/openmeetings-web/src/main/webapp/css/raw-general.css b/openmeetings-web/src/main/webapp/css/raw-general.css
index 755cd3b..84570ef 100644
--- a/openmeetings-web/src/main/webapp/css/raw-general.css
+++ b/openmeetings-web/src/main/webapp/css/raw-general.css
@@ -20,6 +20,7 @@ html, body {
 	height: 100%;
 	margin: 0;
 	font-family: Arial, Helvetica, sans-serif;
+	overflow-y: hidden;
 }
 * {
 	box-sizing: content-box; /* IE */
@@ -42,8 +43,8 @@ html, body {
 	background-image: url(images/logo.png);
 	background-repeat: no-repeat;
 	padding-left: 80px;
-	margin-bottom: 10px;
 	margin-left: 20px;
+	height: var(--header-height);
 }
 #topLinks {
 	position: absolute;
@@ -77,18 +78,10 @@ html, body {
 .clickable {
 	cursor: pointer;
 }
-.dragbox-content .tableWrapper {
-	width: auto;
-	height: 100px;
-}
-.dragbox-content .tableWrapper .adminListTable {
-	max-width: none;
-	min-width: 0;
-}
 .help.support h3 {
 	margin-bottom: 5px;
 }
-.tableWrapper, .tableWrapperSmall {
+.tableWrapper {
 	background-color: #FFFFFF;
 	border: solid 1px #aacfe4;
 	width: 536px;
@@ -98,39 +91,35 @@ html, body {
 .tableWrapper {
 	height: 500px;
 }
-
+.user-settings.ui-tabs {
+	height: calc(100% - 10px);
+}
+.user-settings.ui-tabs .ui-tabs-panel {
+	height: calc(100% - 60px);
+}
+.user-settings .edit-profile {
+	height: calc(100% - 10px);
+}
+#searchUsersTable.list-table {
+	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
 }
-
-.addLanguagePanel {
-	display: inline-block;
-}
-
-.addLanguagePanel select {
-	padding: 0px 0px;
-	border: solid 1px #aacfe4;
-	width: 140px;
-	font-size: 12px;
-	margin-left: 2px;
-}
-
 .pagedEntityListPanel {
 	margin-left: 2px;
 	display: inline-block;
 }
-
 .searchForm {
 	display: inline-block;
 	vertical-align: top;
@@ -239,8 +228,7 @@ html, body {
 	min-width: 150px;
 }
 #contents {
-}
-#contents .dragbox-content {
+	height: calc(100% - var(--menu-height));
 }
 #feedcontainer {
 	overflow: auto;
@@ -440,10 +428,6 @@ select.messages.selector {
 .fht-tbody {
 	background-color: white;
 }
-#searchUsersTable th, .fht-table th {
-	font-weight: bold !important;
-	text-align: left;
-}
 #ui-datepicker-div {
 	z-index: 100 !important;
 }
@@ -520,6 +504,9 @@ select.messages.selector {
 .user.info.panel fieldset table, .user.info.panel fieldset table textarea {
 	width: 100%;
 }
+#topControls {
+	height: var(--menu-height);
+}
 #topControls #wicketDebugBar {
 	right: auto; /* IE */
 	top: auto; /* IE */
@@ -588,10 +575,101 @@ form .input {
 	width: 75%;
 	vertical-align: middle;
 }
- /**** TODO need to be unified with other icons used ****/
-div.formSaveBar {
-	height: 35px;
+.col-1 {
+	width: 8.3333%;
+}
+.col-2 {
+	width: 16.6666%;
+}
+.col-3 {
+	width: 24.9999%;
+}
+.col-4 {
+	width: 33.3332%;
+}
+.col-5 {
+	width: 41.6665%;
+}
+.col-6 {
+	width: 49.9998%;
+}
+.col-7 {
+	width: 58.3331%;
+}
+.col-8 {
+	width: 66.6664%;
+}
+.col-9 {
+	width: 74.9997%;
+}
+.col-10 {
+	width: 83.333%;
+}
+.col-11 {
+	width: 91.6663%;
+}
+.col-12 {
+	width: 100%;
+}
+.col-wrapper {
+	word-wrap: break-word;
+}
+.list-table {
+	display: flex;
+	flex-flow: column;
+	width: 100%;
+	max-width: 518px;
+	min-width: 518px;
+	height: calc(100% - var(--nav-height) - var(--lbl-nav-height) - var(--buffer-height));
+}
+.list-table thead {
+	/* head takes the height it requires, 
+	and it's not scaled when table is resized */
+	flex: 0 0 auto;
+	width: calc(100% - 1.0em);
+}
+.list-table tbody {
+	/* body takes all the remaining available space */
+	flex: 1 1 auto;
+	display: block;
+	overflow-y: scroll;
+	overflow-x: hidden;
+	background-color: white;
+}
+.list-table tbody tr {
+	width: 100%;
+}
+.list-table thead, .list-table tbody tr {
+	display: table;
+	table-layout: fixed;
+}
+.list-table th {
+	overflow: hidden;
+	text-align: left;
+}
+.bottom-bumper {
+	height: 30px;
+}
+.list-table.small {
+	height: 150px;
+}
+.list-table.full-width {
+	max-width: initial;
+}
+.list-table tr:nth-child(odd), .striped-table .striped-row:nth-child(odd) {
+	opacity: .8;
+}
+.list-table tr.deleted {
+	background-image: repeating-linear-gradient(-45deg, transparent, transparent 5px, /* gap */ #cccccc 6px, /* overall width incluing gap */ #cccccc 6px);
+}
+.list-table tr:hover, .room-row:hover {
+	/*SHOULD BE MANUALLY IN SYNC WITH THEME .ui-state-hover */
+	border: 1px solid #74b2e2;
+	background-color: #e4f1fb;
+	font-weight: normal;
+	color: #0070a3;
 }
+/**** TODO need to be unified with other icons used ****/
 .hash-panel-main {
 	width: 100%;
 	height: 100%;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.java b/openmeetings-web/src/main/webapp/css/raw-variables.css
similarity index 66%
copy from openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.java
copy to openmeetings-web/src/main/webapp/css/raw-variables.css
index 635c178..dc2552f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmPagingNavigator.java
+++ b/openmeetings-web/src/main/webapp/css/raw-variables.css
@@ -16,16 +16,28 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.common;
-
-import org.apache.wicket.ajax.markup.html.navigation.paging.AjaxPagingNavigator;
-import org.apache.wicket.markup.html.navigation.paging.IPageable;
-
-public class OmPagingNavigator extends AjaxPagingNavigator {
-	private static final long serialVersionUID = 1L;
-
-	public OmPagingNavigator(String id, IPageable pageable) {
-		super(id, pageable);
-	}
-
+body {
+	--header-height: 50px;
+	--menu-height: 36px;
+}
+body.no-header {
+	--header-height: 0px;
+}
+body.no-menu {
+	--menu-height: 0px;
+}
+.adminPanel {
+	--lbl-nav-height: 0px;
+	--nav-height: 30px;
+	--list-width: 518px;
+	--buffer-height: 4px;
+}
+.adminPanelColumnTable.label {
+	--lbl-nav-height: 40px;
+}
+.adminPanelColumnForm {
+	--actions-height: 0px;
+}
+.adminPanelColumnForm .adminForm {
+	--actions-height: 40px;
 }