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

[openmeetings] branch master updated: [OPENMEETINGS-2335] save WB is refactored

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 a30bad4  [OPENMEETINGS-2335] save WB is refactored
a30bad4 is described below

commit a30bad4d92198503aea8f108bd671cc5ead87b9a
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sun Jun 7 00:31:30 2020 +0700

    [OPENMEETINGS-2335] save WB is refactored
---
 .../web/app/Application.properties.xml             |  1 -
 .../web/app/Application_ar.properties.xml          |  1 -
 .../web/app/Application_bg.properties.xml          |  1 -
 .../web/app/Application_bn.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_hi.properties.xml          |  1 -
 .../web/app/Application_hu.properties.xml          |  1 -
 .../web/app/Application_in.properties.xml          |  1 -
 .../web/app/Application_it.properties.xml          |  1 -
 .../web/app/Application_iw.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_ta.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 -
 .../apache/openmeetings/web/room/RoomPanel.java    | 40 +++++-----
 .../apache/openmeetings/web/room/wb/WbAction.java  |  2 +-
 .../apache/openmeetings/web/room/wb/WbPanel.html   |  4 -
 .../apache/openmeetings/web/room/wb/WbPanel.java   | 37 +--------
 .../apache/openmeetings/web/room/wb/raw-wb-area.js | 44 ++++++-----
 .../openmeetings/webservice/WbWebService.java      | 88 ++++++++++++++++++++++
 40 files changed, 136 insertions(+), 113 deletions(-)

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 e02ef04..e4217a5 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Download as PDF]]></entry>
 	<entry key="download.png"><![CDATA[Download as PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 9bcf3d6..e7ba2b3 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Download as PDF]]></entry>
 	<entry key="download.png"><![CDATA[Download as PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 696dd5c..bfe2fb4 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Сваляне в PDF]]></entry>
 	<entry key="download.png"><![CDATA[Сваляне в PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bn.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bn.properties.xml
index 807ca56..b5594c5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bn.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bn.properties.xml
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Download as PDF]]></entry>
 	<entry key="download.png"><![CDATA[Download as PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 250527a..1e4fe73 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Descarregar com PDF]]></entry>
 	<entry key="download.png"><![CDATA[Descarregar com PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 76d3855..3f57247 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Načti jako PDF]]></entry>
 	<entry key="download.png"><![CDATA[Načti jako PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 c609801..60da6af 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Download som PDF]]></entry>
 	<entry key="download.png"><![CDATA[Download som PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 07b468a..2bbf082 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Wollen sie wirklich alle Temporären Dateien löschen? Diese Vorgang kann nicht rückgängig gemacht werden.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[Allgemeine Admin-Funktionen]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin-Funktionen]]></entry>
