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 2022/12/19 04:20:45 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2753] Redo is added

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 7cd3e4316 [OPENMEETINGS-2753] Redo is added
7cd3e4316 is described below

commit 7cd3e431666ed762296b64a737d9dd5855c0535b
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Mon Dec 19 11:20:32 2022 +0700

    [OPENMEETINGS-2753] Redo is added
---
 .../db/manager/IWhiteboardManager.java             |   3 +-
 openmeetings-web/src/main/front/wb/src/wb-tools.js |   3 +
 .../web/app/Application.properties.xml             |   3 +-
 .../web/app/Application_ar.properties.xml          |   3 +-
 .../web/app/Application_bg.properties.xml          |   3 +-
 .../web/app/Application_bn.properties.xml          |   3 +-
 .../web/app/Application_ca.properties.xml          |   3 +-
 .../web/app/Application_cs.properties.xml          |   3 +-
 .../web/app/Application_da.properties.xml          |   3 +-
 .../web/app/Application_de.properties.xml          |   3 +-
 .../web/app/Application_el.properties.xml          |   3 +-
 .../web/app/Application_es.properties.xml          |   3 +-
 .../web/app/Application_fa.properties.xml          |   3 +-
 .../web/app/Application_fi.properties.xml          |   3 +-
 .../web/app/Application_fr.properties.xml          |   3 +-
 .../web/app/Application_gl.properties.xml          |   3 +-
 .../web/app/Application_he.properties.xml          |   3 +-
 .../web/app/Application_hi.properties.xml          |   3 +-
 .../web/app/Application_hu.properties.xml          |   3 +-
 .../web/app/Application_id.properties.xml          |   3 +-
 .../web/app/Application_it.properties.xml          |  27 +-
 .../web/app/Application_ja.properties.xml          |   3 +-
 .../web/app/Application_ko.properties.xml          |   3 +-
 .../web/app/Application_ku.properties.xml          |   3 +-
 .../web/app/Application_lo.properties.xml          |   3 +-
 .../web/app/Application_nl.properties.xml          |   3 +-
 .../web/app/Application_pl.properties.xml          |   3 +-
 .../web/app/Application_pt.properties.xml          |   3 +-
 .../web/app/Application_pt_BR.properties.xml       |   3 +-
 .../web/app/Application_ru.properties.xml          |   3 +-
 .../web/app/Application_sk.properties.xml          |   3 +-
 .../web/app/Application_sv.properties.xml          |   3 +-
 .../web/app/Application_ta.properties.xml          |   3 +-
 .../web/app/Application_th.properties.xml          |   3 +-
 .../web/app/Application_tk.properties.xml          |   3 +-
 .../web/app/Application_tr.properties.xml          |   3 +-
 .../web/app/Application_uk.properties.xml          |   3 +-
 .../web/app/Application_ur.properties.xml          |   3 +-
 .../web/app/Application_zh_CN.properties.xml       |   3 +-
 .../web/app/Application_zh_TW.properties.xml       |   3 +-
 .../openmeetings/web/app/WhiteboardManager.java    |   6 +-
 .../openmeetings/web/room/wb/InterviewWbPanel.java |   6 -
 .../openmeetings/web/room/wb/UndoObject.java       |  18 +-
 .../apache/openmeetings/web/room/wb/WbAction.java  |   1 +
 .../apache/openmeetings/web/room/wb/WbPanel.html   |   3 +-
 .../apache/openmeetings/web/room/wb/WbPanel.java   | 484 ++++++++++++---------
 openmeetings-web/src/main/webapp/css/raw-wb.css    |   5 +-
 .../openmeetings/webservice/WbWebService.java      |   2 +-
 48 files changed, 402 insertions(+), 267 deletions(-)

diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IWhiteboardManager.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IWhiteboardManager.java
index 9b0323553..2d7cdc2d6 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IWhiteboardManager.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IWhiteboardManager.java
@@ -19,7 +19,6 @@
 package org.apache.openmeetings.db.manager;
 
 import java.util.function.BiConsumer;
-import java.util.function.Consumer;
 
 import org.apache.openmeetings.db.dto.room.Whiteboard;
 import org.apache.openmeetings.db.dto.room.Whiteboards;
@@ -29,6 +28,6 @@ import com.github.openjson.JSONArray;
 public interface IWhiteboardManager {
 	Whiteboards get(Long roomId);
 	void reset(Long roomId, Long userId);
-	void clearAll(Long roomId, long wbId, Consumer<Whiteboard> consumer);
+	void clearAll(Long roomId, long wbId, boolean redo, BiConsumer<Whiteboard, Boolean> consumer);
 	void cleanSlide(Long roomId, long wbId, int slide, BiConsumer<Whiteboard, JSONArray> consumer);
 }
diff --git a/openmeetings-web/src/main/front/wb/src/wb-tools.js b/openmeetings-web/src/main/front/wb/src/wb-tools.js
index e299fa5e6..b4c9cb5f4 100644
--- a/openmeetings-web/src/main/front/wb/src/wb-tools.js
+++ b/openmeetings-web/src/main/front/wb/src/wb-tools.js
@@ -361,6 +361,9 @@ module.exports = class WbTools {
 					tools.find('.om-icon.undo').click(function() {
 						OmUtil.wbAction({action: 'undo', data: {wbId: wb.getId()}});
 					});
+					tools.find('.om-icon.redo').click(function() {
+						OmUtil.wbAction({action: 'redo', data: {wbId: wb.getId()}});
+					});
 					_initSettings();
 					_initMath();
 				case Role.NONE:
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 7ab5e50a2..dd9f98409 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[OK]]></entry>
 	<entry key="59"><![CDATA[Language]]></entry>
 	<entry key="62"><![CDATA[Clear whiteboard]]></entry>
-	<entry key="70"><![CDATA[Undo]]></entry>
 	<entry key="72"><![CDATA[Select an object]]></entry>
 	<entry key="73"><![CDATA[Text]]></entry>
 	<entry key="74"><![CDATA[Paint]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Undo]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 a990ce8bc..57f077bf2 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[موافق]]></entry>
 	<entry key="59"><![CDATA[اللغة]]></entry>
 	<entry key="62"><![CDATA[مسح اللوح الابيض]]></entry>
-	<entry key="70"><![CDATA[الغاء]]></entry>
 	<entry key="72"><![CDATA[اختر جسم]]></entry>
 	<entry key="73"><![CDATA[النص]]></entry>
 	<entry key="74"><![CDATA[الطلاء]]></entry>
@@ -972,6 +971,8 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="wb.tool.math.formula"><![CDATA[صيغ الرياضيات]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[دليل بناء الجملة الرياضاتيه]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[الغاء]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[تبييض]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[تعرض هذه الأقسام الغرف التي فتحتها مؤخرًا]]></entry>
 	<entry key="widget.recent.title"><![CDATA[الغرف الحديثة]]></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 6d5908b37..d0bfc4e4d 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[ОК]]></entry>
 	<entry key="59"><![CDATA[Език:]]></entry>
 	<entry key="62"><![CDATA[Изчистване на дъската]]></entry>
-	<entry key="70"><![CDATA[Стъпка назад]]></entry>
 	<entry key="72"><![CDATA[Маркиране на обект]]></entry>
 	<entry key="73"><![CDATA[Текст]]></entry>
 	<entry key="74"><![CDATA[Рисуване]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Стъпка назад]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 e08f05bbb..943964a62 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[ঠিক আছে]]></entry>
 	<entry key="59"><![CDATA[ভাষা]]></entry>
 	<entry key="62"><![CDATA[হোয়াইটবোর্ড সাফ করুন]]></entry>
-	<entry key="70"><![CDATA[আনডু]]></entry>
 	<entry key="72"><![CDATA[একটি বস্তু নির্ধারন করুন]]></entry>
 	<entry key="73"><![CDATA[লিখিত]]></entry>
 	<entry key="74"><![CDATA[অংকন]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[আনডু]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 8c06aa11d..e56508a89 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[OK]]></entry>
 	<entry key="59"><![CDATA[Idioma:]]></entry>
 	<entry key="62"><![CDATA[Eliminar pissarra]]></entry>
-	<entry key="70"><![CDATA[Desfer]]></entry>
 	<entry key="72"><![CDATA[Seleccionar un objecte]]></entry>
 	<entry key="73"><![CDATA[Text]]></entry>
 	<entry key="74"><![CDATA[Pintar]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Desfer]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 665801242..fd533655d 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[ok]]></entry>
 	<entry key="59"><![CDATA[Jazyk:]]></entry>
 	<entry key="62"><![CDATA[Smaž tabuli]]></entry>
