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 2017/11/21 17:03:17 UTC

openmeetings git commit: [OPENMEETINGS-1768] initial commit, code is generalized

Repository: openmeetings
Updated Branches:
  refs/heads/4.0.x aad288e80 -> 73472bf0b


[OPENMEETINGS-1768] initial commit, code is generalized


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/73472bf0
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/73472bf0
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/73472bf0

Branch: refs/heads/4.0.x
Commit: 73472bf0b62068b4b87288320254a8cfc660aff6
Parents: aad288e
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Wed Nov 22 00:03:08 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Wed Nov 22 00:03:08 2017 +0700

----------------------------------------------------------------------
 .../web/app/Application.properties.xml          |  1 +
 .../web/app/Application_ar.properties.xml       |  1 +
 .../web/app/Application_bg.properties.xml       |  1 +
 .../web/app/Application_ca.properties.xml       |  1 +
 .../web/app/Application_cs.properties.xml       |  1 +
 .../web/app/Application_da.properties.xml       |  1 +
 .../web/app/Application_de.properties.xml       |  1 +
 .../web/app/Application_el.properties.xml       |  1 +
 .../web/app/Application_es.properties.xml       |  1 +
 .../web/app/Application_fa.properties.xml       |  1 +
 .../web/app/Application_fi.properties.xml       |  1 +
 .../web/app/Application_fr.properties.xml       |  1 +
 .../web/app/Application_gl.properties.xml       |  1 +
 .../web/app/Application_he.properties.xml       |  1 +
 .../web/app/Application_hu.properties.xml       |  1 +
 .../web/app/Application_id.properties.xml       |  1 +
 .../web/app/Application_it.properties.xml       |  1 +
 .../web/app/Application_ja.properties.xml       |  1 +
 .../web/app/Application_ko.properties.xml       |  1 +
 .../web/app/Application_nl.properties.xml       |  1 +
 .../web/app/Application_pl.properties.xml       |  1 +
 .../web/app/Application_pt.properties.xml       |  1 +
 .../web/app/Application_pt_BR.properties.xml    |  1 +
 .../web/app/Application_ru.properties.xml       |  1 +
 .../web/app/Application_sk.properties.xml       |  1 +
 .../web/app/Application_sv.properties.xml       |  1 +
 .../web/app/Application_th.properties.xml       |  1 +
 .../web/app/Application_tr.properties.xml       |  1 +
 .../web/app/Application_uk.properties.xml       |  1 +
 .../web/app/Application_zh_CN.properties.xml    |  1 +
 .../web/app/Application_zh_TW.properties.xml    |  1 +
 .../openmeetings/web/common/MainPanel.java      |  4 +-
 .../web/common/OmAjaxClientInfoBehavior.java    |  5 ++-
 .../org/apache/openmeetings/web/common/main.js  | 37 ++++++++++-------
 .../web/room/activities/ActivitiesPanel.html    |  3 ++
 .../web/room/activities/activities.js           | 18 +++++++++
 .../org/apache/openmeetings/web/room/room.js    |  6 +--
 .../apache/openmeetings/web/room/settings.js    | 10 +----
 .../openmeetings/web/room/wb/interview-area.js  |  2 +-
 .../apache/openmeetings/web/room/wb/wb-area.js  |  2 +-
 .../apache/openmeetings/web/room/wb/wb-board.js | 14 +++----
 .../web/user/calendar/CalendarPanel.java        |  4 +-
 .../web/user/calendar/calendar-functions.js     |  6 +--
 .../apache/openmeetings/web/user/chat/chat.js   | 42 ++++++++------------
 .../src/main/webapp/css/activities.css          |  4 ++
 45 files changed, 120 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
