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 c9606b1  [OPENMEETINGS-2072] wait-moderator seems to be implemented
c9606b1 is described below

commit c9606b143af4588633c584d3fa0a189135eaefd4
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Wed Dec 25 18:43:40 2019 +0700

    [OPENMEETINGS-2072] wait-moderator seems to be implemented
---
 .../apache/openmeetings/db/dto/room/RoomDTO.java   |  20 ++--
 .../apache/openmeetings/db/entity/room/Room.java   |  34 ++++---
 .../openmeetings/db/util/ws/RoomMessage.java       |   1 +
 .../installation/ImportInitvalues.java             |   2 +-
 .../openmeetings/web/admin/rooms/RoomForm.java     |   3 +-
 .../openmeetings/web/admin/rooms/RoomsPanel.html   |   6 +-
 .../web/app/Application.properties.xml             |   2 +
 .../web/app/Application_ar.properties.xml          |   2 +
 .../web/app/Application_bg.properties.xml          |   2 +
 .../web/app/Application_bn.properties.xml          |   2 +
 .../web/app/Application_ca.properties.xml          |   2 +
 .../web/app/Application_cs.properties.xml          |   2 +
 .../web/app/Application_da.properties.xml          |   2 +
 .../web/app/Application_de.properties.xml          |   2 +
 .../web/app/Application_el.properties.xml          |   2 +
 .../web/app/Application_es.properties.xml          |   2 +
 .../web/app/Application_fa.properties.xml          |   2 +
 .../web/app/Application_fi.properties.xml          |   2 +
 .../web/app/Application_fr.properties.xml          |   2 +
 .../web/app/Application_gl.properties.xml          |   2 +
 .../web/app/Application_he.properties.xml          |   2 +
 .../web/app/Application_hu.properties.xml          |   2 +
 .../web/app/Application_in.properties.xml          |   2 +
 .../web/app/Application_it.properties.xml          |   2 +
 .../web/app/Application_ja.properties.xml          |   2 +
 .../web/app/Application_ko.properties.xml          |   2 +
 .../web/app/Application_nl.properties.xml          |   2 +
 .../web/app/Application_pl.properties.xml          |   2 +
 .../web/app/Application_pt.properties.xml          |   2 +
 .../web/app/Application_pt_BR.properties.xml       |   2 +
 .../web/app/Application_ru.properties.xml          |   2 +
 .../web/app/Application_sk.properties.xml          |   2 +
 .../web/app/Application_sv.properties.xml          |   2 +
 .../web/app/Application_th.properties.xml          |   2 +
 .../web/app/Application_tr.properties.xml          |   2 +
 .../web/app/Application_uk.properties.xml          |   2 +
 .../web/app/Application_zh_CN.properties.xml       |   2 +
 .../web/app/Application_zh_TW.properties.xml       |   2 +
 .../apache/openmeetings/web/app/TimerService.java  |  77 ++++++++++++++++
 .../apache/openmeetings/web/pages/HashPage.java    |   6 +-
 .../web/pages/InvitationPasswordDialog.java        |   6 +-
 .../web/pages/auth/KickMessageDialog.java          |   6 +-
 .../openmeetings/web/pages/auth/SignInDialog.java  |   6 +-
 .../web/pages/install/InstallWizard.java           |   6 +-
 .../openmeetings/web/room/NicknameDialog.java      |   6 +-
 ...rectTimerBehavior.java => OmTimerBehavior.java} |   8 +-
 .../web/room/RedirectMessageDialog.java            |  13 ++-
 .../apache/openmeetings/web/room/RoomPanel.html    |   5 +-
 .../apache/openmeetings/web/room/RoomPanel.java    | 101 ++++++++++++++-------
 .../openmeetings/web/room/WaitModeratorDialog.html |  25 +++++
 .../WaitModeratorDialog.java}                      |  37 ++++----
 .../web/room/WaitModeratorDialog_ru.html           |  25 +++++
 .../openmeetings/web/room/menu/RoomMenuPanel.java  |   4 +-
 .../web/util/NonClosableMessageDialog.java         |   7 ++
 .../webservice/TestCalendarService.java            |  11 +--
 pom.xml                                            |   2 +-
 56 files changed, 376 insertions(+), 105 deletions(-)

diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
index 70869a3..5ae519d 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
@@ -62,9 +62,10 @@ public class RoomDTO implements Serializable {
        private String externalType;
        private String redirectUrl;
        private boolean moderated;
+       private boolean waitModerator;
        private boolean allowUserQuestions;
        private boolean allowRecording;
-       private boolean waitForRecording;
+       private boolean waitRecording;
        private boolean audioOnly;
        private Set<RoomElement> hiddenElements = new HashSet<>();
        private List<RoomFileDTO> files = new ArrayList<>();
@@ -89,9 +90,10 @@ public class RoomDTO implements Serializable {
                externalType = r.externalType();
                redirectUrl = r.getRedirectURL();
                moderated = r.isModerated();
+               waitModerator = r.isWaitModerator();
                allowUserQuestions = r.isAllowUserQuestions();
                allowRecording = r.isAllowRecording();
-               waitForRecording = r.isWaitForRecording();
+               waitRecording = r.isWaitRecording();
                audioOnly = r.isAudioOnly();
                hiddenElements = r.getHiddenElements();
                files = RoomFileDTO.get(r.getFiles());
@@ -117,9 +119,10 @@ public class RoomDTO implements Serializable {
                }
                r.setRedirectURL(redirectUrl);
                r.setModerated(moderated);
+               r.setWaitModerator(waitModerator);
                r.setAllowUserQuestions(allowUserQuestions);
                r.setAllowRecording(allowRecording);
-               r.setWaitForRecording(waitForRecording);
+               r.setWaitRecording(waitRecording);
                r.setAudioOnly(audioOnly);
                r.setHiddenElements(hiddenElements);
                r.setFiles(RoomFileDTO.get(id, files, fileDao));
@@ -222,12 +225,12 @@ public class RoomDTO implements Serializable {
                this.allowRecording = allowRecording;
        }
 
-       public boolean isWaitForRecording() {
-               return waitForRecording;
+       public boolean isWaitRecording() {
+               return waitRecording;
        }
 
-       public void setWaitForRecording(boolean waitForRecording) {
-               this.waitForRecording = waitForRecording;
+       public void setWaitRecording(boolean waitRecording) {
+               this.waitRecording = waitRecording;
        }
 
        public boolean isAudioOnly() {
@@ -328,9 +331,10 @@ public class RoomDTO implements Serializable {
                r.externalType = o.optString("externalType", null);
                r.redirectUrl = o.optString("redirectUrl");
                r.moderated = o.optBoolean("moderated", false);
+               r.waitModerator = o.optBoolean("waitModerator", false);
                r.allowUserQuestions = o.optBoolean("allowUserQuestions", 
false);
                r.allowRecording = o.optBoolean("allowRecording", false);
-               r.waitForRecording = o.optBoolean("waitForRecording", false);
+               r.waitRecording = o.optBoolean("waitRecording", false);
                r.audioOnly = o.optBoolean("audioOnly", false);
                r.getHiddenElements().addAll(optEnumList(RoomElement.class, 
o.optJSONArray("hiddenElements")));
                JSONArray fa = o.optJSONArray("files");
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
index 43e6657..fcd6297 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
@@ -214,21 +214,26 @@ public class Room extends HistoricalEntity {
        @Element(data = true, required = false)
        private Integer demoTime; // In Seconds
 
-       // If this is true all participants of a meeting have to wait for the
-       // moderator to come into the room
-       @Column(name = "ismoderatedroom", nullable = false)
+       // If this is true noone can automatically get additional rights
+       @Column(name = "moderated", nullable = false)
        @Element(name="isModeratedRoom", data = true, required = false)
        private boolean moderated;
 
+       // If this is true all participants of a meeting have to wait for the
+       // moderator to come into the room
+       @Column(name = "wait_moderator", nullable = false)
+       @Element(name="waitModerator", data = true, required = false)
+       private boolean waitModerator;
+
        @Column(name = "allow_user_questions", nullable = false)
        @Element(data = true, required = false)
        private boolean allowUserQuestions;
 
-       @Column(name = "is_audio_only", nullable = false)
+       @Column(name = "audio_only", nullable = false)
        @Element(name = "isAudioOnly", data = true, required = false)
        private boolean audioOnly;
 
-       @Column(name = "is_closed", nullable = false)
+       @Column(name = "closed", nullable = false)
        @Element(data = true, required = false)
        private boolean closed;
 
@@ -242,8 +247,7 @@ public class Room extends HistoricalEntity {
 
        @Column(name = "wait_for_recording", nullable = false)
        @Element(data = true, required = false)
-       private boolean waitForRecording; // Show warning that user has to start
-                                                                               
// recording
+       private boolean waitRecording; // Show warning that user has to start 
recording
 
        @Column(name = "allow_recording", nullable = false)
        @Element(name = "allowRecording", data = true, required = false)
@@ -383,6 +387,14 @@ public class Room extends HistoricalEntity {
                this.moderated = moderated;
        }
 
+       public boolean isWaitModerator() {
+               return waitModerator;
+       }
+
+       public void setWaitModerator(boolean waitModerator) {
+               this.waitModerator = waitModerator;
+       }
+
        public String getExternalId() {
                return externalId;
        }
@@ -455,12 +467,12 @@ public class Room extends HistoricalEntity {
                this.ownerId = ownerId;
        }
 
-       public boolean isWaitForRecording() {
-               return waitForRecording;
+       public boolean isWaitRecording() {
+               return waitRecording;
        }
 
-       public void setWaitForRecording(boolean waitForRecording) {
-               this.waitForRecording = waitForRecording;
+       public void setWaitRecording(boolean waitRecording) {
+               this.waitRecording = waitRecording;
        }
 
        public boolean isAllowRecording() {
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
index 3331380..9d21420 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
@@ -55,6 +55,7 @@ public class RoomMessage implements IWebSocketPushMessage {
                , quickPollUpdated
                , kurentoStatus
                , wbReload
+               , moderatorInRoom
        }
        private final Date timestamp;
        private final String uid;
diff --git 
a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
 
b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
index 65705c0..18274de 100644
--- 
a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
+++ 
b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
@@ -391,7 +391,7 @@ public class ImportInitvalues {
 
                r.setOwnerId(null);
 
-               r.setWaitForRecording(false);
+               r.setWaitRecording(false);
                r.setAllowRecording(true);
 
                if (groupId != null) {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
index d3d3444..722b33a 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
@@ -210,7 +210,7 @@ public class RoomForm extends AdminBaseForm<Room> {
                add(new CheckBox("audioOnly"));
                add(new CheckBox("closed"));
                add(new TextField<String>("redirectURL"));
-               add(new CheckBox("waitForRecording"));
+               add(new CheckBox("waitRecording"));
                add(new CheckBox("allowRecording"));
                add(new CheckBox("chatModerated"));
 
@@ -321,6 +321,7 @@ public class RoomForm extends AdminBaseForm<Room> {
                }).setOutputMarkupId(true));
 
                add(new CheckBox("moderated"));
+               add(new CheckBox("waitModerator"));
 
                // Files
                Form<Void> filesForm = new Form<>("filesForm");
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
index 87b196c..65bc1e4 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
@@ -109,7 +109,7 @@
                                        <div class="formelement">
                                                <div 
class="info-text"><wicket:message key="1102" /></div>
                                                <br/>
-                                               <label 
wicket:for="waitForRecording"><wicket:message key="1356" /></label><input 
type="checkbox" class="formcheckbox" wicket:id="waitForRecording" />
+                                               <label 
wicket:for="waitRecording"><wicket:message key="1356" /></label><input 
type="checkbox" class="formcheckbox" wicket:id="waitRecording" />
                                        </div>
                                        <div class="formelement">
                                                <label 
wicket:for="allowRecording"><wicket:message key="1355" /></label><input 
type="checkbox" class="formcheckbox" wicket:id="allowRecording" />
@@ -203,6 +203,10 @@
                                                <label 
wicket:for="moderated"><wicket:message key="640" /></label><input 
type="checkbox" class="formcheckbox" wicket:id="moderated" />
                                        </div>
                                        <div class="formelement">
+                                               <div 
class="info-text"><wicket:message key="admin.room.wait-moderator.info" /></div>
+                                               <label 
wicket:for="waitModerator"><wicket:message 
key="admin.room.wait-moderator.label" /></label><input type="checkbox" 
class="formcheckbox" wicket:id="waitModerator" />
+                                       </div>
+                                       <div class="formelement">
                                                <label 
wicket:for="moderator2add"><wicket:message key="816" /></label><div 
class="om-select2"><select wicket:id="moderator2add" 
class="input"></select></div>
                                        </div>
                                        <div class="formelement" 
wicket:id="moderatorContainer">
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 0ad716f..fd7bd7f 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 9217961..cf28b24 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 2307981..8e8489d 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 c639112..a17c4f4 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 975f3c8..22a888f 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 38cada5..a67c017 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 723ddc8..8c1d3fa 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 9ea120e..22cc010 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
@@ -1004,4 +1004,6 @@ see https://openmeetings.apache.org/LanguageEditor.html 
for Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 2ada9a9..dd481b3 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 606e551..237f84d 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
@@ -997,4 +997,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 cba9850..263484d 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
@@ -991,4 +991,6 @@ target="_blank">Custom Crypt Mechanism</a>
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 09f1a23..045fb07 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 394b611..b9cdd39 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 80157fb..c295059 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 0ad716f..fd7bd7f 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 adb0ccb..0b7b55a 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
@@ -987,4 +987,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_in.properties.xml
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_in.properties.xml
index c9f1a00..3fb2ee8 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_in.properties.xml
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_in.properties.xml
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 490890a..e16fa70 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
@@ -1000,4 +1000,6 @@ see https://openmeetings.apache.org/LanguageEditor.html 
for Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 f866a62..c454a95 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 0e2c1f7..5c22185 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 e7df5ce..c7b3b45 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 0f57712..909d135 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 0b165ef..5d4e3b6 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 f15d3e9..70c86f8 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 ad2c449..72587b6 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Настройки доски]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Камера/Микрофон 
скорее всего не будут работать без HTTPS.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Восстановить начальную 
доску]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[Никто не сможет 
воспользоваться комнатой пока нет модератора]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Ждать 
модератора]]></entry>
 </properties>
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 99f9016..b927cff 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 582497b..37ed2d7 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 ded2528..c671215 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 8836d05..d678d48 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 f25e329..e757856 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
@@ -998,4 +998,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 2284158..695042d 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
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 2d18c7d..5238761 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
@@ -999,4 +999,6 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="lbl.settings.whiteboard"><![CDATA[Whiteboard 
Settings]]></entry>
        <entry key="video.settings.https.required"><![CDATA[Camera/microphone 
most probably will not work in insecure environment.]]></entry>
        <entry key="reset.whiteboard"><![CDATA[Reset Whiteboard]]></entry>
+       <entry key="admin.room.wait-moderator.info"><![CDATA[No one can use 
room until moderator will join]]></entry>
+       <entry key="admin.room.wait-moderator.label"><![CDATA[Wait 
moderator]]></entry>
 </properties>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/TimerService.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/TimerService.java
new file mode 100644
index 0000000..d31fa1f
--- /dev/null
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/TimerService.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.app;
+
+import static java.util.concurrent.CompletableFuture.delayedExecutor;
+
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
+
+import javax.annotation.PostConstruct;
+
+import org.apache.openmeetings.core.util.WebSocketHelper;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.Room.Right;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.util.ws.RoomMessage;
+import org.apache.openmeetings.db.util.ws.TextRoomMessage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TimerService {
+       private static final Logger log = 
LoggerFactory.getLogger(TimerService.class);
+       private int modCheckInterval = 5;
+       private final User sysUser = new User();
+       private final Map<Long, CompletableFuture<Object>> modCheckMap = new 
ConcurrentHashMap<>();
+
+       @Autowired
+       private ClientManager cm;
+
+       @PostConstruct
+       private void init() {
+               sysUser.setId(-1L);
+               sysUser.setDisplayName("System");
+       }
+
+       private void doModCheck(Long roomId) {
+               modCheckMap.put(
+                               roomId
+                               , new CompletableFuture<>().completeAsync(() -> 
{
+                                       log.warn("Moderator room check {}", 
roomId);
+                                       if (cm.listByRoom(roomId).isEmpty()) {
+                                               modCheckMap.remove(roomId);
+                                       } else {
+                                               WebSocketHelper.sendRoom(new 
TextRoomMessage(roomId, sysUser, RoomMessage.Type.moderatorInRoom, "" + 
!cm.listByRoom(roomId, c -> c.hasRight(Right.moderator)).isEmpty()));
+                                               doModCheck(roomId);
+                                       }
+                                       return null;
+                               }, delayedExecutor(modCheckInterval, 
TimeUnit.SECONDS)));
+       }
+
+       public void scheduleModCheck(Room r) {
+               if (r.isModerated() && r.isWaitModerator() && 
!cm.listByRoom(r.getId()).isEmpty() && !modCheckMap.containsKey(r.getId())) {
+                       doModCheck(r.getId());
+               }
+       }
+}
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
index e9830f3..c5d7fe7 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
@@ -216,7 +216,11 @@ public class HashPage extends BaseInitedPage implements 
IUpdatable {
                        public void onConfigure(JQueryBehavior behavior) {
                                super.onConfigure(behavior);
                                behavior.setOption("autoOpen", error);
-                               behavior.setOption("resizable", false);
+                       }
+
+                       @Override
+                       public boolean isResizable() {
+                               return false;
                        }
 
                        @Override
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java
index 710412e..e3ccc19 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java
@@ -95,7 +95,11 @@ public class InvitationPasswordDialog extends 
NonClosableDialog<Invitation> {
                super.onConfigure(behavior);
                Invitation i = WebSession.get().getInvitation();
                behavior.setOption("autoOpen", i != null && 
i.isPasswordProtected());
-               behavior.setOption("resizable", false);
+       }
+
+       @Override
+       public boolean isResizable() {
+               return false;
        }
 
        @Override
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
index f247526..894cdd9 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
@@ -41,12 +41,16 @@ public class KickMessageDialog extends 
AbstractDialog<String> {
        }
 
        @Override
+       public boolean isResizable() {
+               return false;
+       }
+
+       @Override
        public void onConfigure(JQueryBehavior behavior) {
                super.onConfigure(behavior);
                behavior.setOption("autoOpen", true);
                behavior.setOption("closeOnEscape", false);
                behavior.setOption("classes", "{'ui-dialog-titlebar': 
'ui-corner-all no-close'}");
-               behavior.setOption("resizable", false);
        }
 
        @Override
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
index 8ad70e4..0698b44 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
@@ -130,7 +130,11 @@ public class SignInDialog extends 
NonClosableDialog<String> {
        public void onConfigure(JQueryBehavior behavior) {
                super.onConfigure(behavior);
                behavior.setOption("autoOpen", true);
-               behavior.setOption("resizable", false);
+       }
+
+       @Override
+       public boolean isResizable() {
+               return false;
        }
 
        @Override
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
index 41be11a..ad544eb 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
@@ -137,7 +137,11 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
                super.onConfigure(behavior);
                behavior.setOption("closeOnEscape", false);
                behavior.setOption("classes", "{'ui-dialog-titlebar': 
'ui-corner-all no-close'}");
-               behavior.setOption("resizable", false);
+       }
+
+       @Override
+       public boolean isResizable() {
+               return false;
        }
 
        @Override
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
index f46ed28..8029183 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
@@ -87,7 +87,11 @@ public class NicknameDialog extends NonClosableDialog<User> {
                        u.setLastname(String.format("%s %s", u.getFirstname(), 
TIME_DF.format(new Date())));
                }
                behavior.setOption("autoOpen", visible);
-               behavior.setOption("resizable", false);
+       }
+
+       @Override
+       public boolean isResizable() {
+               return false;
        }
 
        @Override
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/OmRedirectTimerBehavior.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/OmTimerBehavior.java
similarity index 89%
rename from 
openmeetings-web/src/main/java/org/apache/openmeetings/web/room/OmRedirectTimerBehavior.java
rename to 
openmeetings-web/src/main/java/org/apache/openmeetings/web/room/OmTimerBehavior.java
index 76a198f..3d3cdd7 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/OmRedirectTimerBehavior.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/OmTimerBehavior.java
@@ -23,13 +23,13 @@ import java.time.Duration;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 
-public abstract class OmRedirectTimerBehavior extends 
AbstractAjaxTimerBehavior {
+public abstract class OmTimerBehavior extends AbstractAjaxTimerBehavior {
        private static final long serialVersionUID = 1L;
        private final long clock;
        private final int delay;
        private final String labelId;
 
-       public OmRedirectTimerBehavior(int delay, String labelId) {
+       public OmTimerBehavior(int delay, String labelId) {
                super(Duration.ofSeconds(1));
                clock = System.currentTimeMillis();
                this.delay = delay;
@@ -41,7 +41,7 @@ public abstract class OmRedirectTimerBehavior extends 
AbstractAjaxTimerBehavior
        }
 
        public static String getText(String text, int remain) {
-               return String.format("%s: %s", text, getTime(remain));
+               return text + ": " + getTime(remain);
        }
 
        protected String getText(int remain) {
@@ -61,7 +61,7 @@ public abstract class OmRedirectTimerBehavior extends 
AbstractAjaxTimerBehavior
        }
 
        /**
-        * @param remain - time in seconds until redirect
+        * @param remain - time in seconds until finish
         */
        protected void onTimer(int remain) {
        }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
index 59478f8..033fabb 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
@@ -59,7 +59,7 @@ public class RedirectMessageDialog extends 
NonClosableMessageDialog {
        }
 
        private void startTimer(IPartialPageRequestHandler handler) {
-               label.add(new OmRedirectTimerBehavior(DELAY, labelId) {
+               label.add(new OmTimerBehavior(DELAY, labelId) {
                        private static final long serialVersionUID = 1L;
 
                        @Override
@@ -86,7 +86,11 @@ public class RedirectMessageDialog extends 
NonClosableMessageDialog {
        public void onConfigure(JQueryBehavior behavior) {
                super.onConfigure(behavior);
                behavior.setOption("autoOpen", autoOpen);
-               behavior.setOption("resizable", false);
+       }
+
+       @Override
+       public boolean isResizable() {
+               return false;
        }
 
        @Override
@@ -100,11 +104,6 @@ public class RedirectMessageDialog extends 
NonClosableMessageDialog {
        }
 
        @Override
-       public void onClose(IPartialPageRequestHandler handler, DialogButton 
button) {
-               //no-op
-       }
-
-       @Override
        protected Component newLabel(String id, IModel<String> model) {
                label = super.newLabel(id, model);
                return label;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
index 765de12..c096fce 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
@@ -32,11 +32,12 @@
                <div wicket:id="event-details"></div>
                <div wicket:id="access-denied"></div>
                <div wicket:id="room-closed"></div>
-               <div wicket:id="wait-for-recording"></div>
+               <div wicket:id="wait-recording"></div>
                <div wicket:id="nickname"></div>
                <div wicket:id="client-kicked"></div>
-               <div wicket:id="wait-for-moderator"></div>
+               <div wicket:id="wait-moderator"></div>
                <div wicket:id="wait-apply-moderation"></div>
+               <div wicket:id="noone-can-help"></div>
        </div>
        <div id="disconnected-dlg" wicket:message="title:204, data-reload:753" 
style="display:none">
                <wicket:message key="556"/>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 81e174f..1cfbed5 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -59,6 +59,7 @@ import org.apache.openmeetings.db.util.ws.TextRoomMessage;
 import org.apache.openmeetings.util.NullStringer;
 import org.apache.openmeetings.web.app.ClientManager;
 import org.apache.openmeetings.web.app.QuickPollManager;
+import org.apache.openmeetings.web.app.TimerService;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.BasePanel;
 import org.apache.openmeetings.web.pages.BasePage;
@@ -189,7 +190,8 @@ public class RoomPanel extends BasePanel {
                }
        };
        private RedirectMessageDialog roomClosed;
-       private MessageDialog clientKicked, waitForModerator, 
waitApplyModeration;
+       private MessageDialog clientKicked, nooneCanHelp, waitApplyModeration;
+       private WaitModeratorDialog waitModerator;
 
        private RoomMenuPanel menu;
        private RoomSidebar sidebar;
@@ -244,6 +246,8 @@ public class RoomPanel extends BasePanel {
        private KurentoHandler kHandler;
        @SpringBean
        private StreamProcessor streamProcessor;
+       @SpringBean
+       private TimerService timerService;
 
        public RoomPanel(String id, Room r) {
                super(id);
@@ -264,6 +268,7 @@ public class RoomPanel extends BasePanel {
                cm.update(getClient().updateUser(userDao));
                Component accessDenied = new 
WebMarkupContainer(ACCESS_DENIED_ID).setVisible(false);
 
+               room.setOutputMarkupPlaceholderTag(true);
                room.add(menu = new RoomMenuPanel("menu", this));
                room.add(AttributeModifier.append("data-room-id", r.getId()));
                if (interview) {
@@ -359,7 +364,7 @@ public class RoomPanel extends BasePanel {
                                room.setVisible(false);
                        }
                }
-               waitForModerator = new MessageDialog("wait-for-moderator", 
getString("204"), getString("696"), DialogButtons.OK, DialogIcon.LIGHT) {
+               nooneCanHelp = new MessageDialog("noone-can-help", 
getString("204"), getString("696"), DialogButtons.OK, DialogIcon.LIGHT) {
                        private static final long serialVersionUID = 1L;
 
                        @Override
@@ -375,16 +380,19 @@ public class RoomPanel extends BasePanel {
                                // no-op
                        }
                };
-               add(room, accessDenied, eventDetail, waitForModerator, 
waitApplyModeration);
-               if (r.isWaitForRecording()) {
-                       add(new MessageDialog("wait-for-recording", 
getString("1316"), getString("1315"), DialogButtons.OK, DialogIcon.LIGHT) {
+               if (r.isWaitRecording()) {
+                       add(new MessageDialog("wait-recording", 
getString("1316"), getString("1315"), DialogButtons.OK, DialogIcon.LIGHT) {
                                private static final long serialVersionUID = 1L;
 
                                @Override
                                public void onConfigure(JQueryBehavior 
behavior) {
                                        super.onConfigure(behavior);
                                        behavior.setOption("autoOpen", true);
-                                       behavior.setOption("resizable", false);
+                               }
+
+                               @Override
+                               public boolean isResizable() {
+                                       return false;
                                }
 
                                @Override
@@ -393,7 +401,7 @@ public class RoomPanel extends BasePanel {
                                }
                        });
                } else {
-                       add(new 
WebMarkupContainer("wait-for-recording").setVisible(false));
+                       add(new 
WebMarkupContainer("wait-recording").setVisible(false));
                }
                RepeatingView groupstyles = new RepeatingView("groupstyle");
                add(groupstyles.setVisible(room.isVisible() && 
!r.getGroups().isEmpty()));
@@ -408,9 +416,37 @@ public class RoomPanel extends BasePanel {
                                                ));
                                groupstyles.add(groupstyle);
                        }
+                       //We are setting initial rights here
+                       Client c = getClient();
+                       final int count = cm.addToRoom(c.setRoom(getRoom()));
+                       SOAPLogin soap = WebSession.get().getSoapLogin();
+                       if (soap != null && soap.isModerator()) {
+                               c.allow(Right.superModerator);
+                               cm.update(c);
+                       } else {
+                               Set<Right> rr = 
AuthLevelUtil.getRoomRight(c.getUser(), r, r.isAppointment() ? 
apptDao.getByRoom(r.getId()) : null, count);
+                               if (!rr.isEmpty()) {
+                                       c.allow(rr);
+                                       cm.update(c);
+                                       log.info("Setting rights for client:: 
{} -> {}", rr, c.hasRight(Right.moderator));
+                               }
+                       }
+                       if (r.isModerated() && r.isWaitModerator()
+                                       && !c.hasRight(Right.moderator)
+                                       && cm.listByRoom(r.getId(), cl -> 
cl.hasRight(Right.moderator)).isEmpty())
+                       {
+                               room.setVisible(false);
+                               createWaitModerator(true);
+                               getMainPanel().getChat().toggle(null, false);
+                       }
+                       timerService.scheduleModCheck(r);
                } else {
                        add(new 
WebMarkupContainer("nickname").setVisible(false));
                }
+               if (waitModerator == null) {
+                       createWaitModerator(false);
+               }
+               add(room, accessDenied, eventDetail, waitModerator, 
nooneCanHelp, waitApplyModeration);
                add(clientKicked = new MessageDialog("client-kicked", 
getString("797"), getString("606"), DialogButtons.OK, DialogIcon.ERROR) {
                        private static final long serialVersionUID = 1L;
 
@@ -555,6 +591,25 @@ public class RoomPanel extends BasePanel {
                                                        wb.reloadWb(handler);
                                                }
                                                break;
+                                       case moderatorInRoom: {
+                                               if (!r.isModerated() || 
!r.isWaitModerator()) {
+                                                       log.warn("Something 
weird: `moderatorInRoom` in wrong room {}", r);
+                                               } else if 
(!_c.hasRight(Room.Right.moderator)) {
+                                                       boolean moderInRoom = 
Boolean.TRUE.equals(Boolean.valueOf(((TextRoomMessage)m).getText()));
+                                                       log.warn("!! 
moderatorInRoom: {}", moderInRoom);
+                                                       if (room.isVisible() != 
moderInRoom) {
+                                                               
handler.add(room.setVisible(moderInRoom));
+                                                               
getMainPanel().getChat().toggle(handler, moderInRoom && 
!r.isHidden(RoomElement.Chat));
+                                                               if 
(room.isVisible()) {
+                                                                       
handler.appendJavaScript(roomEnter.getCallbackScript());
+                                                                       
waitModerator.close(handler, null);
+                                                               } else {
+                                                                       
waitModerator.open(handler);
+                                                               }
+                                                       }
+                                               }
+                                       }
+                                               break;
                                }
                        }
                }
@@ -583,28 +638,6 @@ public class RoomPanel extends BasePanel {
                }
        }
 
-       @Override
-       protected void onBeforeRender() {
-               super.onBeforeRender();
-               if (room.isVisible()) {
-                       //We are setting initial rights here
-                       Client c = getClient();
-                       final int count = cm.addToRoom(c.setRoom(getRoom()));
-                       SOAPLogin soap = WebSession.get().getSoapLogin();
-                       if (soap != null && soap.isModerator()) {
-                               c.allow(Right.superModerator);
-                               cm.update(c);
-                       } else {
-                               Set<Right> rr = 
AuthLevelUtil.getRoomRight(c.getUser(), r, r.isAppointment() ? 
apptDao.getByRoom(r.getId()) : null, count);
-                               if (!rr.isEmpty()) {
-                                       c.allow(rr);
-                                       cm.update(c);
-                                       log.info("Setting rights for client:: 
{} -> {}", rr, cm.get(c.getUid()).hasRight(Right.moderator));
-                               }
-                       }
-               }
-       }
-
        public boolean isModerator(long userId, long roomId) {
                return isModerator(cm, userId, roomId);
        }
@@ -640,9 +673,7 @@ public class RoomPanel extends BasePanel {
        }
 
        public void show(IPartialPageRequestHandler handler) {
-               if (!r.isHidden(RoomElement.Chat)) {
-                       getMainPanel().getChat().toggle(handler, true);
-               }
+               getMainPanel().getChat().toggle(handler, 
!r.isHidden(RoomElement.Chat));
                handler.add(this.setVisible(true));
                handler.appendJavaScript("Room.load();");
        }
@@ -677,7 +708,7 @@ public class RoomPanel extends BasePanel {
                if (mods.isEmpty()) {
                        if (r.isModerated()) {
                                //dialog
-                               waitForModerator.open(handler);
+                               nooneCanHelp.open(handler);
                                return;
                        } else {
                                // we found no-one we can ask, allow right
@@ -791,6 +822,10 @@ public class RoomPanel extends BasePanel {
                return interview;
        }
 
+       private void createWaitModerator(final boolean autoopen) {
+               waitModerator = new WaitModeratorDialog("wait-moderator", 
getString("204"), autoopen);
+       }
+
        @Override
        protected String getCssClass() {
                String clazz = "room " + r.getType().name();
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/WaitModeratorDialog.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/WaitModeratorDialog.html
new file mode 100644
index 0000000..fd5949b
--- /dev/null
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/WaitModeratorDialog.html
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<!DOCTYPE html>
+<html xmlns:wicket="http://wicket.apache.org";>
+<wicket:panel>
+       Please wait until <b>moderator</b> will enter the room
+</wicket:panel>
+</html>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/WaitModeratorDialog.java
similarity index 71%
copy from 
openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
copy to 
openmeetings-web/src/main/java/org/apache/openmeetings/web/room/WaitModeratorDialog.java
index f247526..9b217c0 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/WaitModeratorDialog.java
@@ -16,43 +16,42 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.pages.auth;
+package org.apache.openmeetings.web.room;
+
+import java.util.List;
 
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.html.basic.Label;
 
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.core.Options;
 import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 
-public class KickMessageDialog extends AbstractDialog<String> {
+public class WaitModeratorDialog extends AbstractDialog<String> {
        private static final long serialVersionUID = 1L;
+       private final boolean autoopen;
 
-       public KickMessageDialog(String id) {
-               super(id, "");
-       }
-
-       @Override
-       protected void onInitialize() {
-               super.onInitialize();
-               add(new Label("message", getString("606")));
+       public WaitModeratorDialog(String id, String title, boolean autoopen) {
+               super(id, title);
+               this.autoopen = autoopen;
        }
 
        @Override
        public void onConfigure(JQueryBehavior behavior) {
                super.onConfigure(behavior);
-               behavior.setOption("autoOpen", true);
-               behavior.setOption("closeOnEscape", false);
                behavior.setOption("classes", "{'ui-dialog-titlebar': 
'ui-corner-all no-close'}");
-               behavior.setOption("resizable", false);
+               behavior.setOption("closeOnEscape", false);
+               behavior.setOption("autoOpen", autoopen);
+               behavior.setOption("appendTo", Options.asString(".room-block"));
        }
 
        @Override
-       public void onClose(IPartialPageRequestHandler handler, DialogButton 
button) {
-               WebSession.setKickedByAdmin(false);
-               Application.get().restartResponseAtSignInPage();
+       protected List<DialogButton> getButtons() {
+               return List.of();
        }
 
+       @Override
+       public void onClose(IPartialPageRequestHandler handler, DialogButton 
button) {
+               // no-op
+       }
 }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/WaitModeratorDialog_ru.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/WaitModeratorDialog_ru.html
new file mode 100644
index 0000000..6dd59eb
--- /dev/null
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/WaitModeratorDialog_ru.html
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<!DOCTYPE html>
+<html xmlns:wicket="http://wicket.apache.org";>
+<wicket:panel>
+       Пожалуйста дождитесь появления <b>модератора</b>
+</wicket:panel>
+</html>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
index 28e6447..51ddc6a 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
@@ -49,7 +49,7 @@ import org.apache.openmeetings.web.common.ImagePanel;
 import org.apache.openmeetings.web.common.OmButton;
 import org.apache.openmeetings.web.common.menu.MenuPanel;
 import org.apache.openmeetings.web.common.menu.RoomMenuItem;
-import org.apache.openmeetings.web.room.OmRedirectTimerBehavior;
+import org.apache.openmeetings.web.room.OmTimerBehavior;
 import org.apache.openmeetings.web.room.RoomPanel;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -155,7 +155,7 @@ public class RoomMenuPanel extends Panel {
                Room r = room.getRoom();
                add(demo.setVisible(r.isDemoRoom() && r.getDemoTime() != null 
&& room.getRoom().getDemoTime().intValue() > 0));
                if (demo.isVisible()) {
-                       demo.add(new 
OmRedirectTimerBehavior(room.getRoom().getDemoTime().intValue(), "637") {
+                       demo.add(new 
OmTimerBehavior(room.getRoom().getDemoTime().intValue(), "637") {
                                private static final long serialVersionUID = 1L;
 
                                @Override
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/NonClosableMessageDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/NonClosableMessageDialog.java
index 6a537c1..2351fde 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/NonClosableMessageDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/NonClosableMessageDialog.java
@@ -20,6 +20,8 @@ package org.apache.openmeetings.web.util;
 
 import java.util.List;
 
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
@@ -43,4 +45,9 @@ public abstract class NonClosableMessageDialog extends 
MessageDialog {
                behavior.setOption("classes", "{'ui-dialog-titlebar': 
'ui-corner-all no-close'}");
                behavior.setOption("closeOnEscape", false);
        }
+
+       @Override
+       public void onClose(IPartialPageRequestHandler handler, DialogButton 
button) {
+               // no-op
+       }
 }
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
index b70e033..470a020 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/webservice/TestCalendarService.java
@@ -108,15 +108,8 @@ public class TestCalendarService extends 
AbstractWebServiceTest {
                                        .put("moderated", true)
                                        .put("allowUserQuestions", true)
                                        .put("allowRecording", false)
-                                       .put("waitForRecording", false)
-                                       .put("audioOnly", true)
-                                       .put("topBarHidden", false)
-                                       .put("chatHidden", false)
-                                       .put("activitiesHidden", false)
-                                       .put("filesExplorerHidden", false)
-                                       .put("actionsMenuHidden", false)
-                                       .put("screenSharingHidden", false)
-                                       .put("whiteboardHidden", false))
+                                       .put("waitRecording", false)
+                                       .put("audioOnly", true))
                        .put("languageId", 9)
                        .put("passwordProtected", false)
                        .put("connectedEvent", false)
diff --git a/pom.xml b/pom.xml
index 7c73f0d..7385c22 100644
--- a/pom.xml
+++ b/pom.xml
@@ -76,7 +76,7 @@
                <junit.version>5.5.2</junit.version>
                <wicket.version>9.0.0-M3</wicket.version>
                <wicketju.version>9.0.0-M3.1</wicketju.version>
-               <wickets.version>9.0.1-M3</wickets.version>
+               <wickets.version>9.0.0-M4-SNAPSHOT</wickets.version>
                <red5-client.version>1.2.3</red5-client.version>
                <spring.version>5.2.2.RELEASE</spring.version>
                <mina.version>2.1.3</mina.version>

Reply via email to