-	<entry key="70"><![CDATA[Krok zpět]]></entry>
 	<entry key="72"><![CDATA[Vyber Objekt]]></entry>
 	<entry key="73"><![CDATA[Text]]></entry>
 	<entry key="74"><![CDATA[Kreslení]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Krok zpět]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 99dffcd36..3fca24f1b 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[ok]]></entry>
 	<entry key="59"><![CDATA[Sprog:]]></entry>
 	<entry key="62"><![CDATA[Rens skrivebordet]]></entry>
-	<entry key="70"><![CDATA[Fortryd]]></entry>
 	<entry key="72"><![CDATA[Vælg et objekt]]></entry>
 	<entry key="73"><![CDATA[Tekst]]></entry>
 	<entry key="74"><![CDATA[Mal/tegn]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Fortryd]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 4600b0921..03ec631ec 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[Ok]]></entry>
 	<entry key="59"><![CDATA[Kurssprache:]]></entry>
 	<entry key="62"><![CDATA[Zeichenbrett leeren]]></entry>
-	<entry key="70"><![CDATA[Rückgängig]]></entry>
 	<entry key="72"><![CDATA[Markieren]]></entry>
 	<entry key="73"><![CDATA[Text]]></entry>
 	<entry key="74"><![CDATA[Frei zeichnen]]></entry>
@@ -976,6 +975,8 @@ Bitte am OM server {3} anmelden und sie unter Admininistration -> Gruppen prüfe
 	<entry key="wb.tool.math.formula"><![CDATA[Mathe Formeln]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Anleitung zur LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://de.wikibooks.org/wiki/LaTeX-Kompendium:_Für_Mathematiker]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Rückgängig]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[Löschen]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[Hier finden Sie kürzlich benutzte Räume.]]></entry>
 	<entry key="widget.recent.title"><![CDATA[kürzlich benutzte Räum]]></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 c74655c17..aab8a8f18 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[Εντάξει]]></entry>
 	<entry key="59"><![CDATA[Γλώσσα:]]></entry>
 	<entry key="62"><![CDATA[Εκκαθάριση Πίνακα]]></entry>
-	<entry key="70"><![CDATA[Αναίρεση]]></entry>
 	<entry key="72"><![CDATA[Επιλογή Αντικειμένου]]></entry>
 	<entry key="73"><![CDATA[Κείμενο]]></entry>
 	<entry key="74"><![CDATA[Ζωγραφική]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Αναίρεση]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 820a72a5d..e1c57ece6 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[Aceptar]]></entry>
 	<entry key="59"><![CDATA[Idioma]]></entry>
 	<entry key="62"><![CDATA[Borrar pizarra]]></entry>
-	<entry key="70"><![CDATA[Deshacer]]></entry>
 	<entry key="72"><![CDATA[Seleccionar un objeto]]></entry>
 	<entry key="73"><![CDATA[Texto]]></entry>
 	<entry key="74"><![CDATA[Pintar]]></entry>
@@ -974,6 +973,8 @@ Por favor visite el {3} servidor de OM y compruébelo en Admin -> Grupos]]></ent
 	<entry key="wb.tool.math.formula"><![CDATA[Fórmula matemática]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guía de sintaxis de LaTex]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Deshacer]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[Borrador]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[Esta sección presenta las salas que recientemente visitaste]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Salas recientes]]></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 a7c6732ba..f5dd65af0 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[ادامه]]></entry>
 	<entry key="59"><![CDATA[زبان:]]></entry>
 	<entry key="62"><![CDATA[پاک کردن وایت بورد]]></entry>
-	<entry key="70"><![CDATA[بازگشت به قبل]]></entry>
 	<entry key="72"><![CDATA[موضوع مورد نظر]]></entry>
 	<entry key="73"><![CDATA[متن]]></entry>
 	<entry key="74"><![CDATA[نقاشی کردن]]></entry>
@@ -967,6 +966,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[بازگشت به قبل]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[این بخش  اتاق هایی که اخیراً توسط شما باز شده نمایش می دهد]]></entry>
 	<entry key="widget.recent.title"><![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 bae83bf9c..65e7ec05b 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[ok]]></entry>
 	<entry key="59"><![CDATA[Kieli:]]></entry>
 	<entry key="62"><![CDATA[Tyhjää kirjoitustaulu]]></entry>
-	<entry key="70"><![CDATA[Peru]]></entry>
 	<entry key="72"><![CDATA[Valitse objekti]]></entry>
 	<entry key="73"><![CDATA[Teksti]]></entry>
 	<entry key="74"><![CDATA[Piirrä]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Peru]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 22f946df5..b73c3708c 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[Ok]]></entry>
 	<entry key="59"><![CDATA[Langue :]]></entry>
 	<entry key="62"><![CDATA[Nettoyer le tableau blanc]]></entry>
-	<entry key="70"><![CDATA[Annuler]]></entry>
 	<entry key="72"><![CDATA[Sélectionner un objet]]></entry>
 	<entry key="73"><![CDATA[Texte]]></entry>
 	<entry key="74"><![CDATA[Dessiner]]></entry>
@@ -975,6 +974,8 @@ dans {1} jours. Si vous souhaitez sauvegarder cet enregistrement, veuillez le t
 	<entry key="wb.tool.math.formula"><![CDATA[Formule mathématique]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide de la syntaxe LaTeX]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://fr.wikibooks.org/wiki/LaTeX/%C3%89crire_des_math%C3%A9matiques]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Annuler]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[Effacez]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[Cet espace affiche les salles que vous avez fréquenté récemment ]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Salles récentes]]></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 07b4a23a6..bba5f5613 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[Aceptar]]></entry>
 	<entry key="59"><![CDATA[Idioma:]]></entry>
 	<entry key="62"><![CDATA[Borrar o taboleiro]]></entry>
-	<entry key="70"><![CDATA[Desfacer]]></entry>
 	<entry key="72"><![CDATA[Seleccionar un obxeto]]></entry>
 	<entry key="73"><![CDATA[Texto]]></entry>
 	<entry key="74"><![CDATA[Pintar]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Desfacer]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></entry>
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 485520eba..135b38c93 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[OK]]></entry>
 	<entry key="59"><![CDATA[Language]]></entry>
 	<entry key="62"><![CDATA[Clear whiteboard]]></entry>
-	<entry key="70"><![CDATA[Undo]]></entry>
 	<entry key="72"><![CDATA[Select an object]]></entry>
 	<entry key="73"><![CDATA[Text]]></entry>
 	<entry key="74"><![CDATA[Paint]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Undo]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 5260769c7..72a73f9fc 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[OK]]></entry>
 	<entry key="59"><![CDATA[Language]]></entry>
 	<entry key="62"><![CDATA[Clear whiteboard]]></entry>
-	<entry key="70"><![CDATA[Undo]]></entry>
 	<entry key="72"><![CDATA[Select an object]]></entry>
 	<entry key="73"><![CDATA[Text]]></entry>
 	<entry key="74"><![CDATA[Paint]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Undo]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 330535c04..ee2f98b16 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[Rendben]]></entry>
 	<entry key="59"><![CDATA[Nyelv:]]></entry>
 	<entry key="62"><![CDATA[Tábla törlése]]></entry>
-	<entry key="70"><![CDATA[Vissza]]></entry>
 	<entry key="72"><![CDATA[Válassz objektumot]]></entry>
 	<entry key="73"><![CDATA[Szöveg]]></entry>
 	<entry key="74"><![CDATA[Rajz]]></entry>
@@ -961,6 +960,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Vissza]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></entry>
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 ace2b48b6..4090525a7 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[ok]]></entry>
 	<entry key="59"><![CDATA[Bahasa:]]></entry>
 	<entry key="62"><![CDATA[hapus whiteboard]]></entry>
-	<entry key="70"><![CDATA[Batal]]></entry>
 	<entry key="72"><![CDATA[Pilih Objek]]></entry>
 	<entry key="73"><![CDATA[Tulisan]]></entry>
 	<entry key="74"><![CDATA[Gambar]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Batal]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 6c422d26d..7d0e8aa99 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[ok]]></entry>
 	<entry key="59"><![CDATA[Lingua:]]></entry>
 	<entry key="62"><![CDATA[Cancella la lavagna]]></entry>