index e614a42..77282b5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
index d5421ec..5ea995c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
index 991011d..8fe30e0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
index e1e7103..02bbb2e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
index d92ebc1..ee6b0b5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
index 053c6c0..36107b1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
index 9afcfb5..e0b0cbb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
@@ -992,4 +992,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
index 5af1361..1f2d69d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
index fe4a459..84933c6 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
@@ -985,4 +985,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
index 8e9c0eb..090fcce 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
index 5948bd7..2942b2a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
index cb7d890..4a6ba5e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
@@ -979,4 +979,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
index 37d461d..99a907b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_he.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_he.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_he.properties.xml
index e614a42..77282b5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_he.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_he.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
index fc6aab5..e8bfda3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
@@ -975,4 +975,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml
index e680966..ac7615d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
index 9a33420..2c3acea 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
@@ -988,4 +988,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
index 19f3f81..11d3119 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
index d654aed..2668091 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
index aa03edc..a42b8ad 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
index 12b5531..528bd80 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
index 374b2ee..1decc1e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
index 066cd50..eb943a8 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
index 09227be..89e2ced 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
@@ -988,4 +988,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[По ширине страницы]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Кликните чтобы "прилепить" панель]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Кликните чтобы "отлепить" панель]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Авто-очистка]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
index f8e3e8d..ab62305 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
index 8b7b0c7..62a780e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
index 42acf92..7746945 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
index 539fe40..e727980 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
index 8605337..41a0822 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
@@ -988,4 +988,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
index 78ffef4..99b00b4 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
@@ -977,4 +977,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
index e82bbc6..9f1c699 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
@@ -987,4 +987,5 @@ see http://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="zoom.pageWidth"><![CDATA[Page Width]]></entry>
 	<entry key="label.dock.panel"><![CDATA[Click to dock panel]]></entry>
 	<entry key="label.undock.panel"><![CDATA[Click to undock panel]]></entry>
+	<entry key="activities.autoclean"><![CDATA[Auto-clean]]></entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
index 21daec9..bb5c9cc 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
@@ -49,8 +49,8 @@ import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.menu.MainMenuItem;
-import org.apache.openmeetings.web.common.menu.OmMenuItem;
 import org.apache.openmeetings.web.common.menu.MenuPanel;
+import org.apache.openmeetings.web.common.menu.OmMenuItem;
 import org.apache.openmeetings.web.pages.MainPage;
 import org.apache.openmeetings.web.user.AboutDialog;
 import org.apache.openmeetings.web.user.InviteUserToRoomDialog;
@@ -221,6 +221,7 @@ public class MainPanel extends Panel {
 		} else {
 			add(new EmptyPanel("dev").setVisible(false));
 		}
+		add(new OmAjaxClientInfoBehavior());
 		add(about, chat = new ChatPanel("chatPanel"));
 		add(newMessage = new MessageDialog("newMessageDialog", new CompoundPropertyModel<>(new PrivateMessage())) {
 			private static final long serialVersionUID = 1L;
@@ -291,7 +292,6 @@ public class MainPanel extends Panel {
 				response.render(new PriorityHeaderItem(getNamedFunction("inviteUser", this, explicit(PARAM_USER_ID))));
 			}
 		});
-		add(new OmAjaxClientInfoBehavior());
 		topLinks.add(new ConfirmableAjaxBorder("logout", getString("310"), getString("634")) {
 			private static final long serialVersionUID = 1L;
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmAjaxClientInfoBehavior.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmAjaxClientInfoBehavior.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmAjaxClientInfoBehavior.java
index d13434c..41f4e2b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmAjaxClientInfoBehavior.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmAjaxClientInfoBehavior.java
@@ -23,6 +23,8 @@ import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxClientInfoBehavior;
 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.markup.html.pages.BrowserInfoForm;
 import org.apache.wicket.protocol.http.request.WebClientInfo;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
@@ -33,7 +35,8 @@ public class OmAjaxClientInfoBehavior extends AjaxClientInfoBehavior {
 	@Override
 	public void renderHead(Component component, IHeaderResponse response) {
 		super.renderHead(component, response);
-		response.render(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(MainPanel.class, "main.js")));
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(BrowserInfoForm.JS)));
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(MainPanel.class, "main.js"))));
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js
index add49b0..3dd0ac8 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js
@@ -1,20 +1,29 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") http://www.apache.org/licenses/LICENSE-2.0 */
-var isRtl = "rtl" === $('html').attr('dir');
+var Settings = (function() {
+	const key = 'openmeetings';
+	function _load() {
+		let s = {};
+		try {
+			s = JSON.parse(localStorage.getItem(key)) || s;
+		} catch (e) {
+			//no-op
+		}
+		return s;
+	}
+	function _save(s) {
+		const _s = JSON.stringify(s);
+		localStorage.setItem(key, _s);
+		return _s;
+	}
 
+	return {
+		isRtl: "rtl" === $('html').attr('dir')
+		, load: _load
+		, save: _save
+	};
+})();
 Wicket.BrowserInfo.collectExtraInfo = function(info) {
 	const l = window.location;
 	info.codebase = l.origin + l.pathname;
-	info.settings = JSON.stringify(getSettings());
+	info.settings = Settings.load();
 };
