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 <solomax...@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); }); }