-	<entry key="70"><![CDATA[Annulla le modifiche]]></entry>
 	<entry key="72"><![CDATA[Seleziona un'oggetto]]></entry>
 	<entry key="73"><![CDATA[Testo]]></entry>
 	<entry key="74"><![CDATA[Disegna]]></entry>
@@ -148,7 +147,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="306"><![CDATA[Impostazioni WebCam e Mic]]></entry>
 	<entry key="308"><![CDATA[Esci]]></entry>
 	<entry key="309"><![CDATA[Torna alle stanze]]></entry>
-	<entry key="310"><![CDATA[Logout]]></entry>
+	<entry key="310"><![CDATA[Esci]]></entry>
 	<entry key="311"><![CDATA[Password dimenticata?]]></entry>
 	<entry key="312"><![CDATA[Reimposta password]]></entry>
 	<entry key="313"><![CDATA[Tramite indirizzo email]]></entry>
@@ -294,7 +293,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="815"><![CDATA[Dettagli evento]]></entry>
 	<entry key="816"><![CDATA[Moderatori predefiniti]]></entry>
 	<entry key="817"><![CDATA[Super]]></entry>
-	<entry key="823"><![CDATA[Se la Stanza è moderata, l'utente con permessi di Moderatore o Amministratore sarà automaticamente il Moderatore se entra nella Stanza. Se non vuoi questo e vuoi che solo alcuni utenti siano Moderatori usa la funzione di Moderatore predefinito. ]]></entry>
+	<entry key="823"><![CDATA[Se la Stanza è moderata, l'utente con permessi di Moderatore o Amministratore sarà automaticamente il Moderatore se entra nella Stanza. Se non vuoi questo e vuoi che solo alcuni utenti siano Moderatori usa la funzione di Moderatore predefinito.]]></entry>
 	<entry key="828"><![CDATA[Se aggiungi un'organizzazione alla stanza solo gli utenti di questa organizzazione avranno accesso ad essa (Questo vale se il Flag Pubblico non è attivo!)]]></entry>
 	<entry key="830"><![CDATA[Limitazioni]]></entry>
 	<entry key="832"><![CDATA[Sei sicuro?]]></entry>
@@ -556,7 +555,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="admin.group.form.days"><![CDATA[giorni]]></entry>
 	<entry key="admin.group.form.limited"><![CDATA[Limits enabled]]></entry>
 	<entry key="admin.group.form.logo"><![CDATA[Logo]]></entry>
-	<entry key="admin.group.form.maxFilesSize"><![CDATA[Maximum files size]]></entry>
+	<entry key="admin.group.form.maxFilesSize"><![CDATA[Dimensione massima file]]></entry>
 	<entry key="admin.group.form.maxRecordingsSize"><![CDATA[Massima dimensione della registrazione]]></entry>
 	<entry key="admin.group.form.maxRooms"><![CDATA[Massimo numero di stanze]]></entry>
 	<entry key="admin.group.form.minutes"><![CDATA[minutes]]></entry>
@@ -564,7 +563,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="admin.group.form.reminderDays"><![CDATA[Expire reminder sent in]]></entry>
 	<entry key="admin.group.form.tag"><![CDATA[Tag]]></entry>
 	<entry key="admin.group.new.users.notification.interval"><![CDATA[New user notification interval]]></entry>
-	<entry key="admin.oauth.attr.oauth"><![CDATA[OAuth User attribute]]></entry>
+	<entry key="admin.oauth.attr.oauth"><![CDATA[Attributo utente OAuth]]></entry>
 	<entry key="admin.oauth.attr.om"><![CDATA[OM User attribute]]></entry>
 	<entry key="admin.oauth.req.info.method"><![CDATA[Request info method]]></entry>
 	<entry key="admin.oauth.req.token.method"><![CDATA[Request token method]]></entry>
@@ -581,7 +580,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="appointment.tab.advanced"><![CDATA[Avanzate]]></entry>
 	<entry key="bad.captcha.text"><![CDATA[You have entered incorrect captcha text]]></entry>
 	<entry key="bad.password.digit"><![CDATA['Weak' password: at least 1 digit is required]]></entry>
-	<entry key="bad.password.lower"><![CDATA['Weak' password: at least 1 lower-case letter is required]]></entry>
+	<entry key="bad.password.lower"><![CDATA[Password insicura: almeno 1 lettera minuscola è obbligatoria]]></entry>
 	<entry key="bad.password.short"><![CDATA['Weak' password: minimum password length is ${0}]]></entry>
 	<entry key="bad.password.special"><![CDATA['Weak' password: at least 1 special symbol '!@#$%^&*][' is required]]></entry>
 	<entry key="bad.password.stop"><![CDATA['Weak' password: it shouldn't contain part of the user's email address or username]]></entry>
@@ -589,13 +588,13 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="button.label.share"><![CDATA[Condividi]]></entry>
 	<entry key="calendar.addCalendar"><![CDATA[Add External Calendar]]></entry>
 	<entry key="calendar.defaultTitle"><![CDATA[New Calendar]]></entry>
-	<entry key="calendar.dialogTitle"><![CDATA[Calendar Details]]></entry>
+	<entry key="calendar.dialogTitle"><![CDATA[Dettagli calendario]]></entry>
 	<entry key="calendar.error"><![CDATA[Error in making connection on the URL specified.]]></entry>
 	<entry key="calendar.gcal"><![CDATA[Google Calendar]]></entry>
 	<entry key="calendar.googleID"><![CDATA[Google Calendar ID]]></entry>
 	<entry key="calendar.googleKey"><![CDATA[Google Calendar API key]]></entry>
 	<entry key="calendar.sync"><![CDATA[Sync]]></entry>
-	<entry key="calendar.url"><![CDATA[External CalDAV Calendar URL]]></entry>
+	<entry key="calendar.url"><![CDATA[URL CalDAV esterno]]></entry>
 	<entry key="camera.off"><![CDATA[Camera is off. Click to turn on.]]></entry>
 	<entry key="camera.on"><![CDATA[Camera is on. Click to turn off.]]></entry>
 	<entry key="captcha.text"><![CDATA[Captcha text]]></entry>
@@ -724,7 +723,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="install.wizard.params.step1.username.title"><![CDATA[Specifica un nome utente]]></entry>
 	<entry key="install.wizard.params.step2.allowFrontendRegister"><![CDATA[Permetti auto-registrazione]]></entry>
 	<entry key="install.wizard.params.step2.configuration"><![CDATA[Configurazione]]></entry>
-	<entry key="install.wizard.params.step2.createDefaultObjects"><![CDATA[Default DB objects of all types will be created (including Rooms, OAuth2 servers etc.)]]></entry>
+	<entry key="install.wizard.params.step2.createDefaultObjects"><![CDATA[Saranno creati oggetti predefiniti di DB di tutti i tipi (incluse stanze, servers OAuth2, etc.)]]></entry>
 	<entry key="install.wizard.params.step2.defaultLangId"><![CDATA[Lingua predefinita]]></entry>
 	<entry key="install.wizard.params.step2.mailAuthName"><![CDATA[Nome utente SMTP]]></entry>
 	<entry key="install.wizard.params.step2.mailAuthName.title"><![CDATA[Specifica il nome utente per mail]]></entry>
@@ -854,7 +853,7 @@ please check <tt>openmeetings.log</tt> and contact OpenMeetings developers]]></e
 	<entry key="microphone.off"><![CDATA[Microphone is off. Click to turn on.]]></entry>
 	<entry key="microphone.on"><![CDATA[Microphone is on. Click to turn off.]]></entry>
 	<entry key="my.room.conference"><![CDATA[Mia stanza conferenza]]></entry>
-	<entry key="my.room.presentation"><![CDATA[My presentation room (for 1-120 users)]]></entry>
+	<entry key="my.room.presentation"><![CDATA[La mia stanza di presentazione (per 1-120 utenti)]]></entry>
 	<entry key="network.test.click.play"><![CDATA[Clicca il pulsante play per il test]]></entry>
 	<entry key="network.test.copy.log"><![CDATA[Copia il log nella clipboard]]></entry>
 	<entry key="network.test.dwn"><![CDATA[Velocità Download]]></entry>
@@ -891,7 +890,7 @@ please check <tt>openmeetings.log</tt> and contact OpenMeetings developers]]></e
 	<entry key="profile.invitations"><![CDATA[Inviti]]></entry>
 	<entry key="ptt.info"><![CDATA[Your microphone is muted. You can hold Ctrl+Space (Cmd+Space) to temporary unmute it (Push-to-Talk)]]></entry>
 	<entry key="recordings.root.group"><![CDATA[Group recordings]]></entry>
-	<entry key="register.privacy.accept"><![CDATA[By clicking "${register}", you agree to our ${link}.]]></entry>
+	<entry key="register.privacy.accept"><![CDATA[Facendo click su "${register}" vi dichiarate d'accordo con la nostra ${link}.]]></entry>
 	<entry key="register.privacy.statement"><![CDATA[privacy statement]]></entry>
 	<entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
 	<entry key="restricted.group.files"><![CDATA[Group files are restricted]]></entry>
@@ -935,11 +934,11 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="ulist.right.presenter.request"><![CDATA[Richiedi i permessi di presentatore]]></entry>
 	<entry key="ulist.right.presenter.revoke"><![CDATA[Elimina i permessi di presentatore da questo utente]]></entry>
 	<entry key="ulist.right.remote.grant"><![CDATA[Allow Remote Control (during screen sharing)]]></entry>
-	<entry key="ulist.right.remote.request"><![CDATA[Request remote control permission (during screen sharing)]]></entry>
+	<entry key="ulist.right.remote.request"><![CDATA[Richiedi permesso di controllo remoto (durante la condivisione dello schermo)]]></entry>
 	<entry key="ulist.right.remote.revoke"><![CDATA[Remove user's Remote Control permission (during screen sharing)]]></entry>
 	<entry key="ulist.right.share.grant"><![CDATA[Consenti all'utente di condividere/registrare lo schermo]]></entry>
 	<entry key="ulist.right.share.request"><![CDATA[Richiedi il permesso di condividere/registrare lo schermo]]></entry>
-	<entry key="ulist.right.share.revoke"><![CDATA[Remove user's screenshare/record permission]]></entry>
+	<entry key="ulist.right.share.revoke"><![CDATA[Revoca permesso di condivisione schermo/registrazione all'utente]]></entry>
 	<entry key="ulist.right.video.grant"><![CDATA[Consenti all'utente di utilizzare la telecamera]]></entry>
 	<entry key="ulist.right.video.request"><![CDATA[Richiedi il permesso di utilizzare la telecamera]]></entry>
 	<entry key="ulist.right.video.revoke"><![CDATA[Spegni la telecamera dell'utente e rimuovi l'autorizzazione]]></entry>
@@ -974,6 +973,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Annulla le modifiche]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Stanze recenti]]></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 72d1b8510..12796dec5 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[はい]]></entry>
 	<entry key="59"><![CDATA[言語:]]></entry>
 	<entry key="62"><![CDATA[ホワイトボードのクリア]]></entry>
-	<entry key="70"><![CDATA[取り消し]]></entry>
 	<entry key="72"><![CDATA[オブジェクト選択]]></entry>
 	<entry key="73"><![CDATA[文字列]]></entry>
 	<entry key="74"><![CDATA[自由線]]></entry>
@@ -973,6 +972,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[数式]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[取り消し]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[あなたが最近開設した会議室を表示します。]]></entry>
 	<entry key="widget.recent.title"><![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 eacc1c6d2..5d7edd53f 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[네]]></entry>
 	<entry key="59"><![CDATA[언어:]]></entry>
 	<entry key="62"><![CDATA[칠판 지우기]]></entry>
-	<entry key="70"><![CDATA[원래대로 돌려놓다.]]></entry>
 	<entry key="72"><![CDATA[물건을 선택해주십시요.]]></entry>
 	<entry key="73"><![CDATA[원문]]></entry>
 	<entry key="74"><![CDATA[페인트]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[원래대로 돌려놓다.]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></entry>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ku.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ku.properties.xml
index 27941f874..a1dafe489 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ku.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ku.properties.xml
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[OK]]></entry>
 	<entry key="59"><![CDATA[Language]]></entry>
 	<entry key="62"><![CDATA[Clear whiteboard]]></entry>
-	<entry key="70"><![CDATA[Undo]]></entry>
 	<entry key="72"><![CDATA[Select an object]]></entry>
 	<entry key="73"><![CDATA[Text]]></entry>
 	<entry key="74"><![CDATA[Paint]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Undo]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></entry>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_lo.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_lo.properties.xml
index 98d54be26..90f758bc5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_lo.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_lo.properties.xml
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[OK]]></entry>
 	<entry key="59"><![CDATA[Language]]></entry>
 	<entry key="62"><![CDATA[Clear whiteboard]]></entry>
-	<entry key="70"><![CDATA[Undo]]></entry>
 	<entry key="72"><![CDATA[Select an object]]></entry>
 	<entry key="73"><![CDATA[Text]]></entry>
 	<entry key="74"><![CDATA[Paint]]></entry>
@@ -972,6 +971,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Undo]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 a29873bf2..8cc24031e 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[OK]]></entry>
 	<entry key="59"><![CDATA[Taal:]]></entry>
 	<entry key="62"><![CDATA[Tekenbord schoonmaken]]></entry>
-	<entry key="70"><![CDATA[Ongedaan maken]]></entry>
 	<entry key="72"><![CDATA[Selecteer een object]]></entry>
 	<entry key="73"><![CDATA[Tekst]]></entry>
 	<entry key="74"><![CDATA[Verf]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Ongedaan maken]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 7a5002a75..2cdfd524a 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[ok]]></entry>
 	<entry key="59"><![CDATA[Język:]]></entry>
 	<entry key="62"><![CDATA[Wyczyść tablicę]]></entry>
-	<entry key="70"><![CDATA[Cofnij]]></entry>
 	<entry key="72"><![CDATA[Wskaż obiekt]]></entry>
 	<entry key="73"><![CDATA[Tekst]]></entry>
 	<entry key="74"><![CDATA[Malowanie]]></entry>
@@ -972,6 +971,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Wzór matematyczny]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Przewodnik po składni LaTeX]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Cofnij]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Ostatnie pokoje]]></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 aed665167..04fe17abb 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[ok]]></entry>
 	<entry key="59"><![CDATA[Idioma:]]></entry>
 	<entry key="62"><![CDATA[Limpar a lousa.]]></entry>
-	<entry key="70"><![CDATA[Desfazer]]></entry>
 	<entry key="72"><![CDATA[Selecionar um objeto]]></entry>
 	<entry key="73"><![CDATA[Texto]]></entry>
 	<entry key="74"><![CDATA[Pintura]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Desfazer]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 225669fd0..a85a08612 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[ok]]></entry>
 	<entry key="59"><![CDATA[Idioma:]]></entry>
 	<entry key="62"><![CDATA[Limpar a lousa.]]></entry>