-function getSettings() {
-	let s = localStorage.getItem("openmeetings");
-	if (!!s) {
-		s = JSON.parse(s);
-	}
-	return s || {};
-}
-function saveSetting(name, val) {
-	const s = getSettings();
-	s[name] = val;
-	localStorage.setItem("openmeetings", JSON.stringify(s));
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
index d9b2c29..08ee9d6 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
@@ -23,6 +23,9 @@
 	<div class="ui-widget-header">
 		<div onclick="Activities.toggle();" class="clickable control block ui-widget-header ui-state-active"><div class="ui-icon ui-icon-carat-1-n sort-icon"></div><div class="label"><wicket:message key="1363"/></div></div>
 	</div>
+	<div class="ctrl ui-widget-content">
+		<div><input type="checkbox" id="activity-auto-clean"/><label for="activity-auto-clean"><wicket:message key="activities.autoclean"/></label></div>
+	</div>
 	<div wicket:id="container" class="area ui-widget-content">
 		<div wicket:id="activities" class="activity item ui-helper-clearfix ui-corner-all">
 			<span wicket:id="close" class="ui-icon ui-icon-close ui-corner-all clickable" wicket:message="title:85"></span>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
index f7059bb..0f9e191 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
@@ -3,6 +3,17 @@ var Activities = function() {
 	const closedHeight = "20px";
 	let activities, openedHeight = "345px", inited = false;
 
+	function _load() {
+		const s = Settings.load();
+		if (typeof s.activity === 'undefined') {
+			s.activity = {};
+		}
+		return s;
+	}
+	function _updateClean(s, a) {
+		const clean = s.activity.clean === true;
+		a.prop('checked', clean);
+	}
 	function isClosed() {
 		return activities.height() < 24;
 	}
@@ -39,6 +50,13 @@ var Activities = function() {
 					openedHeight = ui.size.height + "px";
 				}
 			});