-	<entry key="download.image.steps"><![CDATA[Bitte Rechtsklick auf das Bild und "Speichere Bild als" wählen]]></entry>
 	<entry key="download.pdf"><![CDATA[Download als PDF]]></entry>
 	<entry key="download.png"><![CDATA[Download als PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Benutzername/E-Mail und/oder Passwort ist/sind falsch.]]></entry>
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 40600ee..3fcbf94 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Αποθήκευση ως PDF]]></entry>
 	<entry key="download.png"><![CDATA[Αποθήκευση ως PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 4913676..cd8e5e2 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[¿Estás seguro de querer borrar todos los ficheros temporales? Esta operación no se puede deshacer.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[Funciones de administración general]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Funciones de administración]]></entry>
-	<entry key="download.image.steps"><![CDATA[Haz click derecho sobre la imagen y elige "Salvar como"]]></entry>
 	<entry key="download.pdf"><![CDATA[Descargar como PDF]]></entry>
 	<entry key="download.png"><![CDATA[Descargar como PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Usuario/correo y/o contraseña son incorrectos]]></entry>
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 ed053dd..291ea66 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[مطمئن هستید می خواهید تمام پوشه های جاری را حذف کنید؟این عملیات نمی تواند انجام نشده بماند.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[عملیات کلی مدیر]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[عملکردهای مدیر]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[دریافت به عنوان PDF]]></entry>
 	<entry key="download.png"><![CDATA[بارگذاری به عنوان PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[نام کاربری/پست الکترونیک و/یا رمز عبور صحیح نیست]]></entry>
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 df762fd..e51b577 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Lataa PDF]]></entry>
 	<entry key="download.png"><![CDATA[Lataa PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 e56a363..53e2995 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Etes-vous sur de vouloir supprimer tous les fichiers temporaires ? Cette opération ne peut être annulée.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[Fonctions d'admin générales]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Fonctions d'admin]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Télécharger en PDF]]></entry>
 	<entry key="download.png"><![CDATA[Télécharger en PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 5ae80e5..320cba3 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Descargar como PDF]]></entry>
 	<entry key="download.png"><![CDATA[Descargar como PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hi.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hi.properties.xml
index 9af9219..c81e1eb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hi.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hi.properties.xml
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Download as PDF]]></entry>
 	<entry key="download.png"><![CDATA[Download as PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 bdfe5b6..392f3c5 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Letöltés mint PDF]]></entry>
 	<entry key="download.png"><![CDATA[Letöltés mint PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_in.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_in.properties.xml
index 78bbcc8..da64b25 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_in.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_in.properties.xml
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Download as PDF]]></entry>
 	<entry key="download.png"><![CDATA[Download as PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 5485bbd..8cacd5b 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Sei sicuro di voler cancellare tutti i file temporanei? Questa operazione non potrà essere annullata.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[Funzioni generali per l'Amministratore]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Funzioni Amministratore]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Scarica come PDF]]></entry>
 	<entry key="download.png"><![CDATA[Scarica come PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_iw.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_iw.properties.xml
index 733818f..5605491 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_iw.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_iw.properties.xml
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Download as PDF]]></entry>
 	<entry key="download.png"><![CDATA[Download as PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 fceb117..1894f11 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[全ての一時ファイルを削除してよろしいですか?(この作業は実行後、元に戻せません)]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[一般管理機能]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[管理機能]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[PDFとしてダウンロード]]></entry>
 	<entry key="download.png"><![CDATA[PNGとしてダウンロード]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[ユーザー名/電子メール・アドレス、またはパスワードが不正です。]]></entry>
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 f25e3b8..abdbcf9 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Download as PDF]]></entry>
 	<entry key="download.png"><![CDATA[Download as PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 1d593d9..fe4edeb 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Opslaan als PDF]]></entry>
 	<entry key="download.png"><![CDATA[Opslaan als PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 5e0b069..562e104 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Pobierz jako PDF]]></entry>
 	<entry key="download.png"><![CDATA[Pobierz jako PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Nazwa użytkownika / adres e-mail i / lub hasło są nieprawidłowe.]]></entry>
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 ca4aa37..1ce59c5 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Download as PDF]]></entry>
 	<entry key="download.png"><![CDATA[Download as PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 1791f49..0419f5d 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Funções Administrativas]]></entry>
-	<entry key="download.image.steps"><![CDATA[Clique com o botão direito na imagem e escolha "Salvar imagem como"]]></entry>
 	<entry key="download.pdf"><![CDATA[Download como PDF]]></entry>
 	<entry key="download.png"><![CDATA[Download como PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 9d4d10a..a918ec3 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Вы уверены что хотите удалить все временные файлы? Эту операцию нельзя будет отменить.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[Основные административные фукции]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Административные функции]]></entry>