-	<entry key="70"><![CDATA[Desfazer]]></entry>
 	<entry key="72"><![CDATA[Selecionar um objeto]]></entry>
 	<entry key="73"><![CDATA[Texto]]></entry>
 	<entry key="74"><![CDATA[Pintura]]></entry>
@@ -973,6 +972,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Desfazer]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 fd800b432..f67309add 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[ОК]]></entry>
 	<entry key="59"><![CDATA[Язык курса:]]></entry>
 	<entry key="62"><![CDATA[Очистить доску]]></entry>
-	<entry key="70"><![CDATA[Отмена]]></entry>
 	<entry key="72"><![CDATA[Выбрать объект]]></entry>
 	<entry key="73"><![CDATA[Текст]]></entry>
 	<entry key="74"><![CDATA[Рисование]]></entry>
@@ -973,6 +972,8 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="wb.tool.math.formula"><![CDATA[Математическая формула]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Инструкция по синтаксису LaTeX]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Вернуть]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Отмена]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[Корректор]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[Эта секция отображает комнаты в которые Вы недавно заходили]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Последние комнаты]]></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 41a7997a2..be7995299 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[OK]]></entry>
 	<entry key="59"><![CDATA[Jazyk]]></entry>
 	<entry key="62"><![CDATA[Zmazať tabuľu]]></entry>
-	<entry key="70"><![CDATA[Zrušiť]]></entry>
 	<entry key="72"><![CDATA[Vybrať objekt]]></entry>
 	<entry key="73"><![CDATA[Text]]></entry>
 	<entry key="74"><![CDATA[Farba]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Zrušiť]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 2e4009400..246f18898 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[OK]]></entry>
 	<entry key="59"><![CDATA[Språk]]></entry>
 	<entry key="62"><![CDATA[Rensa vita tavlan]]></entry>
-	<entry key="70"><![CDATA[Ångra]]></entry>
 	<entry key="72"><![CDATA[Välj ett objekt]]></entry>
 	<entry key="73"><![CDATA[Text]]></entry>
 	<entry key="74"><![CDATA[Måla]]></entry>
@@ -980,6 +979,8 @@ vänligen ladda ned den dessförrinnan. ]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Matematisk formel]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide till LaTeX-syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Ångra]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[Denna sektion visar rum nyligen skapade av dig]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Senaste rum]]></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 1a9ecbd65..86d319261 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[OK]]></entry>
 	<entry key="59"><![CDATA[Language]]></entry>
 	<entry key="62"><![CDATA[Clear whiteboard]]></entry>
