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 b5886bd  [OPENMEETINGS-2081] some ajax calls are moved to WS
b5886bd is described below

commit b5886bd1173eb794a0a2c5ea2909b8596a7bde4e
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Sun Aug 18 19:42:07 2019 +0700

    [OPENMEETINGS-2081] some ajax calls are moved to WS
---
 .../openmeetings/db/dto/room/Whiteboard.java       |   1 +
 .../web/app/Application_ru.properties.xml          |   2 +-
 .../org/apache/openmeetings/web/common/main.js     |   3 +
 .../apache/openmeetings/web/pages/MainPage.java    |  10 +-
 .../apache/openmeetings/web/room/RoomPanel.java    |   5 +-
 .../org/apache/openmeetings/web/room/raw-sharer.js |   1 -
 .../openmeetings/web/room/raw-video-manager.js     |   2 +-
 .../org/apache/openmeetings/web/room/raw-video.js  |   2 +-
 .../openmeetings/web/room/sidebar/RoomSidebar.java | 165 ++++++++++-----------
 .../web/room/sidebar/icon/ClientIcon.java          |  13 +-
 .../web/room/sidebar/icon/KickIcon.java            |   4 +-
 .../web/room/sidebar/icon/right/RoomRightIcon.java |   6 +-
 .../apache/openmeetings/web/room/wb/WbPanel.java   |   3 +-
 .../openmeetings/web/room/wb/raw-tool-apointer.js  |   2 +-
 .../openmeetings/web/room/wb/raw-tool-clipart.js   |   1 +
 .../openmeetings/web/room/wb/raw-tool-text.js      |  25 +++-
 .../openmeetings/web/room/wb/raw-tool-textbox.js   |   5 +-
 .../apache/openmeetings/web/room/wb/raw-wb-area.js |  10 +-
 .../openmeetings/web/room/wb/raw-wb-board.js       |  30 ++--
 19 files changed, 153 insertions(+), 137 deletions(-)

diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
index ee79f09..5a7f696 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
@@ -47,6 +47,7 @@ public class Whiteboard implements Serializable {
        private static final long serialVersionUID = 1L;
        private static final Logger log = 
LoggerFactory.getLogger(Whiteboard.class);
        public static final String ATTR_TYPE = "type";
+       public static final String ATTR_OMTYPE = "omType";
        public static final String ATTR_FILE_ID = "fileId";
        public static final String ATTR_FILE_TYPE = "fileType";
        public static final String ATTR_SLIDE = "slide";
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 40cdd61..ad2c449 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
@@ -177,7 +177,7 @@ see https://openmeetings.apache.org/LanguageEditor.html for 
Details
        <entry key="379"><![CDATA[Изображение]]></entry>
        <entry key="387"><![CDATA[Импорт]]></entry>
        <entry key="395"><![CDATA[Записи]]></entry>
-       <entry key="398"><![CDATA[Участники :]]></entry>
+       <entry key="398"><![CDATA[Участники]]></entry>
        <entry key="404"><![CDATA[Нажмите на комнату для деталей]]></entry>
        <entry key="406"><![CDATA[Комната:]]></entry>
        <entry key="407"><![CDATA[Участники в этой комнате:]]></entry>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js
index 5701f7a..efb0f00 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/main.js
@@ -98,6 +98,9 @@ var OmUtil = (function() {
        self.wbAction = function(_m) {
                self.sendMessage(_m, {area: 'room', type: 'wb'});
        };
+       self.roomAction = function(_m) {
+               self.sendMessage(_m, {area: 'room', type: 'room'});
+       };
        self.getKeyCode = function(evt) {
                let code = evt.code;
                if (typeof (code) === 'undefined') {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java
index 04026f5..605769a 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java
@@ -97,12 +97,12 @@ public class MainPage extends BaseInitedPage {
        @Override
        protected void onParameterArrival(IRequestParameters params, 
AjaxRequestTarget target) {
                log.debug("MainPage::onParameterArrival");
-               OmUrlFragment _f = getUrlFragment(params);
-               if (_f != null) {
-                       uf = _f;
+               OmUrlFragment newf = getUrlFragment(params);
+               if (newf != null) {
+                       uf = newf;
                }
-               if (loaded && _f != null) {
-                       main.updateContents(_f, target, false);
+               if (loaded && newf != null) {
+                       main.updateContents(newf, target, false);
                }
        }
 
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 2326dfc..bd32425 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
@@ -118,6 +118,7 @@ public class RoomPanel extends BasePanel {
                kick
                , muteOthers
                , mute
+               , toggleRight
        }
        private final Room r;
        private final boolean interview;
@@ -170,7 +171,7 @@ public class RoomPanel extends BasePanel {
                private void initVideos(AjaxRequestTarget target) {
                        StringBuilder sb = new StringBuilder();
                        JSONArray streams = new JSONArray();
-                       for (Client c: cm.listByRoom(getRoom().getId())) {
+                       for (Client c : cm.listByRoom(getRoom().getId())) {
                                for (StreamDesc sd : c.getStreams()) {
                                        streams.put(sd.toJson());
                                }
@@ -749,6 +750,8 @@ public class RoomPanel extends BasePanel {
                        if ("wb".equals(type)) {
                                WbAction a = 
WbAction.valueOf(o.getString(PARAM_ACTION));
                                wb.processWbAction(a, o.optJSONObject("data"), 
handler);
+                       } else if ("room".equals(type)) {
+                               sidebar.roomAction(handler, o);
                        }
                }
        }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-sharer.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-sharer.js
index 7b94205..4a4015d 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-sharer.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-sharer.js
@@ -18,7 +18,6 @@ var Sharer = (function() {
                } else {
                        type = sharer.find('select.type');
                        const b = kurentoUtils.WebRtcPeer.browser;
-                       type.find('option[value="' + (VideoUtil.isChrome() ? 
'application' : 'tab') + '"]').remove();
                        type.selectmenu({
                                width: 150
                                , disabled: _typeDisabled(b)
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
index bc6de79..fad9045 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
@@ -242,7 +242,7 @@ var VideoManager = (function() {
                                                , click: function() {
                                                        
s.video.confirmMuteOthers = !$('#muteothers-confirm-dont-show').prop('checked');
                                                        VideoSettings.save();
-                                                       
roomAction('muteOthers', uid);
+                                                       
OmUtil.roomAction({action: 'muteOthers', uid: uid});
                                                        $(this).dialog('close');
                                                }
                                        }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
index 7e7d0f5..8fab384 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
@@ -293,7 +293,7 @@ var Video = (function() {
                        })
                        .click(function(e) {
                                e.stopImmediatePropagation();
-                               roomAction('mute', JSON.stringify({uid: sd.uid, 
mute: !muted}));
+                               OmUtil.roomAction({action: 'mute', uid: sd.uid, 
mute: !muted});
                                _mute(!muted);
                                volume.hide();
                                return false;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
index 62eeacf..806a790 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
@@ -70,8 +70,6 @@ import 
com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 public class RoomSidebar extends Panel {
        private static final long serialVersionUID = 1L;
        private static final Logger log = 
LoggerFactory.getLogger(RoomSidebar.class);
-       public static final String FUNC_TOGGLE_RIGHT = "toggleRight";
-       public static final String FUNC_ACTION = "roomAction";
        public static final String FUNC_SETTINGS = "avSettings";
        public static final String PARAM_ACTION = "action";
        public static final String PARAM_RIGHT = "right";
@@ -112,90 +110,6 @@ public class RoomSidebar extends Panel {
                        item.add(new RoomClientPanel("user", item, room));
                }
        };
-       private final AbstractDefaultAjaxBehavior roomAction = new 
AbstractDefaultAjaxBehavior() {
-               private static final long serialVersionUID = 1L;
-
-               @Override
-               protected void respond(AjaxRequestTarget target) {
-                       try {
-                               String uid = 
getRequest().getRequestParameters().getParameterValue(PARAM_UID).toString();
-                               if (Strings.isEmpty(uid)) {
-                                       return;
-                               }
-                               Client cl = room.getClient();
-                               Action a = 
Action.valueOf(getRequest().getRequestParameters().getParameterValue(PARAM_ACTION).toString());
-                               switch (a) {
-                                       case kick:
-                                               if 
(cl.hasRight(Right.moderator)) {
-                                                       kickedClient = 
cm.get(uid);
-                                                       if (kickedClient == 
null) {
-                                                               return;
-                                                       }
-                                                       if 
(!kickedClient.hasRight(Right.superModerator) && 
!cl.getUid().equals(kickedClient.getUid())) {
-                                                               
confirmKick.getDialog().open(target);
-                                                       }
-                                               }
-                                               break;
-                                       case muteOthers:
-                                               if 
(room.getClient().hasRight(Right.muteOthers)) {
-                                                       
WebSocketHelper.sendRoom(new TextRoomMessage(room.getRoom().getId(), cl, 
RoomMessage.Type.muteOthers, uid));
-                                               }
-                                               break;
-                                       case mute:
-                                       {
-                                               JSONObject obj = uid.isEmpty() 
? new JSONObject() : new JSONObject(uid);
-                                               Client _c = 
cm.get(obj.getString("uid"));
-                                               if (_c == null || 
!_c.hasActivity(Client.Activity.AUDIO)) {
-                                                       return;
-                                               }
-                                               if 
(cl.hasRight(Right.moderator) || cl.getUid().equals(_c.getUid())) {
-                                                       // basic checks, will 
throw in case of missing options
-                                                       obj.getBoolean("mute");
-                                                       obj.put("sid", 
cl.getSid());
-                                                       
WebSocketHelper.sendRoom(new TextRoomMessage(room.getRoom().getId(), cl, 
RoomMessage.Type.mute, obj.toString()));
-                                               }
-                                       }
-                                               break;
-                                       default:
-                               }
-                       } catch (Exception e) {
-                               log.error("Unexpected exception while toggle 
'roomAction'", e);
-                       }
-               }
-       };
-       private final AbstractDefaultAjaxBehavior toggleRight = new 
AbstractDefaultAjaxBehavior() {
-               private static final long serialVersionUID = 1L;
-
-               @Override
-               protected void respond(AjaxRequestTarget target) {
-                       try {
-                               String uid = 
getRequest().getRequestParameters().getParameterValue(PARAM_UID).toString();
-                               if (Strings.isEmpty(uid)) {
-                                       return;
-                               }
-                               Right right = 
Right.valueOf(getRequest().getRequestParameters().getParameterValue(PARAM_RIGHT).toString());
-                               if (room.getClient().hasRight(Right.moderator)) 
{
-                                       Client client = cm.get(uid);
-                                       if (client == null) {
-                                               return;
-                                       }
-                                       if (client.hasRight(right)) {
-                                               room.denyRight(client, right);
-                                       } else {
-                                               if (Right.video == right) {
-                                                       room.allowRight(client, 
Right.audio, right);
-                                               } else {
-                                                       room.allowRight(client, 
right);
-                                               }
-                                       }
-                               } else {
-                                       room.requestRight(right, target);
-                               }
-                       } catch (Exception e) {
-                               log.error("Unexpected exception while toggle 
'right'", e);
-                       }
-               }
-       };
        private final AbstractDefaultAjaxBehavior avSettings = new 
AbstractDefaultAjaxBehavior() {
                private static final long serialVersionUID = 1L;
 
@@ -248,7 +162,7 @@ public class RoomSidebar extends Panel {
                                , fileTab.setVisible(!room.isInterview()), 
roomFiles.setVisible(!room.isInterview()));
 
                add(addFolder, settings, userCount.setOutputMarkupId(true));
-               add(toggleRight, roomAction, avSettings);
+               add(avSettings);
                add(confirmKick = new ConfirmableAjaxBorder("confirm-kick", 
getString("603"), getString("605")) {
                        private static final long serialVersionUID = 1L;
 
@@ -266,8 +180,6 @@ public class RoomSidebar extends Panel {
        @Override
        public void renderHead(IHeaderResponse response) {
                super.renderHead(response);
-               response.render(new 
PriorityHeaderItem(getNamedFunction(FUNC_TOGGLE_RIGHT, toggleRight, 
explicit(PARAM_RIGHT), explicit(PARAM_UID))));
-               response.render(new 
PriorityHeaderItem(getNamedFunction(FUNC_ACTION, roomAction, 
explicit(PARAM_ACTION), explicit(PARAM_UID))));
                response.render(new 
PriorityHeaderItem(getNamedFunction(FUNC_SETTINGS, avSettings, 
explicit(PARAM_SETTINGS))));
        }
 
@@ -314,4 +226,79 @@ public class RoomSidebar extends Panel {
        public void removeActivity(String uid, IPartialPageRequestHandler 
handler) {
                activities.remove(handler, uid);
        }
+
+       public void roomAction(IPartialPageRequestHandler handler, JSONObject 
o) {
+               try {
+                       final String uid = o.getString(PARAM_UID);
+                       if (Strings.isEmpty(uid)) {
+                               return;
+                       }
+                       Client self = room.getClient();
+                       Action a = Action.valueOf(o.getString(PARAM_ACTION));
+                       switch (a) {
+                               case kick:
+                                       if (self.hasRight(Right.moderator)) {
+                                               kickedClient = cm.get(uid);
+                                               if (kickedClient == null) {
+                                                       return;
+                                               }
+                                               if 
(!kickedClient.hasRight(Right.superModerator) && 
!self.getUid().equals(kickedClient.getUid())) {
+                                                       
confirmKick.getDialog().open(handler);
+                                               }
+                                       }
+                                       break;
+                               case muteOthers:
+                                       if 
(room.getClient().hasRight(Right.muteOthers)) {
+                                               WebSocketHelper.sendRoom(new 
TextRoomMessage(room.getRoom().getId(), self, RoomMessage.Type.muteOthers, 
uid));
+                                       }
+                                       break;
+                               case mute:
+                               {
+                                       Client c = cm.get(uid);
+                                       if (c == null || 
!c.hasActivity(Client.Activity.AUDIO)) {
+                                               return;
+                                       }
+                                       if (self.hasRight(Right.moderator) || 
self.getUid().equals(c.getUid())) {
+                                               WebSocketHelper.sendRoom(new 
TextRoomMessage(room.getRoom().getId(), self, RoomMessage.Type.mute
+                                                               , new 
JSONObject()
+                                                                               
.put("sid", self.getSid())
+                                                                               
.put(PARAM_UID, uid)
+                                                                               
.put("mute", o.getBoolean("mute")).toString()));
+                                       }
+                               }
+                                       break;
+                               case toggleRight:
+                                       toggleRight(handler, self, uid, o);
+                                       break;
+                               default:
+                       }
+               } catch (Exception e) {
+                       log.error("Unexpected exception while toggle 
'roomAction'", e);
+               }
+       }
+
+       private void toggleRight(IPartialPageRequestHandler handler, Client 
self, String uid, JSONObject o) {
+               try {
+                       Right right = Right.valueOf(o.getString(PARAM_RIGHT));
+                       if (self.hasRight(Right.moderator)) {
+                               Client client = cm.get(uid);
+                               if (client == null) {
+                                       return;
+                               }
+                               if (client.hasRight(right)) {
+                                       room.denyRight(client, right);
+                               } else {
+                                       if (Right.video == right) {
+                                               room.allowRight(client, 
Right.audio, right);
+                                       } else {
+                                               room.allowRight(client, right);
+                                       }
+                               }
+                       } else {
+                               room.requestRight(right, handler);
+                       }
+               } catch (Exception e) {
+                       log.error("Unexpected exception while toggle 'right'", 
e);
+               }
+       }
 }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java
index cd73af3..212e0a4 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java
@@ -18,6 +18,12 @@
  */
 package org.apache.openmeetings.web.room.sidebar.icon;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
+import static org.apache.openmeetings.web.pages.BasePage.ALIGN_LEFT;
+import static org.apache.openmeetings.web.pages.BasePage.ALIGN_RIGHT;
+import static 
org.apache.openmeetings.web.util.CallbackFunctionHelper.addOnClick;
+
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.Right;
@@ -29,13 +35,8 @@ import 
org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
-import static org.apache.openmeetings.web.pages.BasePage.ALIGN_LEFT;
-import static org.apache.openmeetings.web.pages.BasePage.ALIGN_RIGHT;
-import static 
org.apache.openmeetings.web.util.CallbackFunctionHelper.addOnClick;
-
 public abstract class ClientIcon extends WebMarkupContainer {
+       protected static final String FUNC_ACTION = "OmUtil.roomAction";
        private static final long serialVersionUID = 1L;
        protected static final String ICON_CLASS = "ui-icon ";
        protected static final String CLS_CLICKABLE = "clickable ";
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/KickIcon.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/KickIcon.java
index 35e33a8..b11ca55 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/KickIcon.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/KickIcon.java
@@ -18,8 +18,6 @@
  */
 package org.apache.openmeetings.web.room.sidebar.icon;
 
-import static org.apache.openmeetings.web.room.sidebar.RoomSidebar.FUNC_ACTION;
-
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.room.Room.Right;
 import org.apache.openmeetings.web.room.RoomPanel.Action;
@@ -45,7 +43,7 @@ public class KickIcon extends ClientIcon {
        @Override
        protected String getScript() {
                Client c = getClient();
-               return c == null ? "" : String.format("%s('%s', '%s');", 
FUNC_ACTION, Action.kick.name(), c.getUid());
+               return c == null ? "" : String.format("%s({action: '%s', uid: 
'%s'});", FUNC_ACTION, Action.kick.name(), c.getUid());
        }
 
        @Override
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/RoomRightIcon.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/RoomRightIcon.java
index 9e301cb..04cd139 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/RoomRightIcon.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/RoomRightIcon.java
@@ -18,9 +18,8 @@
  */
 package org.apache.openmeetings.web.room.sidebar.icon.right;
 
-import static 
org.apache.openmeetings.web.room.sidebar.RoomSidebar.FUNC_TOGGLE_RIGHT;
-
 import org.apache.openmeetings.db.entity.room.Room.Right;
+import org.apache.openmeetings.web.room.RoomPanel;
 import org.apache.openmeetings.web.room.sidebar.icon.ClientIcon;
 
 public abstract class RoomRightIcon extends ClientIcon {
@@ -44,7 +43,8 @@ public abstract class RoomRightIcon extends ClientIcon {
 
        @Override
        protected String getScript() {
-               return String.format("%s('%s', '%s');", FUNC_TOGGLE_RIGHT, 
right.name(), uid);
+               return String.format("OmUtil.roomAction({action: '%s', right: 
'%s', uid: '%s'});"
+                               , RoomPanel.Action.toggleRight.name(), 
right.name(), uid);
        }
 
        protected boolean visible() {
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 0ee5598..8382649 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
@@ -23,6 +23,7 @@ import static 
org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_FILE_ID;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_FILE_TYPE;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_HEIGHT;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_SLIDE;
+import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_OMTYPE;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_TYPE;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_WIDTH;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_ZOOM;
@@ -444,7 +445,7 @@ public class WbPanel extends AbstractWbPanel {
                                        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_TYPE))) {
+                                       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));
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-apointer.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-apointer.js
index 0792545..33e850b 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-apointer.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-apointer.js
@@ -75,7 +75,7 @@ var APointer = function(wb, s, sBtn) {
                        pointer.user = $('.room-block .sidebar .user-list 
.current .name').text();
                }
                const obj = {
-                       type: 'pointer'
+                       omType: 'pointer'
                        , x: ptr.x
                        , y: ptr.y
                        , user: pointer.user
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-clipart.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-clipart.js
index 4c0546e..4e91d01 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-clipart.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-clipart.js
@@ -18,6 +18,7 @@ var Clipart = function(wb, btn, s, sBtn) {
                                art.orig.width = 32;
                                art.orig.height = 32;
                                art.obj = 
fabric.util.groupSVGElements(elements, opts);
+                               art.obj.set(opts);
                                canvas.add(art.obj);
                        });
                } else {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-text.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-text.js
index 4509b30..e283bcb 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-text.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-text.js
@@ -2,18 +2,30 @@
 var Text = function(wb, s, sBtn) {
        const text = ShapeBase();
        text.obj = null;
-       text.fabricType = 'i-text';
+       text.omType = 'i-text';
        text.fill.color = '#000000';
        text.stroke.enabled = false;
        text.stroke.width = 50; //fontSize
        text.stroke.color = '#000000';
        text.style = {bold: false, italic: false};
 
+       function __valid(o) {
+               return !!o && text.omType === o.omType;
+       }
+       function __getObj(canvas, o) {
+               if (__valid(o)) {
+                       return o;
+               } else {
+                       const _o = canvas.getActiveObject();
+                       return __valid(_o) ? _o : null;
+               }
+       }
        text.createTextObj = function(canvas, pointer) {
                return new fabric.IText('', {
                        left: pointer.x
                        , top: pointer.y
                        , padding: 7
+                       , omType: text.omType
                        , fill: text.fill.enabled ? text.fill.color : 
'rgba(0,0,0,0)'
                        , stroke: text.stroke.enabled ? text.stroke.color : 
'rgba(0,0,0,0)'
                        , fontSize: text.stroke.width
@@ -33,8 +45,8 @@ var Text = function(wb, s, sBtn) {
        text.mouseDown = function(o) {
                const canvas = this
                        , pointer = canvas.getPointer(o.e)
-                       , ao = canvas.getActiveObject();
-               if (!!ao && text.fabricType === ao.type) {
+                       , ao = __getObj(canvas, o.target);
+               if (!!ao) {
                        text.obj = ao;
                } else {
                        text.obj = text.createTextObj(canvas, pointer);
@@ -48,13 +60,16 @@ var Text = function(wb, s, sBtn) {
                }
                text._onMouseDown();
        };
+       text._editable = function(o) {
+               return text.omType === o.omType;
+       }
        text.activate = function() {
                wb.eachCanvas(function(canvas) {
                        canvas.on('mouse:down', text.mouseDown);
                        canvas.on('mouse:dblclick', text.doubleClick);
                        canvas.selection = true;
                        canvas.forEachObject(function(o) {
-                               if (text.fabricType === o.type) {
+                               if (text._editable(o)) {
                                        o.selectable = true;
                                        o.editable = true;
                                }
@@ -83,7 +98,7 @@ var Text = function(wb, s, sBtn) {
                        canvas.off('mouse:dblclick', text.doubleClick);
                        canvas.selection = false;
                        canvas.forEachObject(function(o) {
-                               if (text.fabricType === o.type) {
+                               if (text.omType === o.omType) {
                                        o.selectable = false;
                                        o.editable = false;
                                }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-textbox.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-textbox.js
index c1dbc28..0fa8c78 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-textbox.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-tool-textbox.js
@@ -1,7 +1,7 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
 var Textbox = function(wb, s, sBtn) {
        const text = Text(wb, s, sBtn);
-       text.fabricType = 'textbox';
+       text.omType = 'textbox';
 
        text.createTextObj = function(canvas, pointer) {
                return new fabric.Textbox('', {
@@ -12,6 +12,7 @@ var Textbox = function(wb, s, sBtn) {
                        , stroke: text.stroke.enabled ? text.stroke.color : 
'rgba(0,0,0,0)'
                        //, strokeWidth: text.stroke.width
                        , fontSize: text.stroke.width
+                       , omType: text.omType
                        , fontFamily: text.fontFamily
                        , opacity: text.opacity
                        , breakWords: true
@@ -22,7 +23,7 @@ var Textbox = function(wb, s, sBtn) {
        };
        text.doubleClick = function(e) {
                const ao = e.target;
-               if (!!ao && text.fabricType === ao.type) {
+               if (!!ao && text.omType === ao.omType) {
                        text.obj = ao;
                        text.obj.enterEditing();
                        WbArea.removeDeleteHandler();
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
index 0ce5000..7cb1807 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
@@ -25,9 +25,13 @@ var DrawWbArea = function() {
                                        break;
                                case 'tr':
                                {
-                                       const x = left + (this.cornerSize - 
delImg.width) / 2
-                                               , y = top + (this.cornerSize - 
delImg.height) / 2;
-                                       ctx.drawImage(delImg, x, y);
+                                       if (role === PRESENTER) {
+                                               const x = left + 
(this.cornerSize - delImg.width) / 2
+                                                       , y = top + 
(this.cornerSize - delImg.height) / 2;
+                                               ctx.drawImage(delImg, x, y);
+                                       } else {
+                                               
window.originalDrawControl.call(this, control, ctx, methodName, left, top, 
styleOverride);
+                                       }
                                }
                                        break;
                                default:
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
index 690a3f9..398ba72 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
@@ -127,6 +127,10 @@ var Wb = function() {
                }
        }
        function _setSlide(_sld) {
+               const sld = 1 * _sld;
+               if (sld < 0 || sld > canvases.length - 1) {
+                       return;
+               }
                slide = _sld;
                OmUtil.wbAction({action: 'setSlide', data: {
                        wbId: wb.id
@@ -523,11 +527,9 @@ var Wb = function() {
                const r = o.toJSON(extraProps);
                switch (o.omType) {
                        case 'Video':
-                               r.type = 'video';
                                delete r.objects;
                                break;
                        case 'Math':
-                               r.type = 'math';
                                delete r.objects;
                                break;
                        default:
@@ -537,11 +539,11 @@ var Wb = function() {
        }
        //events
        function objCreatedHandler(o) {
-               if (role === NONE && o.type !== 'pointer') {
+               if (role === NONE && o.omType !== 'pointer') {
                        return;
                }
                let json;
-               switch(o.type) {
+               switch(o.omType) {
                        case 'pointer':
                                json = o;
                                break;
@@ -557,10 +559,10 @@ var Wb = function() {
        };
        function objAddedHandler(e) {
                const o = e.target;
-               if (!!o.loaded) {
+               if (o.loaded === true) {
                        return;
                }
-               switch(o.type) {
+               switch(o.omType) {
                        case 'textbox':
                        case 'i-text':
                                o.uid = uuidv4();
@@ -574,7 +576,7 @@ var Wb = function() {
        };
        function objModifiedHandler(e) {
                const o = e.target, items = [];
-               if (role === NONE && o.type !== 'pointer') {
+               if (role === NONE && o.omType !== 'pointer') {
                        return;
                }
                o.includeDefaultValues = false;
@@ -607,7 +609,7 @@ var Wb = function() {
                if (!o || '' !== o.text) {
                        return;
                }
-               if ('textbox' === o.type || 'i-text' === o.type) {
+               if ('textbox' === o.omType || 'i-text' === o.omType) {
                        OmUtil.wbAction({action: 'deleteObj', data: {
                                wbId: wb.id
                                , obj: [{
@@ -863,14 +865,14 @@ var Wb = function() {
                                del.push(o);
                                continue;
                        }
-                       switch(o.type) {
+                       switch(o.omType) {
                                case 'pointer':
                                        APointer(wb).create(canvases[o.slide], 
o);
                                        break;
-                               case 'video':
+                               case 'Video':
                                        Player.create(canvases[o.slide], o, wb);
                                        break;
-                               case 'math':
+                               case 'Math':
                                        StaticTMath.create(o, 
canvases[o.slide]);
                                        break;
                                default:
@@ -896,11 +898,11 @@ var Wb = function() {
                const arr = [], _arr = Array.isArray(obj) ? obj : [obj];
                for (let i = 0; i < _arr.length; ++i) {
                        const o = _arr[i];
-                       switch(o.type) {
+                       switch(o.omType) {
                                case 'pointer':
                                        
_modifyHandler(APointer(wb).create(canvases[o.slide], o))
                                        break;
-                               case 'video':
+                               case 'Video':
                                {
                                        const g = _findObject(o);
                                        if (!!g) {
@@ -908,7 +910,7 @@ var Wb = function() {
                                        }
                                }
                                        break;
-                               case 'math':
+                               case 'Math':
                                {
                                        _removeHandler(o);
                                        StaticTMath.create(o, 
canvases[o.slide]);

Reply via email to