-	<entry key="download.image.steps"><![CDATA[Кликните правой кнопкой на картинке и выберите "Сохранить как"]]></entry>
 	<entry key="download.pdf"><![CDATA[Сохранить как PDF]]></entry>
 	<entry key="download.png"><![CDATA[Сохранить как PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Имя пользователя/e-mail и/или пароль не верны.]]></entry>
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 0ba987b..16b3d38 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Stiahnúť ako PDF]]></entry>
 	<entry key="download.png"><![CDATA[Stiahnúť ako PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 c8f3339..fcea845 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
@@ -632,7 +632,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Är du säker att du vill radera alla temporära filer? Denna operation kan inte ångras.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[Allmänna administrativa funktioner]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Administrativa funktioner]]></entry>
-	<entry key="download.image.steps"><![CDATA[Vänligen högerklicka på bilden och välj "Spara bilden som"]]></entry>
 	<entry key="download.pdf"><![CDATA[Ladda ner som PDF]]></entry>
 	<entry key="download.png"><![CDATA[Ladda ner som PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Felaktigt användarnamn/e-postadress och/eller lösenord.]]></entry>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ta.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ta.properties.xml
index 9c099e1..cf67f36 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ta.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ta.properties.xml
@@ -632,7 +632,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Download as PDF]]></entry>
 	<entry key="download.png"><![CDATA[Download as PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 f3258ec..2c98b91 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[ดาวน์โหลดเป็น PDF]]></entry>
 	<entry key="download.png"><![CDATA[ดาวน์โหลดเป็น PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 dc0e9c2..92ed570 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[PDF Olarak Yükle]]></entry>
 	<entry key="download.png"><![CDATA[PNG Olarak Yükle]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 25114c4..e49534b 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Ви впевнені, що хочете видалити всі тимчасові файли? Цю операцію не можна буде скасувати.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[Основні адміністративні фукції]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Адміністративні функції]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Завантажити як PDF]]></entry>
 	<entry key="download.png"><![CDATA[Завантажити як PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 cce3b9d..155d3ec 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[下载为 PDF]]></entry>
 	<entry key="download.png"><![CDATA[下载为 PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
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 b4535fc..d1411eb 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
@@ -631,7 +631,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="dashboard.widget.admin.cleanup.warn"><![CDATA[Are you sure you want to delete all temporary files? This operation cannot be undone.]]></entry>
 	<entry key="dashboard.widget.admin.desc"><![CDATA[General Admin functions]]></entry>
 	<entry key="dashboard.widget.admin.title"><![CDATA[Admin functions]]></entry>
-	<entry key="download.image.steps"><![CDATA[Please right click the image and choose "Save image as"]]></entry>
 	<entry key="download.pdf"><![CDATA[Download as PDF]]></entry>
 	<entry key="download.png"><![CDATA[Download as PNG]]></entry>
 	<entry key="error.bad.credentials"><![CDATA[Username/email and/or password are incorrect.]]></entry>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index c1a44d3..fba8f99 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -20,14 +20,15 @@ package org.apache.openmeetings.web.room;
 
 import static java.time.Duration.ZERO;
 import static org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_USER_PREFIX;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
 import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.room.wb.InterviewWbPanel.INTERVIEWWB_JS_REFERENCE;
 import static org.apache.openmeetings.web.room.wb.WbPanel.WB_JS_REFERENCE;
 
-import java.io.ByteArrayInputStream;
 import java.io.IOException;
-import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.Calendar;
 import java.util.List;
 import java.util.Map.Entry;
@@ -93,9 +94,8 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
 import org.apache.wicket.request.resource.ResourceStreamResource;
 import org.apache.wicket.spring.injection.annot.SpringBean;
-import org.apache.wicket.util.resource.AbstractResourceStream;
+import org.apache.wicket.util.resource.FileResourceStream;
 import org.apache.wicket.util.resource.IResourceStream;
-import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
 import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -201,30 +201,19 @@ public class RoomPanel extends BasePanel {
 	private RoomMenuPanel menu;
 	private RoomSidebar sidebar;
 	private final AbstractWbPanel wb;
-	private byte[] pdfWb;
+	private String fuid;
+	private String ftype;
 	private final AjaxDownloadBehavior download = new AjaxDownloadBehavior(new ResourceStreamResource() {
 		private static final long serialVersionUID = 1L;
 
 		{
 			setCacheDuration(ZERO);
-			setFileName("whiteboard.pdf");
 		}
 
 		@Override
 		protected IResourceStream getResourceStream(Attributes attributes) {
-			return new AbstractResourceStream() {
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				public InputStream getInputStream() throws ResourceStreamNotFoundException {
-					return new ByteArrayInputStream(pdfWb);
-				}
-
-				@Override
-				public void close() throws IOException {
-					//no-op
-				}
-			};
+			setFileName(EXTENSION_PDF.equals(ftype) ? "whiteboard.pdf" : "slide.png");
+			return new FileResourceStream(Paths.get(System.getProperty("java.io.tmpdir"), fuid).toFile());
 		}
 	}) {
 		private static final long serialVersionUID = 1L;
@@ -232,7 +221,13 @@ public class RoomPanel extends BasePanel {
 		@Override
 		protected void onDownloadCompleted(AjaxRequestTarget target) {
 			super.onDownloadCompleted(target);
-			pdfWb = null;
+			try {
+				Files.deleteIfExists(Paths.get(System.getProperty("java.io.tmpdir"), fuid));
+			} catch (IOException e) {
+				log.error("unexcepted error while clean-up", e);
+			}
+			fuid = null;
+			ftype = null;
 		}
 	};
 	Component eventDetail = new WebMarkupContainer(EVENT_DETAILS_ID).setVisible(false);
@@ -259,8 +254,9 @@ public class RoomPanel extends BasePanel {
 		this.wb = interview ? new InterviewWbPanel("whiteboard", this) : new WbPanel("whiteboard", this);
 	}
 
-	public void startDownload(IPartialPageRequestHandler handler, byte[] bb) {
-		pdfWb = bb;
+	public void startDownload(IPartialPageRequestHandler handler, String type, String fuid) {
+		this.fuid = fuid;
+		ftype = type;
 		download.initiate(handler);
 	}
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbAction.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbAction.java
index 6eaca7e..f3ba2dd 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbAction.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbAction.java
@@ -34,7 +34,7 @@ public enum WbAction {
 	, load
 	, undo
 	, setSize
-	, downloadPdf
+	, download
 	, startRecording
 	, stopRecording
 	, videoStatus
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
index dee65c8..08b390c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
@@ -208,10 +208,6 @@
 			</div>
 			<div class="status"></div>
 		</div>
-		<div id="download-png" wicket:message="title:867">
-			<img width="320" height="240"/>
-			<div><wicket:message key="download.image.steps"/></div>
-		</div>
 	</div>
 	<div id="wb-settings" class="wb-settings modal fade" tabindex="-1" role="dialog" data-backdrop="false" aria-hidden="true">
 		<div class="modal-dialog modal-sm" role="document">
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
index f55dcb7..661ec92 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
@@ -34,10 +34,7 @@ import static org.apache.openmeetings.web.room.wb.WbWebSocketHelper.getObjWbJson
 import static org.apache.openmeetings.web.room.wb.WbWebSocketHelper.getWbJson;
 import static org.apache.wicket.AttributeModifier.append;
 
-import java.awt.image.BufferedImage;
 import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -52,9 +49,6 @@ import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
-import javax.imageio.ImageIO;
-
-import org.apache.commons.codec.binary.Base64;
 import org.apache.openmeetings.db.dao.file.FileItemDao;
 import org.apache.openmeetings.db.dto.room.Whiteboard;
 import org.apache.openmeetings.db.dto.room.Whiteboard.ZoomMode;
@@ -70,13 +64,6 @@ import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.web.app.WhiteboardManager;
 import org.apache.openmeetings.web.common.NameDialog;
 import org.apache.openmeetings.web.room.RoomPanel;
-import org.apache.pdfbox.pdmodel.PDDocument;
-import org.apache.pdfbox.pdmodel.PDPage;
-import org.apache.pdfbox.pdmodel.PDPageContentStream;
-import org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode;
-import org.apache.pdfbox.pdmodel.common.PDRectangle;
-import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory;
-import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.html.list.ListItem;
@@ -216,30 +203,12 @@ public class WbPanel extends AbstractWbPanel {
 				}
 			}
 				break;
-			case downloadPdf:
+			case download:
 			{
 				boolean moder = c.hasRight(Room.Right.MODERATOR);
 				Room r = rp.getRoom();
-				if ((moder && !r.isHidden(RoomElement.ACTION_MENU)) || (!moder && r.isAllowUserQuestions())) {
-					try (PDDocument doc = new PDDocument()) {
-						JSONArray arr = obj.getJSONArray("slides");
-						for (int i = 0; i < arr.length(); ++i) {
-							String base64Image = arr.getString(i).split(",")[1];
-							byte[] bb = Base64.decodeBase64(base64Image);
-							BufferedImage img = ImageIO.read(new ByteArrayInputStream(bb));
-							float width = img.getWidth();
-							float height = img.getHeight();
-							PDPage page = new PDPage(new PDRectangle(width, height));
-							PDImageXObject pdImageXObject = LosslessFactory.createFromImage(doc, img);
-							try (PDPageContentStream contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, false)) {
-								contentStream.drawImage(pdImageXObject, 0, 0, width, height);
-							}
-							doc.addPage(page);
-						}
-						ByteArrayOutputStream baos = new ByteArrayOutputStream();
-						doc.save(baos);
-						rp.startDownload(handler, baos.toByteArray());
-					}
+				if (moder && !r.isHidden(RoomElement.ACTION_MENU)) {
+					rp.startDownload(handler, obj.getString("type"), obj.getString("fuid"));
 				}
 				return;
 			}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
index 4de7c04..6413eba 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
@@ -392,30 +392,38 @@ var DrawWbArea = function() {
 		if (!_inited) {
 			return;
 		}
-		const wb = getActive().data();
+		const wb = getActive().data()
+			, url = location.pathname.substring(0, location.pathname.indexOf('/', 1)) + '/services/wb/uploadwb/'
+			, arr = [];
+		let type;
 		if ('pdf' === fmt) {
-			const arr = [];
 			wb.eachCanvas(function(cnv) {
 				arr.push(_getImage(cnv));
 			});
-			OmUtil.wbAction({action: 'downloadPdf', data: {
-				slides: arr
-			}});
+			type = 'pdf';
 		} else {
-			const cnv = wb.getCanvas()
-				, dataUri = _getImage(cnv);
-			try {
-				const dlg = $('#download-png');
-				dlg.find('img').attr('src', dataUri);
-				dlg.dialog({
-					width: 350
-					, appendTo: '.room-block .wb-block'
-				});
-				fixJQueryUIDialogTouch(dlg);
-			} catch (e) {
-				console.error(e);
-			}
+			const cnv = wb.getCanvas();
+			arr.push(_getImage(cnv));
+			type = 'png';
 		}
+		$.ajax({
+			type: "POST"
+			, url: url + type + '?sid=' + Room.getOptions().sid
+			, data: {data: JSON.stringify(arr)}
+			, dataType: 'json'
+			, cache: false
+		}).done(function(res) {
+			if ('SUCCESS' === res.serviceResult.type) {
+				OmUtil.wbAction({action: 'download', data: {
+					type: type
+					, fuid: res.serviceResult.message
+				}});
+			} else {
+				OmUtil.error(res.serviceResult.message);
+			}
+		}).fail(function(err) {
+			OmUtil.error(err);
+		});
 	}
 	self.videoStatus = _videoStatus;
 	self.loadVideos = function() {
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java
index 79d5b6e..6d5327d 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/WbWebService.java
@@ -18,28 +18,54 @@
  */
 package org.apache.openmeetings.webservice;
 
+import static java.util.UUID.randomUUID;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
 import static org.apache.openmeetings.webservice.Constants.TNS;
 
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.nio.file.Paths;
+
+import javax.imageio.ImageIO;
 import javax.jws.WebMethod;
 import javax.jws.WebParam;
 import javax.jws.WebService;
+import javax.ws.rs.FormParam;
 import javax.ws.rs.GET;
+import javax.ws.rs.POST;
 import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.io.FileUtils;
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
+import org.apache.openmeetings.db.entity.basic.Client;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.Room.RoomElement;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.manager.IClientManager;
 import org.apache.openmeetings.db.manager.IWhiteboardManager;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.pdmodel.PDPageContentStream;
+import org.apache.pdfbox.pdmodel.PDPageContentStream.AppendMode;
+import org.apache.pdfbox.pdmodel.common.PDRectangle;
+import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory;
+import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import com.github.openjson.JSONArray;
+
 /**
  * WbService contains methods to manipulate whiteboard contents
  *
@@ -54,6 +80,8 @@ public class WbWebService extends BaseWebService {
 
 	@Autowired
 	private IWhiteboardManager wbManager;
+	@Autowired
+	private IClientManager cm;
 
 	/**
 	 * This method will remove all whiteboards from given room
@@ -124,4 +152,64 @@ public class WbWebService extends BaseWebService {
 			return new ServiceResult("", Type.SUCCESS);
 		});
 	}
+
+	/**
+	 * This method will recive WB as binary data (png) and store it to temporary PDF/PNG file
+	 *
+	 * unlike other web service methods this one uses internal client sid
+	 * NOT web service sid
+	 *
+	 * @param sid - internal client sid
+	 * @param type - the type of document being saved PNG/PDF
+	 * @param data - binary data
+	 * @return - serviceResult object with the result
+	 */
+	@WebMethod
+	@POST
+	@Path("/uploadwb/{type}")
+	public ServiceResult uploadWb(@WebParam(name="sid") @QueryParam("sid") String sid
+			, @WebParam(name="type") @PathParam("type") String type
+			, @WebParam(name="data") @FormParam("data") String data
+			)
+	{
+		log.debug("[uploadwb] type {}", type);
+		Client c = cm.getBySid(sid);
+		final boolean allowed = c != null
+				&& c.getRoom() != null
+				&& c.hasRight(Room.Right.MODERATOR)
+				&& !c.getRoom().isHidden(RoomElement.ACTION_MENU);
+		return performCall(null, sd -> allowed, sd -> {
+			try {
+				String tDir = System.getProperty("java.io.tmpdir");
+				String fuid = randomUUID().toString();
+				if (EXTENSION_PDF.equals(type)) {
+					try (PDDocument doc = new PDDocument(); OutputStream os = new FileOutputStream(Paths.get(tDir, fuid).toFile())) {
+						JSONArray arr = new JSONArray(data);
+						for (int i = 0; i < arr.length(); ++i) {
+							String base64Image = arr.getString(i).split(",")[1];
+							byte[] bb = Base64.decodeBase64(base64Image);
+							BufferedImage img = ImageIO.read(new ByteArrayInputStream(bb));
+							float width = img.getWidth();
+							float height = img.getHeight();
+							PDPage page = new PDPage(new PDRectangle(width, height));
+							PDImageXObject pdImageXObject = LosslessFactory.createFromImage(doc, img);
+							try (PDPageContentStream contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, false)) {
+								contentStream.drawImage(pdImageXObject, 0, 0, width, height);
+							}
+							doc.addPage(page);
+						}
+						doc.save(os);
+					}
+				} else {
+					JSONArray arr = new JSONArray(data);
+					String base64Image = arr.getString(0).split(",")[1];
+					byte[] bb = Base64.decodeBase64(base64Image);
+					FileUtils.copyInputStreamToFile(new ByteArrayInputStream(bb), Paths.get(tDir, fuid).toFile());
+				}
+				return new ServiceResult(fuid, Type.SUCCESS);
+			} catch (Exception e) {
+				return new ServiceResult(e.getMessage(), Type.ERROR);
+			}
+		});
+	}
 }