-	<entry key="70"><![CDATA[Undo]]></entry>
 	<entry key="72"><![CDATA[Select an object]]></entry>
 	<entry key="73"><![CDATA[Text]]></entry>
 	<entry key="74"><![CDATA[Paint]]></entry>
@@ -983,6 +982,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Undo]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 490b0bf64..5e217632a 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[ตกลง]]></entry>
 	<entry key="59"><![CDATA[ภาษา:]]></entry>
 	<entry key="62"><![CDATA[ลบไวท์บอร์ด]]></entry>
-	<entry key="70"><![CDATA[เลิกทำ]]></entry>
 	<entry key="72"><![CDATA[เลือกรายการ]]></entry>
 	<entry key="73"><![CDATA[ข้อความ]]></entry>
 	<entry key="74"><![CDATA[ระบายสี]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[เลิกทำ]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></entry>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tk.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tk.properties.xml
index 67b84b02d..f8197519a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tk.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tk.properties.xml
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[OK]]></entry>
 	<entry key="59"><![CDATA[Language]]></entry>
 	<entry key="62"><![CDATA[Clear whiteboard]]></entry>
-	<entry key="70"><![CDATA[Undo]]></entry>
 	<entry key="72"><![CDATA[Select an object]]></entry>
 	<entry key="73"><![CDATA[Text]]></entry>
 	<entry key="74"><![CDATA[Paint]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Undo]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 6bb027963..eb84ca12a 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[tamam]]></entry>
 	<entry key="59"><![CDATA[Dil:]]></entry>
 	<entry key="62"><![CDATA[Tahtayı temizle]]></entry>
-	<entry key="70"><![CDATA[Geri al]]></entry>
 	<entry key="72"><![CDATA[Bir Nesne Seçin]]></entry>
 	<entry key="73"><![CDATA[Metin]]></entry>
 	<entry key="74"><![CDATA[Boyama]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Geri al]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 cf61a133f..6e6fc2cd8 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[OK]]></entry>
 	<entry key="59"><![CDATA[Мова:]]></entry>
 	<entry key="62"><![CDATA[Очистити планшет]]></entry>
-	<entry key="70"><![CDATA[Відмінити]]></entry>
 	<entry key="72"><![CDATA[Вибрати об'єкт]]></entry>
 	<entry key="73"><![CDATA[Текст]]></entry>
 	<entry key="74"><![CDATA[Малювання]]></entry>
@@ -972,6 +971,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Відмінити]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></entry>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ur.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ur.properties.xml
index 7ab5e50a2..dd9f98409 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ur.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ur.properties.xml
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[OK]]></entry>
 	<entry key="59"><![CDATA[Language]]></entry>
 	<entry key="62"><![CDATA[Clear whiteboard]]></entry>
-	<entry key="70"><![CDATA[Undo]]></entry>
 	<entry key="72"><![CDATA[Select an object]]></entry>
 	<entry key="73"><![CDATA[Text]]></entry>
 	<entry key="74"><![CDATA[Paint]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[Undo]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 90bfac2dd..4bdce2246 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[确定]]></entry>
 	<entry key="59"><![CDATA[语言:]]></entry>
 	<entry key="62"><![CDATA[清除白板]]></entry>
-	<entry key="70"><![CDATA[取消]]></entry>
 	<entry key="72"><![CDATA[选择对象]]></entry>
 	<entry key="73"><![CDATA[文本]]></entry>
 	<entry key="74"><![CDATA[绘画]]></entry>
@@ -973,6 +972,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[取消]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></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 c14357c32..e154396c7 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
@@ -53,7 +53,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for Details
 	<entry key="54"><![CDATA[设定好了]]></entry>
 	<entry key="59"><![CDATA[語言 :]]></entry>
 	<entry key="62"><![CDATA[清掉電子白板]]></entry>
-	<entry key="70"><![CDATA[撤消]]></entry>
 	<entry key="72"><![CDATA[選擇對象]]></entry>
 	<entry key="73"><![CDATA[全文]]></entry>
 	<entry key="74"><![CDATA[繪畫]]></entry>