+			const aclean = $('#activity-auto-clean').change(function() {
+				const s = _load();
+				s.activity.clean = $(this).prop('checked');
+				Settings.save(s);
+				_updateClean(s, $(this));
+			});
+			_updateClean(_load(), aclean);
 			inited = true;
 		}
 		, hightlight: function() {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
index c9db35d..d20509b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
@@ -564,7 +564,7 @@ var VideoManager = (function() {
 	return self;
 })();
 var Room = (function() {
-	const self = {}, isRtl = "rtl" === $('html').attr('dir'), sbSide = isRtl ? 'right' : 'left';
+	const self = {}, sbSide = Settings.isRtl ? 'right' : 'left';
 	let options, menuHeight, chat, sb, dock;
 
 	function _init(_options) {
@@ -598,7 +598,7 @@ var Room = (function() {
 					_setSize();
 				});
 		});
-		dock.addClass(isRtl ? 'align-left' : 'align-right').attr('title', dock.data('ttl-undock'))
+		dock.addClass(Settings.isRtl ? 'align-left' : 'align-right').attr('title', dock.data('ttl-undock'))
 			.button('option', 'label', dock.data('ttl-undock'))
 			.button('refresh');
 		menuHeight = menu.length === 0 ? 0 : menu.height();
@@ -703,7 +703,7 @@ var Room = (function() {
 	}
 	function _sbAddResizable() {
 		sb.resizable({
-			handles: isRtl ? 'w' : 'e'
+			handles: Settings.isRtl ? 'w' : 'e'
 			, stop: function() {
 				_setSize();
 			}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js
index 429ac30..a6f5c38 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/settings.js
@@ -3,20 +3,14 @@ var VideoSettings = (function() {
 	let vs, lm, swf, s, cam, mic, res, o
 		, vidScroll, recBtn, playBtn, recAllowed = false;
 	function _load() {
-		s = {};
-		try {
-			s = JSON.parse(localStorage.getItem('openmeetings')) || s;
-		} catch (e) {
-			//no-op
-		}
+		s = Settings.load();
 		if (!s.video) {
 			s.video = {};
 		}
 		return s;
 	}
 	function _save(refr) {
-		const _s = JSON.stringify(s);
-		localStorage.setItem('openmeetings', _s);
+		const _s = Settings.save(s);
 		if (typeof avSettings === 'function') {
 			avSettings(_s);
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interview-area.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interview-area.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interview-area.js
index c559af5..ad63f30 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interview-area.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interview-area.js
@@ -68,7 +68,7 @@ var InterviewWbArea = function() {
 	function _resize(sbW, chW, w, h) {
 		if (!container || !_inited) return;
 		const hh = h - 5;
-		container.width(w).height(h).css('left', (isRtl ? chW : sbW) + "px");
+		container.width(w).height(h).css('left', (Settings.isRtl ? chW : sbW) + "px");
 		area.width(w).height(hh);
 	}
 	function _setRecStartEnabled(en) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-area.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-area.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-area.js
index 3b17d33..a6ce597 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-area.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-area.js
@@ -286,7 +286,7 @@ var DrawWbArea = function() {
 	};
 	self.resize = function(sbW, chW, w, h) {
 		const hh = h - 5;
-		container.width(w).height(h).css('left', (isRtl ? chW : sbW) + "px");
+		container.width(w).height(h).css('left', (Settings.isRtl ? chW : sbW) + "px");
 		if (!container || !_inited) return;
 		area.width(w).height(hh);
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js
index 2b8144a..a9590ca 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js
@@ -205,7 +205,7 @@ var Wb = function() {
 					, containment: 'body'
 					, start: function() {
 						if (!!s.css('bottom')) {
-							s.css('bottom', '').css(isRtl ? 'left' : 'right', '');
+							s.css('bottom', '').css(Settings.isRtl ? 'left' : 'right', '');
 						}
 					}
 					, drag: function() {
@@ -555,18 +555,18 @@ var Wb = function() {
 			role = _role;
 			const sc = a.find('.scroll-container');
 			z = $('#wb-zoom').clone().attr('id', '')
-				.attr('style', 'position: absolute; top: 0px; ' + (isRtl ? 'right' : 'left') + ': 80px;');
+				.attr('style', 'position: absolute; top: 0px; ' + (Settings.isRtl ? 'right' : 'left') + ': 80px;');
 			if (role === NONE) {
 				t = $('#wb-tools-readonly').clone().attr('id', '');
 				sc.off('scroll', scrollHandler);
 			} else {
 				t = $('#wb-tools').clone().attr('id', '');
 				s = $("#wb-settings").clone().attr('id', '')
-					.attr('style', 'display: none; bottom: 100px; ' + (isRtl ? 'left' : 'right') + ': 100px;');
+					.attr('style', 'display: none; bottom: 100px; ' + (Settings.isRtl ? 'left' : 'right') + ': 100px;');
 				a.append(s);
 				sc.on('scroll', scrollHandler);
 			}
-			t.attr('style', 'position: absolute; top: 20px; ' + (isRtl ? 'left' : 'right') + ': 20px;');
+			t.attr('style', 'position: absolute; top: 20px; ' + (Settings.isRtl ? 'left' : 'right') + ': 20px;');
 			a.append(t).append(z);
 			showCurrentSlide();
 			t = a.find('.tools'), s = a.find(".wb-settings");
@@ -602,15 +602,15 @@ var Wb = function() {
 	wb.resize = function() {
 		if (t.position().left + t.width() > a.width()) {
 			t.position({
-				my: (isRtl ? 'left' : 'right')
-				, at: (isRtl ? 'left' : 'right') + '-20'
+				my: (Settings.isRtl ? 'left' : 'right')
+				, at: (Settings.isRtl ? 'left' : 'right') + '-20'
 				, of: '#' + a[0].id
 				, collision: "fit"
 			});
 		}
 		if (z.position().left + z.width() > a.width()) {
 			z.position({
-				my: (isRtl ? 'right' : 'left') + ' top'
+				my: (Settings.isRtl ? 'right' : 'left') + ' top'
 				, at: "center top"
 				, of: '#' + a[0].id
 				, collision: "fit"

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
index 7afe918..85c7d33 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
@@ -73,7 +73,6 @@ public class CalendarPanel extends UserBasePanel {
 	private static final Logger log = Red5LoggerFactory.getLogger(CalendarPanel.class, getWebAppRootKey());
 	private static final long serialVersionUID = 1L;
 	private static final String JS_MARKUP = "setCalendarHeight();";
-	private final String javaScriptAddDatepicker;
 	private final AbstractAjaxTimerBehavior refreshTimer = new AbstractAjaxTimerBehavior(Duration.seconds(10)) {
 		private static final long serialVersionUID = 1L;
 
@@ -109,7 +108,6 @@ public class CalendarPanel extends UserBasePanel {
 		add(dialog);
 
 		boolean isRtl = isRtl();
-		javaScriptAddDatepicker = String.format("addCalButton(%s, 'datepicker');", isRtl);
 		Options options = new Options();
 		options.set("isRTL", isRtl);
 		options.set("header", isRtl ? "{left: 'agendaDay,agendaWeek,month', center: 'title', right: 'today nextYear,next,prev,prevYear'}"
@@ -348,7 +346,7 @@ public class CalendarPanel extends UserBasePanel {
 		Optional<AjaxRequestTarget> target = getRequestCycle().find(AjaxRequestTarget.class);
 		if (target.isPresent()) {
 			target.get().appendJavaScript(JS_MARKUP);
-			target.get().appendJavaScript(javaScriptAddDatepicker);
+			target.get().appendJavaScript("addCalButton('datepicker');");
 		} else {
 			response.render(JavaScriptHeaderItem.forScript(JS_MARKUP, this.getId()));
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
index 49f4e4e..af4bc54 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/calendar-functions.js
@@ -19,12 +19,12 @@ function toggleDatePicker(id) {
 	dp.datepicker(dp.datepicker("widget").is(":visible") ? "hide" : "show");
 	return false;
 }
-function addCalButton(rtl, id) {
+function addCalButton(id) {
 	const my_button =
 		'<button class="fc-button fc-state-default fc-corner-right fc-corner-left" onclick="return toggleDatePicker(\'' + id + '\');">' +
 		'<input type="text" id="' + id + '" /></button>';
 
-	if (rtl) {
+	if (Settings.isRtl) {
 		$(".fc .fc-toolbar .fc-right").prepend(my_button);
 	} else {
 		$(".fc .fc-toolbar .fc-left").append(my_button);
@@ -43,7 +43,7 @@ function addCalButton(rtl, id) {
 		dayNamesMin: $('#${markupId}').fullCalendar("option","dayNamesShort"),
 		monthNames: $('#${markupId}').fullCalendar("option","monthNames"),
 		monthNamesShort: $('#${markupId}').fullCalendar("option","monthNamesShort"),
-		isRTL: rtl,
+		isRTL: Settings.isRtl,
 		onChangeMonthYear: function(year, month, inst) {
 			$('#${markupId}').fullCalendar('gotoDate', year + '-' + ('0' + month).slice(-2) + '-' + inst.selectedDay);
 		},

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
index 50d582d..1faaaf0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
@@ -1,8 +1,7 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") http://www.apache.org/licenses/LICENSE-2.0 */
 var Chat = function() {
-	const isRtl = "rtl" === $('html').attr('dir')
-		, align = isRtl ? 'align-right' : 'align-left'
-		, alignIco = isRtl ? 'align-left' : 'align-right'
+	const align = Settings.isRtl ? 'align-right' : 'align-left'
+		, alignIco = Settings.isRtl ? 'align-left' : 'align-right'
 		, tabTemplate = "<li><a href='#{href}'>#{label}</a></li>"
 		, msgTemplate = "<div class='clear msg-row' id='chat-msg-id-#{id}'><img class='profile " + align + "' src='#{imgSrc}'/><span class='from " + align + "' data-user-id='#{userId}'>#{from}</span><span class='" + align + "'>#{msg}</span><span class='date " + alignIco + "'>#{sent}</span></div>"
 		, acceptTemplate = "<div class='tick om-icon " + alignIco + " clickable' data-msgid='#{msgid}' data-roomid='#{roomid}' onclick='const e=$(this);chatActivity('accept',e.data(\"roomid\"),e.data(\"msgid\"));e.parent().remove();'></div>"
@@ -16,12 +15,12 @@ var Chat = function() {
 		, emoticon = new CSSEmoticon()
 		, doneTypingInterval = 5000 //time in ms, 5 second for example
 		, iconOpen = 'ui-icon-caret-1-n'
-		, iconOpenRoom = 'ui-icon-caret-1-' + (isRtl ? 'e' : 'w')
+		, iconOpenRoom = 'ui-icon-caret-1-' + (Settings.isRtl ? 'e' : 'w')
 		, iconClose = 'ui-icon-caret-1-s'
-		, iconCloseRoom = 'ui-icon-caret-1-' + (isRtl ? 'w' : 'e')
+		, iconCloseRoom = 'ui-icon-caret-1-' + (Settings.isRtl ? 'w' : 'e')
 		;
 	let p, pp, ctrl, icon, tabs, openedHeight = "345px", openedWidth = "300px", allPrefix = "All"
-		, roomPrefix = "Room ", typingTimer, audio, s, roomMode = false, globalWidth = 600
+		, roomPrefix = "Room ", typingTimer, audio, roomMode = false, globalWidth = 600
 		, editor = $('#chatMessage .wysiwyg-editor')
 		;
 
@@ -34,21 +33,13 @@ var Chat = function() {
 		};
 	}
 	function _load() {
-		s = {};
-		try {
-			s = JSON.parse(localStorage.getItem('openmeetings')) || s;
-		} catch (e) {
-			//no-op
-		}
-		if (!s.chat) {
+		const s = Settings.load();
+		if (typeof s.chat === 'undefined') {
 			s.chat = {};
 		}
+		return s;
 	}
-	function _save() {
-		const _s = JSON.stringify(s);
-		localStorage.setItem('openmeetings', _s);
-	}
-	function _updateBtn(a) {
+	function _updateBtn(s, a) {
 		const muted = s.chat.muted === true;
 		a.removeClass('sound' + (muted ? '' : '-mute')).addClass('sound' + (muted ? '-mute' : ''))
 				.attr('title', a.data(muted ? 'sound-enabled' : 'sound-muted'));
@@ -76,14 +67,14 @@ var Chat = function() {
 				row = $('<tr></tr>');
 			}
 		}
-		_load();
 		const a = $('#chat .audio');
-		_updateBtn(a);
+		_updateBtn(_load(), a);
 		$('#chat .chat-btn').hover(function(){ $(this).addClass('ui-state-hover') }, function(){ $(this).removeClass('ui-state-hover') });
-		a.click(function() {
+		a.off().click(function() {
+			const s = _load();
 			s.chat.muted = !s.chat.muted;
-			_updateBtn(a);
-			_save();
+			_updateBtn(s, a);
+			Settings.save(s);
 		});
 	}
 	function isClosed() {
@@ -142,7 +133,7 @@ var Chat = function() {
 			p.removeClass('room')
 				.off('mouseenter mouseleave')
 				.resizable({
-					handles: 'n, ' + (isRtl ? 'w' : 'e')
+					handles: 'n, ' + (Settings.isRtl ? 'w' : 'e')
 					, disabled: isClosed()
 					, alsoResize: "#chatPopup, #chat .ui-tabs .ui-tabs-panel.messageArea"
 					, minHeight: 195
@@ -196,6 +187,7 @@ var Chat = function() {
 		if ($('#chat').length > 0 && m && m.type === "chat") {
 			if (isClosed()) {
 				ctrl.addClass('ui-state-highlight');
+				const s = _load();
 				if (p.is(':visible') && s.chat.muted !== true) {
 					const playPromise = audio.play();
 
@@ -249,7 +241,7 @@ var Chat = function() {
 	function _setOpened() {
 		p.addClass('opened').off('mouseenter mouseleave');
 		p.resizable({
-			handles: (isRtl ? 'e' : 'w')
+			handles: (Settings.isRtl ? 'e' : 'w')
 			, alsoResize: '#chatPopup'
 			, stop: function(event, ui) {
 				p.css({'left': ''});

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/73472bf0/openmeetings-web/src/main/webapp/css/activities.css
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/activities.css b/openmeetings-web/src/main/webapp/css/activities.css
index 2ef9187..dafbb24 100644
--- a/openmeetings-web/src/main/webapp/css/activities.css
+++ b/openmeetings-web/src/main/webapp/css/activities.css
@@ -31,6 +31,10 @@
 	display: inline-block;
 	padding-left: 20px;
 }
+#activities .ctrl {
+	padding-left: 20px;
+	padding-right: 20px;
+}
 #activities .area {
 	height: 319px;
 	overflow-y: auto;