@@ -981,6 +980,8 @@ Please visit {3} OM server and check them under Admin -> Groups]]></entry>
 	<entry key="wb.tool.math.formula"><![CDATA[Math formula]]></entry>
 	<entry key="wb.tool.math.guide.lbl"><![CDATA[Guide to LaTeX Syntax]]></entry>
 	<entry key="wb.tool.math.guide.url"><![CDATA[https://en.wikibooks.org/wiki/LaTeX/Mathematics]]></entry>
+	<entry key="wb.tool.redo"><![CDATA[Redo]]></entry>
+	<entry key="wb.tool.undo"><![CDATA[撤消]]></entry>
 	<entry key="wb.tool.white-out"><![CDATA[White-Out]]></entry>
 	<entry key="widget.recent.desc"><![CDATA[This sections displays rooms recently opened by you]]></entry>
 	<entry key="widget.recent.title"><![CDATA[Recent Rooms]]></entry>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
index a67e10c37..cda6b6e36 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
@@ -205,13 +205,13 @@ public class WhiteboardManager implements IWhiteboardManager {
 	}
 
 	@Override
-	public void clearAll(Long roomId, long wbId, Consumer<Whiteboard> consumer) {
+	public void clearAll(Long roomId, long wbId, boolean redo, BiConsumer<Whiteboard, Boolean> addUndo) {
 		Whiteboard wb = get(roomId).get(wbId);
 		if (wb == null) {
 			return;
 		}
-		if (consumer != null) {
-			consumer.accept(wb);
+		if (addUndo != null) {
+			addUndo.accept(wb, redo);
 		}
 		wb = clear(roomId, wbId);
 		sendWbAll(roomId, WbAction.CLEAR_ALL, new JSONObject().put("wbId", wbId));
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
index 07cf5f811..e6a6b49fa 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
@@ -21,7 +21,6 @@ package org.apache.openmeetings.web.room.wb;
 import java.io.IOException;
 
 import org.apache.openmeetings.db.entity.basic.Client;
-import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.db.entity.room.Room.Right;
 import org.apache.openmeetings.web.room.RoomPanel;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
@@ -44,11 +43,6 @@ public class InterviewWbPanel extends AbstractWbPanel {
 		return rp.getClient().hasRight(Right.MODERATOR) ? Right.MODERATOR.name() : ROLE_NONE;
 	}
 
-	@Override
-	public void sendFileToWb(final BaseFileItem fi, boolean clean) {
-		//no-op
-	}
-
 	@Override
 	public void processWbAction(WbAction a, JSONObject obj, IPartialPageRequestHandler handler) throws IOException {
 		Client c = rp.getClient();
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/UndoObject.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/UndoObject.java
index f8416babf..5771d8713 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/UndoObject.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/UndoObject.java
@@ -33,19 +33,33 @@ public class UndoObject implements Serializable {
 		, REMOVE
 		, MODIFY
 	}
+	private final WbAction action;
+	private final String origObject;
 	private final Type type;
 	private final String object;
 
-	public UndoObject(Type type, JSONObject obj) {
+	public UndoObject(WbAction action, JSONObject origObj, Type type, JSONObject obj) {
+		this.action = action;
+		this.origObject = origObj.toString(new NullStringer());
 		this.type = type;
 		this.object = obj.toString(new NullStringer());
 	}
 
-	public UndoObject(Type type, JSONArray arr) {
+	public UndoObject(WbAction action, JSONObject origObj, Type type, JSONArray arr) {
+		this.action = action;
+		this.origObject = origObj.toString(new NullStringer());
 		this.type = type;
 		this.object = arr.toString(new NullStringer());
 	}
 
+	public WbAction getAction() {
+		return action;
+	}
+
+	public JSONObject getOrigObject() {
+		return new JSONObject(origObject);
+	}
+
 	public Type getType() {
 		return type;
 	}
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 f0a1f297e..6ac562b3d 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,6 +34,7 @@ public enum WbAction {
 	, SAVE("save")
 	, LOAD("load")
 	, UNDO("undo")
+	, REDO("redo")
 	, SET_SIZE("setSize")
 	, DOWNLOAD("download")
 	, START_RECORDING("startRecording")
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 74e87531b..8a45d0765 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
@@ -138,7 +138,8 @@
 				data-btn-ok-class="btn btn-sm btn-danger"
 				data-btn-ok-icon-class="fas fa-exclamation-triangle"></div>
 			<div wicket:message="title:199" class="clickable om-icon big save"></div>
-			<div wicket:message="title:70" class="clickable om-icon big undo"></div>
+			<div wicket:message="title:wb.tool.undo" class="clickable om-icon big undo"></div>
+			<div wicket:message="title:wb.tool.redo" class="clickable om-icon big redo"></div>
 
 			<div wicket:message="title:72" class="clickable om-icon big pointer"></div>
 			<div wicket:message="title:557" class="clickable om-icon big apointer"></div>
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 1b830283b..b21a2a723 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
@@ -46,7 +46,7 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.function.Consumer;
-import java.util.function.Function;
+import java.util.function.UnaryOperator;
 
 import org.apache.openmeetings.db.dao.file.FileItemDao;
 import org.apache.openmeetings.db.dto.room.Whiteboard;
@@ -73,7 +73,7 @@ import org.apache.wicket.request.resource.JavaScriptResourceReference;
 import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 import org.apache.wicket.util.string.Strings;
-import org.danekja.java.util.function.serializable.SerializableConsumer;
+import org.danekja.java.util.function.serializable.SerializableBiConsumer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -94,6 +94,7 @@ public class WbPanel extends AbstractWbPanel {
 	private final Long roomId;
 	private long wb2save = -1;
 	private final Map<Long, Deque<UndoObject>> undoList = new HashMap<>();
+	private final Map<Long, Deque<UndoObject>> redoList = new HashMap<>();
 	private final NameDialog fileName = new NameDialog("filename") {
 		private static final long serialVersionUID = 1L;
 
@@ -123,10 +124,15 @@ public class WbPanel extends AbstractWbPanel {
 			return new ResourceModel("144");
 		}
 	};
-	private final SerializableConsumer<Whiteboard> addUndo = wb -> {
+	private final SerializableBiConsumer<Whiteboard, Boolean> addUndo = (wb, redo) -> {
 		JSONArray arr = getArray(wb.toJson(), null);
 		if (arr.length() != 0) {
-			addUndo(wb.getId(), new UndoObject(UndoObject.Type.REMOVE, arr));
+			if (!redo) {
+				cleanRedo(wb.getId());
+			}
+			addUndo(wb.getId(), new UndoObject(WbAction.CLEAR_ALL
+					, new JSONObject().put("wbId", wb.getId())
+					, UndoObject.Type.REMOVE, arr));
 		}
 	};
 	@SpringBean
@@ -161,9 +167,9 @@ public class WbPanel extends AbstractWbPanel {
 	@Override
 	void internalWbLoad(StringBuilder sb) {
 		Long langId = rp.getClient().getUser().getLanguageId();
-		wbm.initFiles(rp.getRoom(), langId, (wbs, wbIdx, roomFiles) -> {
-			roomFiles.forEach(rf -> addFileToWb(wbs, wbIdx, rf.getFile(), false, false));
-		});
+		wbm.initFiles(rp.getRoom(), langId, (wbs, wbIdx, roomFiles)
+				-> roomFiles.forEach(rf -> addFileToWb(wbs, wbIdx, rf.getFile(), false, false))
+		);
 		Whiteboards wbs = wbm.get(roomId, langId);
 		loadWhiteboards(sb, rp.getClient(), wbs, wbm.list(roomId));
 		JSONObject wbj = getWbJson(wbs.getActiveWb());
@@ -188,13 +194,31 @@ public class WbPanel extends AbstractWbPanel {
 		if (c == null) {
 			return;
 		}
+		doAction(c, a, obj, false, handler);
+	}
+
+	private void doAction(Client c, WbAction a, JSONObject obj, boolean redo, IPartialPageRequestHandler handler) throws IOException {
+		if (processActionGeneral(c, a, obj, handler)) {
+			return;
+		}
+		//presenter-right
+		if (c.hasRight(Right.PRESENTER)) {
+			processActionPresenter(c, a, obj, redo, handler);
+		}
+		//wb-right
+		if (c.hasRight(Right.PRESENTER) || c.hasRight(Right.WHITEBOARD)) {
+			processActionWhiteboard(c, a, obj, false, handler);
+		}
+	}
+
+	private boolean processActionGeneral(Client c, WbAction a, JSONObject obj, IPartialPageRequestHandler handler) throws IOException {
 		switch (a) {
 			case CREATE_OBJ, MODIFY_OBJ:
 			{
 				JSONObject o = obj.optJSONObject("obj");
 				if (o != null && "pointer".equals(o.getString(ATTR_OMTYPE))) {
 					sendWbOthers(a, obj);
-					return;
+					return true;
 				}
 			}
 				break;
@@ -205,7 +229,7 @@ public class WbPanel extends AbstractWbPanel {
 				if (moder && !r.isHidden(RoomElement.ACTION_MENU)) {
 					rp.startDownload(handler, obj.getString("type"), obj.getString("fuid"));
 				}
-				return;
+				return true;
 			}
 			case LOAD_VIDEOS:
 			{
@@ -232,200 +256,227 @@ public class WbPanel extends AbstractWbPanel {
 				}
 				sb.append(arr.toString()).append(");");
 				handler.appendJavaScript(sb);
-				return;
+				return true;
 			}
 			default:
 				break;
 		}
+		return false;
+	}
 
-		//presenter-right
-		if (c.hasRight(Right.PRESENTER)) {
-			switch (a) {
-				case CREATE_WB:
-				{
-					Whiteboard wb = wbm.add(roomId, c.getUser().getLanguageId());
-					sendWbAll(WbAction.CREATE_WB, wb.getAddJson());
-				}
-					break;
-				case REMOVE_WB:
-				{
-					long id = obj.optLong("wbId", -1);
-					if (id > -1) {
-						long prevId = obj.optLong("prevWbId", -1);
-						wbm.remove(roomId, id, prevId);
-						sendWbAll(WbAction.REMOVE_WB, obj);
-					}
-				}
-					break;
-				case ACTIVATE_WB:
-				{
-					long wbId = obj.optLong("wbId", -1);
-					if (wbId > -1) {
-						wbm.activate(roomId, wbId);
-						sendWbAll(WbAction.ACTIVATE_WB, obj);
-					}
-				}
-					break;
-				case RENAME_WB:
-				{
-					Whiteboard wb = wbm.get(roomId).get(obj.optLong("wbId", -1));
-					if (wb != null) {
-						wbm.update(roomId, wb.setName(obj.getString("name")));
-						sendWbAll(WbAction.RENAME_WB, obj);
-					}
+	private void processActionPresenter(Client c, WbAction a, JSONObject obj, boolean redo, IPartialPageRequestHandler handler) throws IOException {
+		switch (a) {
+			case CREATE_WB:
+			{
+				Whiteboard wb = wbm.add(roomId, c.getUser().getLanguageId());
+				sendWbAll(WbAction.CREATE_WB, wb.getAddJson());
+			}
+				break;
+			case REMOVE_WB:
+			{
+				long id = obj.optLong("wbId", -1);
+				if (id > -1) {
+					long prevId = obj.optLong("prevWbId", -1);
+					wbm.remove(roomId, id, prevId);
+					sendWbAll(WbAction.REMOVE_WB, obj);
 				}
-					break;
-				case SET_SLIDE:
-				{
-					Whiteboard wb = wbm.get(roomId).get(obj.optLong("wbId", -1));
-					if (wb != null) {
-						wb.setSlide(obj.optInt(ATTR_SLIDE, 0));
-						wbm.update(roomId, wb);
-						sendWbOthers(WbAction.SET_SLIDE, obj);
-					}
+			}
+				break;
+			case ACTIVATE_WB:
+			{
+				long wbId = obj.optLong("wbId", -1);
+				if (wbId > -1) {
+					wbm.activate(roomId, wbId);
+					sendWbAll(WbAction.ACTIVATE_WB, obj);
 				}
-					break;
-				case CLEAR_ALL:
-				{
-					wbm.clearAll(roomId, obj.getLong("wbId"), addUndo);
+			}
+				break;
+			case RENAME_WB:
+			{
+				Whiteboard wb = wbm.get(roomId).get(obj.optLong("wbId", -1));
+				if (wb != null) {
+					wbm.update(roomId, wb.setName(obj.getString("name")));
+					sendWbAll(WbAction.RENAME_WB, obj);
 				}
-					break;
-				case SET_SIZE:
-				{
-					Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
-					wb.setWidth(obj.getInt(ATTR_WIDTH));
-					wb.setHeight(obj.getInt(ATTR_HEIGHT));
-					wb.setZoom(obj.getDouble(ATTR_ZOOM));
-					wb.setZoomMode(ZoomMode.valueOf(obj.getString("zoomMode")));
+			}
+				break;
+			case SET_SLIDE:
+			{
+				Whiteboard wb = wbm.get(roomId).get(obj.optLong("wbId", -1));
+				if (wb != null) {
+					wb.setSlide(obj.optInt(ATTR_SLIDE, 0));
 					wbm.update(roomId, wb);
-					sendWbOthers(WbAction.SET_SIZE, wb.getAddJson());
+					sendWbOthers(WbAction.SET_SLIDE, obj);
 				}
-					break;
-				default:
-					break;
 			}
+				break;
+			case CLEAR_ALL:
+			{
+				wbm.clearAll(roomId, obj.getLong("wbId"), redo, addUndo);
+			}
+				break;
+			case SET_SIZE:
+			{
+				Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
+				wb.setWidth(obj.getInt(ATTR_WIDTH));
+				wb.setHeight(obj.getInt(ATTR_HEIGHT));
+				wb.setZoom(obj.getDouble(ATTR_ZOOM));
+				wb.setZoomMode(ZoomMode.valueOf(obj.getString("zoomMode")));
+				wbm.update(roomId, wb);
+				sendWbOthers(WbAction.SET_SIZE, wb.getAddJson());
+			}
+				break;
+			default:
+				break;
 		}
-		//wb-right
-		if (c.hasRight(Right.PRESENTER) || c.hasRight(Right.WHITEBOARD)) {
-			switch (a) {
-				case CREATE_OBJ:
-				{
-					Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
-					JSONObject o = obj.getJSONObject("obj");
-					wb.put(o.getString("uid"), o);
-					wbm.update(roomId, wb);
-					addUndo(wb.getId(), new UndoObject(UndoObject.Type.ADD, o));
+	}
+
+	private void processActionWhiteboard(Client c, WbAction a, JSONObject obj, boolean redo, IPartialPageRequestHandler handler) throws IOException {
+		switch (a) {
+			case CREATE_OBJ:
+			{
+				Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
+				JSONObject o = obj.getJSONObject("obj");
+				wb.put(o.getString("uid"), o);
+				wbm.update(roomId, wb);
+				addUndo(wb.getId(), new UndoObject(a, obj, UndoObject.Type.ADD, o));
+				if (redo) {
+					sendWbAll(WbAction.CREATE_OBJ, obj);
+				} else {
+					cleanRedo(wb.getId());
 					sendWbOthers(WbAction.CREATE_OBJ, obj);
 				}
-					break;
-				case MODIFY_OBJ:
-				{
-					Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
-					JSONArray arr = obj.getJSONArray("obj");
-					JSONArray undo = new JSONArray();
-					for (int i = 0; i < arr.length(); ++i) {
-						JSONObject oi = arr.getJSONObject(i);
-						String uid = oi.getString("uid");
-						JSONObject po = wb.get(uid);
-						if (po != null) {
-							undo.put(po);
-							wb.put(uid, oi);
-						}
-					}
-					if (arr.length() != 0) {
-						wbm.update(roomId, wb);
-						addUndo(wb.getId(), new UndoObject(UndoObject.Type.MODIFY, undo));
+			}
+				break;
+			case MODIFY_OBJ:
+			{
+				Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
+				JSONArray arr = obj.getJSONArray("obj");
+				JSONArray undo = new JSONArray();
+				for (int i = 0; i < arr.length(); ++i) {
+					JSONObject oi = arr.getJSONObject(i);
+					String uid = oi.getString("uid");
+					JSONObject po = wb.get(uid);
+					if (po != null) {
+						undo.put(po);
+						wb.put(uid, oi);
 					}
-					sendWbOthers(WbAction.MODIFY_OBJ, obj);
 				}
-					break;
-				case DELETE_OBJ:
-				{
-					Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
-					JSONArray arr = obj.getJSONArray("obj");
-					JSONArray undo = new JSONArray();
-					for (int i = 0; i < arr.length(); ++i) {
-						JSONObject oi = arr.getJSONObject(i);
-						JSONObject u = wb.remove(oi.getString("uid"));
-						if (u != null) {
-							undo.put(u);
-						}
+				if (arr.length() != 0) {
+					wbm.update(roomId, wb);
+					addUndo(wb.getId(), new UndoObject(a, obj, UndoObject.Type.MODIFY, undo));
+					if (redo) {
+						sendWbAll(WbAction.MODIFY_OBJ, obj);
+					} else {
+						cleanRedo(wb.getId());
+						sendWbOthers(WbAction.MODIFY_OBJ, obj);
 					}
-					if (undo.length() != 0) {
-						wbm.update(roomId, wb);
-						addUndo(wb.getId(), new UndoObject(UndoObject.Type.REMOVE, undo));
+				}
+			}
+				break;
+			case DELETE_OBJ:
+			{
+				Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
+				JSONArray arr = obj.getJSONArray("obj");
+				JSONArray undo = new JSONArray();
+				for (int i = 0; i < arr.length(); ++i) {
+					JSONObject oi = arr.getJSONObject(i);
+					JSONObject u = wb.remove(oi.getString("uid"));
+					if (u != null) {
+						undo.put(u);
 					}
-					sendWbAll(WbAction.DELETE_OBJ, obj);
 				}
-					break;
-				case CLEAR_SLIDE:
-				{
-					wbm.cleanSlide(roomId, obj.getLong("wbId"), obj.getInt(ATTR_SLIDE)
-							, (wb, arr) -> addUndo(wb.getId(), new UndoObject(UndoObject.Type.REMOVE, arr)));
+				if (undo.length() != 0) {
+					wbm.update(roomId, wb);
+					addUndo(wb.getId(), new UndoObject(a, obj, UndoObject.Type.REMOVE, undo));
+				}
+				if (!redo) {
+					cleanRedo(wb.getId());
 				}
-					break;
-				case SAVE:
-					wb2save = obj.getLong("wbId");
-					fileName.show(handler);
-					break;
-				case UNDO:
-				{
-					Long wbId = obj.getLong("wbId");
-					UndoObject uo = getUndo(wbId);
-					if (uo != null) {
-						Whiteboard wb = wbm.get(roomId).get(wbId);
-						switch (uo.getType()) {
-							case ADD:
-							{
-								JSONObject o = new JSONObject(uo.getObject());
-								wb.remove(o.getString("uid"));
-								wbm.update(roomId, wb);
-								sendWbAll(WbAction.DELETE_OBJ, obj.put("obj", new JSONArray().put(o)));
+				sendWbAll(WbAction.DELETE_OBJ, obj);
+			}
+				break;
+			case CLEAR_SLIDE:
+			{
+				wbm.cleanSlide(roomId, obj.getLong("wbId"), obj.getInt(ATTR_SLIDE)
+						, (wb, arr) -> {
+							if (!redo) {
+								cleanRedo(wb.getId());
 							}
-								break;
-							case REMOVE:
-							{
-								JSONArray arr = new JSONArray(uo.getObject());
-								for (int i  = 0; i < arr.length(); ++i) {
-									JSONObject o = arr.getJSONObject(i);
-									wb.put(o.getString("uid"), o);
-								}
-								wbm.update(roomId, wb);
-								sendWbAll(WbAction.CREATE_OBJ, obj.put("obj", new JSONArray(uo.getObject())));
+							addUndo(wb.getId(), new UndoObject(a, obj, UndoObject.Type.REMOVE, arr));
+						});
+			}
+				break;
+			case SAVE:
+				wb2save = obj.getLong("wbId");
+				fileName.show(handler);
+				break;
+			case UNDO:
+			{
+				Long wbId = obj.getLong("wbId");
+				UndoObject uo = getUndo(wbId);
+				if (uo != null) {
+					Whiteboard wb = wbm.get(roomId).get(wbId);
+					switch (uo.getType()) {
+						case ADD:
+						{
+							JSONObject o = new JSONObject(uo.getObject());
+							wb.remove(o.getString("uid"));
+							wbm.update(roomId, wb);
+							sendWbAll(WbAction.DELETE_OBJ, obj.put("obj", new JSONArray().put(o)));
+						}
+							break;
+						case REMOVE:
+						{
+							JSONArray arr = new JSONArray(uo.getObject());
+							for (int i  = 0; i < arr.length(); ++i) {
+								JSONObject o = arr.getJSONObject(i);
+								wb.put(o.getString("uid"), o);
 							}
-								break;
-							case MODIFY:
-							{
-								JSONArray arr = new JSONArray(uo.getObject());
-								for (int i  = 0; i < arr.length(); ++i) {
-									JSONObject o = arr.getJSONObject(i);
-									wb.put(o.getString("uid"), o);
-								}
-								wbm.update(roomId, wb);
-								sendWbAll(WbAction.MODIFY_OBJ, obj.put("obj", arr));
+							wbm.update(roomId, wb);
+							sendWbAll(WbAction.CREATE_OBJ, obj.put("obj", new JSONArray(uo.getObject())));
+						}
+							break;
+						case MODIFY:
+						{
+							JSONArray arr = new JSONArray(uo.getObject());
+							for (int i  = 0; i < arr.length(); ++i) {
+								JSONObject o = arr.getJSONObject(i);
+								wb.put(o.getString("uid"), o);
 							}
-								break;
+							wbm.update(roomId, wb);
+							sendWbAll(WbAction.MODIFY_OBJ, obj.put("obj", arr));
 						}
+							break;
 					}
 				}
-					break;
-				case VIDEO_STATUS:
-				{
-					Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
-					String uid = obj.getString("uid");
-					JSONObject po = wb.get(uid);
-					if (po != null && "Video".equals(po.getString(ATTR_OMTYPE))) {
-						JSONObject ns = obj.getJSONObject(PARAM_STATUS);
-						po.put(PARAM_STATUS, ns.put(PARAM_UPDATED, System.currentTimeMillis()));
-						wbm.update(roomId, wb.put(uid, po));
-						obj.put(ATTR_SLIDE, po.getInt(ATTR_SLIDE));
-						sendWbAll(WbAction.VIDEO_STATUS, obj);
-					}
+			}
+				break;
+			case REDO:
+			{
+				Long wbId = obj.getLong("wbId");
+				UndoObject uo = getRedo(wbId);
+				if (uo != null) {
+					processActionWhiteboard(c, uo.getAction(), uo.getOrigObject(), true, handler);
+				}
+			}
+				break;
+			case VIDEO_STATUS:
+			{
+				Whiteboard wb = wbm.get(roomId).get(obj.getLong("wbId"));
+				String uid = obj.getString("uid");
+				JSONObject po = wb.get(uid);
+				if (po != null && "Video".equals(po.getString(ATTR_OMTYPE))) {
+					JSONObject ns = obj.getJSONObject(PARAM_STATUS);
+					po.put(PARAM_STATUS, ns.put(PARAM_UPDATED, System.currentTimeMillis()));
+					wbm.update(roomId, wb.put(uid, po));
+					obj.put(ATTR_SLIDE, po.getInt(ATTR_SLIDE));
+					sendWbAll(WbAction.VIDEO_STATUS, obj);
 				}
-					break;
-				default:
-					break;
 			}
+				break;
+			default:
+				break;
 		}
 	}
 
@@ -462,7 +513,7 @@ public class WbPanel extends AbstractWbPanel {
 		return file;
 	}
 
-	private static JSONArray getArray(JSONObject wb, Function<JSONObject, JSONObject> postprocess) {
+	private static JSONArray getArray(JSONObject wb, UnaryOperator<JSONObject> postprocess) {
 		JSONObject items = wb.getJSONObject(ITEMS_KEY);
 		JSONArray arr = new JSONArray();
 		for (String uid : items.keySet()) {
@@ -493,28 +544,7 @@ public class WbPanel extends AbstractWbPanel {
 				//do nothing
 				break;
 			case WML_FILE:
-			{
-				File f = fi.getFile();
-				if (f.exists() && f.isFile()) {
-					try (BufferedReader br = Files.newBufferedReader(f.toPath())) {
-						final boolean[] updated = {false};
-						JSONArray arr = getArray(new JSONObject(new JSONTokener(br)), o -> {
-								wb.put(o.getString("uid"), o);
-								updated[0] = true;
-								return addFileUrl(rp.getClient(), wbs.getUid(), o, bf -> updateWbSize(wb, bf));
-							});
-						if (sendAndUpdate) {
-							if (updated[0]) {
-								wbm.update(roomId, wb);
-							}
-							sendWbAll(WbAction.SET_SIZE, wb.getAddJson());
-							sendWbAll(WbAction.LOAD, getObjWbJson(wb.getId(), arr));
-						}
-					} catch (Exception e) {
-						log.error("Unexpected error while loading WB", e);
-					}
-				}
-			}
+				addWmlFileToWb(wbs, wb, fi, sendAndUpdate);
 				break;
 			case POLL_CHART:
 				break;
@@ -542,7 +572,7 @@ public class WbPanel extends AbstractWbPanel {
 				}
 				final String ruid = wbs.getUid();
 				if (clean) {
-					wbm.clearAll(roomId, wb.getId(), addUndo);
+					wbm.clearAll(roomId, wb.getId(), false, addUndo);
 				}
 				wb.put(wuid, file);
 				updateWbSize(wb, fi);
@@ -556,6 +586,29 @@ public class WbPanel extends AbstractWbPanel {
 		}
 	}
 
+	private void addWmlFileToWb(Whiteboards wbs, Whiteboard wb, final BaseFileItem fi, boolean sendAndUpdate) {
+		File f = fi.getFile();
+		if (f.exists() && f.isFile()) {
+			try (BufferedReader br = Files.newBufferedReader(f.toPath())) {
+				final boolean[] updated = {false};
+				JSONArray arr = getArray(new JSONObject(new JSONTokener(br)), o -> {
+						wb.put(o.getString("uid"), o);
+						updated[0] = true;
+						return addFileUrl(rp.getClient(), wbs.getUid(), o, bf -> updateWbSize(wb, bf));
+					});
+				if (sendAndUpdate) {
+					if (updated[0]) {
+						wbm.update(roomId, wb);
+					}
+					sendWbAll(WbAction.SET_SIZE, wb.getAddJson());
+					sendWbAll(WbAction.LOAD, getObjWbJson(wb.getId(), arr));
+				}
+			} catch (Exception e) {
+				log.error("Unexpected error while loading WB", e);
+			}
+		}
+	}
+
 	private void sendFileToWb(Long wbId, final BaseFileItem fi, boolean clean) {
 		if (isVisible()) {
 			Whiteboards wbs = wbm.get(roomId);
@@ -587,11 +640,40 @@ public class WbPanel extends AbstractWbPanel {
 	}
 
 	private UndoObject getUndo(Long wbId) {
-		if (wbId == null || !undoList.containsKey(wbId)) {
+		if (wbId == null) {
 			return null;
 		}
 		Deque<UndoObject> deq = undoList.get(wbId);
-		return deq.isEmpty() ? null : deq.pop();
+		if (deq == null || deq.isEmpty()) {
+			return null;
+		}
+		UndoObject undoObj = deq.pop();
+		redoList
+			.computeIfAbsent(wbId, id -> new LimitedLinkedList<>())
+			.push(undoObj);
+		return undoObj;
+	}
+
+	private void cleanRedo(Long wbId) {
+		if (wbId == null) {
+			return;
+		}
+		Deque<UndoObject> redoDeq = redoList.get(wbId);
+		if (redoDeq != null) {
+			redoDeq.clear();
+		}
+	}
+
+	private UndoObject getRedo(Long wbId) {
+		if (wbId == null) {
+			return null;
+		}
+		Deque<UndoObject> deq = redoList.get(wbId);
+		if (deq == null || deq.isEmpty()) {
+			return null;
+		}
+		UndoObject redoObj = deq.pop();
+		return redoObj;
 	}
 
 	private static class LimitedLinkedList<T> extends LinkedList<T> {
diff --git a/openmeetings-web/src/main/webapp/css/raw-wb.css b/openmeetings-web/src/main/webapp/css/raw-wb.css
index c1d78326f..74c00f9f2 100644
--- a/openmeetings-web/src/main/webapp/css/raw-wb.css
+++ b/openmeetings-web/src/main/webapp/css/raw-wb.css
@@ -144,7 +144,10 @@ html[dir="rtl"] .room-block .sb-wb .wb-block {
 	content: '\f0c7';
 }
 .room-block .sb-wb .wb-block .tools .om-icon.big.undo::before {
-	content: '\f0e2';
+	content: '\f3e5';
+}
+.room-block .sb-wb .wb-block .tools .om-icon.big.redo::before {
+	content: '\f064';
 }
 .room-block .sb-wb .wb-block .tools .om-icon.big.math::before {
 	content: '\f534';
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 f60db4436..2c88b72fd 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
@@ -154,7 +154,7 @@ public class WbWebService extends BaseWebService {
 	{
 		log.debug("[cleanWb] room id {}, wb id {}", roomId, wbId);
 		return performCall(sid, User.Right.SOAP, sd -> {
-			wbManager.clearAll(roomId, wbId, null);
+			wbManager.clearAll(roomId, wbId, false, null);
 			return new ServiceResult("", Type.SUCCESS);
 		});
 	}