Repository: openmeetings
Updated Branches:
  refs/heads/master 176f3492b -> 7efc23702


[OPENMEETINGS-1670] seems to be fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/7efc2370
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/7efc2370
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/7efc2370

Branch: refs/heads/master
Commit: 7efc237020cfae0a107a3ff792f427c4c94c53cc
Parents: 176f349
Author: Maxim Solodovnik <[email protected]>
Authored: Tue Aug 8 13:57:19 2017 +0700
Committer: Maxim Solodovnik <[email protected]>
Committed: Tue Aug 8 13:57:19 2017 +0700

----------------------------------------------------------------------
 .../core/remote/RecordingService.java           |  5 ++-
 .../openmeetings/core/util/RoomHelper.java      | 16 ++++++++-
 .../apache/openmeetings/web/room/RoomPanel.java | 10 +++---
 .../web/room/menu/RoomMenuPanel.java            | 19 ++++++-----
 .../org/apache/openmeetings/web/room/room.js    | 34 +++++++++++---------
 .../openmeetings/web/room/wb/WbPanel.html       |  2 +-
 .../org/apache/openmeetings/web/room/wb/wb.js   | 16 +++++----
 7 files changed, 60 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7efc2370/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
index 965a11b..e29c87d 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
@@ -143,9 +143,6 @@ public class RecordingService implements 
IPendingServiceCallback {
                                        if (conn instanceof 
IServiceCapableConnection) {
                                                StreamClient rcl = 
sessionManager.get(IClientUtil.getId(conn.getClient()));
 
-                                               // Send every user a 
notification that the recording did start
-                                               WebSocketHelper.sendRoom(new 
TextRoomMessage(roomId, ownerId, RoomMessage.Type.recordingStarted, 
client.getOwnerSid()));
-
                                                // If its the recording client 
we need another type of Meta Data
                                                if (Client.Type.sharing == 
rcl.getType()) {
                                                        if 
(rcl.getRecordingId() != null && rcl.isSharingStarted()) {
@@ -194,6 +191,8 @@ public class RecordingService implements 
IPendingServiceCallback {
                                        }
                                }
                        }
+                       // Send every user a notification that the recording 
did start
+                       WebSocketHelper.sendRoom(new TextRoomMessage(roomId, 
ownerId, RoomMessage.Type.recordingStarted, client.getOwnerSid()));
                        return roomRecordingName;
 
                } catch (Exception err) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7efc2370/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java
index 3cbea75..6aefe19 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/RoomHelper.java
@@ -22,17 +22,31 @@ import 
org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.room.StreamClient;
 
+import com.github.openjson.JSONArray;
 import com.github.openjson.JSONObject;
 
 public class RoomHelper {
        public static JSONObject videoJson(Client c, boolean self, String sid, 
ISessionManager mgr, String uid) {
                StreamClient sc = mgr.get(uid);
-               return c.toJson(self)
+               JSONObject o = c.toJson(self)
                                .put("sid", sid)
                                .put("uid", sc.getUid())
                                .put("broadcastId", sc.getBroadCastId())
                                .put("width", sc.getWidth())
                                .put("height", sc.getHeight())
                                .put("type", sc.getType());
+               JSONArray a = new JSONArray();
+               if (Client.Type.sharing == sc.getType()) {
+                       if (sc.isSharingStarted()) {
+                               a.put("sharing");
+                       }
+                       if (sc.isRecordingStarted()) {
+                               a.put("recording");
+                       }
+                       if (sc.isPublishStarted()) {
+                               a.put("publish");
+                       }
+               }
+               return o.put("screenActivities", a);
        }
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7efc2370/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
----------------------------------------------------------------------
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 1d5dca7..b540ce0 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
@@ -394,8 +394,9 @@ public class RoomPanel extends BasePanel {
                                                                log.error("Not 
existing user in rightUpdated {} !!!!", uid);
                                                                return;
                                                        }
+                                                       Client _c = getClient();
                                                        
handler.appendJavaScript(String.format("VideoManager.update(%s);"
-                                                                       , 
c.toJson(getClient().getUid().equals(c.getUid())).put("sid", 
getClient().getSid())));
+                                                                       , 
c.toJson(_c.getUid().equals(c.getUid())).put("sid", _c.getSid())));
                                                        sidebar.update(handler);
                                                        menu.update(handler);
                                                        wb.update(handler);
@@ -415,14 +416,15 @@ public class RoomPanel extends BasePanel {
                                                        log.error("Not existing 
user in newStream {} !!!!", uid);
                                                        return;
                                                }
-                                               boolean self = 
getClient().getUid().equals(uid);
+                                               Client _c = getClient();
+                                               boolean self = 
_c.getSid().equals(c.getSid());
                                                String broadcastId = 
obj.getString("streamName");
                                                String streamId = 
obj.getString("streamId");
                                                if (!self) {
-                                                       JSONObject jo = 
RoomHelper.videoJson(c, self, getClient().getSid(), 
getBean(ISessionManager.class), uid);
+                                                       JSONObject jo = 
RoomHelper.videoJson(c, self, _c.getSid(), getBean(ISessionManager.class), uid);
                                                        
handler.appendJavaScript(String.format("VideoManager.play(%s);", jo));
                                                }
-                                               if 
(getClient().getSid().equals(c.getSid())) {
+                                               if 
(_c.getSid().equals(c.getSid())) {
                                                        c.addStream(uid, 
streamId, broadcastId, type);
                                                }
                                        }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7efc2370/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
----------------------------------------------------------------------
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 71581c5..5a37991 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
@@ -22,6 +22,7 @@ import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICAT
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY;
 import static org.apache.openmeetings.web.app.Application.exitRoom;
 import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.Application.getClientBySid;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static 
org.apache.openmeetings.web.util.GroupLogoResourceReference.getUrl;
 import static org.apache.openmeetings.web.util.OmUrlFragment.ROOMS_PUBLIC;
@@ -33,12 +34,10 @@ import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.room.PollDao;
-import org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.RoomElement;
 import org.apache.openmeetings.db.entity.room.RoomPoll;
-import org.apache.openmeetings.db.entity.room.StreamClient;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.util.message.RoomMessage.Type;
@@ -316,20 +315,20 @@ public class RoomMenuPanel extends Panel {
                StringBuilder roomClass = new StringBuilder("room name");
                StringBuilder roomTitle = new StringBuilder();
                if (room.getRecordingUser() != null) {
-                       ISessionManager sessMngr = 
getBean(ISessionManager.class);
-                       StreamClient recUser = 
sessMngr.get(room.getRecordingUser());
-                       if (recUser != null) {
+                       Client recClient = 
getClientBySid(room.getRecordingUser());
+                       if (recClient != null) {
                                roomTitle.append(String.format("%s %s %s %s 
%s", getString("419")
-                                               , recUser.getUsername(), 
recUser.getFirstname(), recUser.getLastname(), 
df.format(recUser.getConnectedSince())));
+                                               , 
recClient.getUser().getLogin(), recClient.getUser().getFirstname(), 
recClient.getUser().getLastname(), df.format(recClient.getConnectedSince())));
+                               //FIXME TODO get ConnectedSince of StreamClient
                                roomClass.append(" screen");
                        }
-                       StreamClient pubUser = 
sessMngr.get(room.getPublishingUser());
-                       if (pubUser != null) {
-                               if (recUser != null) {
+                       Client pubClient = 
getClientBySid(room.getPublishingUser());
+                       if (pubClient != null) {
+                               if (recClient != null) {
                                        roomTitle.append('\n');
                                }
                                roomTitle.append(String.format("%s %s %s %s 
%s", getString("1504")
-                                               , recUser.getUsername(), 
pubUser.getFirstname(), pubUser.getLastname(), "URL")); //TODO add URL
+                                               , 
pubClient.getUser().getLogin(), pubClient.getUser().getFirstname(), 
pubClient.getUser().getLastname(), "URL")); //TODO add URL
                                roomClass.append(" screen");
                        }
                }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7efc2370/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
index 8217e90..6d3e3d7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
@@ -21,11 +21,11 @@ var VideoUtil = (function() {
        function _getVid(uid) {
                return "video" + uid;
        }
-       function _getShareVid(uid) {
-               return "video-share" + uid;
+       function _isSharing(c) {
+               return 'sharing' === c.type && 
c.screenActivities.indexOf('sharing') > -1;
        }
        self.getVid = _getVid;
-       self.getShareVid = _getShareVid;
+       self.isSharing = _isSharing;
        return self;
 })();
 var Video = (function() {
@@ -47,7 +47,7 @@ var Video = (function() {
                c = _c;
                box = _box;
                size = {width: c.width, height: c.height};
-               var _id = !!c.screenShare ? VideoUtil.getShareVid(c.uid) : 
VideoUtil.getVid(c.uid)
+               var _id = VideoUtil.getVid(c.uid)
                        , name = _getName()
                        , _w = c.self ? Math.max(300, c.width) : c.width
                        , _h = c.self ? Math.max(200, c.height) : c.height;
@@ -71,12 +71,12 @@ var Video = (function() {
                        icons: {
                                'collapse': 'ui-icon-minus'
                        }
-                       , closable: !!c.screenShare
+                       , closable: VideoUtil.isSharing(c)
                        , collapsable: true
                        , dblclick: "collapse"
                });
                t = v.parent().find('.ui-dialog-titlebar').attr('title', name);
-               if (!c.screenShare) {
+               if (!VideoUtil.isSharing(c)) {
                        
v.parent().find('.ui-dialog-titlebar-buttonpane').append($('#video-volume-btn').children().clone());
                        var volume = 
v.parent().find('.dropdown-menu.video.volume');
                        
v.parent().find('.ui-dialog-titlebar-volume').click(function(e) {
@@ -165,29 +165,31 @@ var VideoManager = (function() {
                v.remove();
        }
        function _play(c) {
-               if (!!c.screenShare) {
-                       _highlight(share.attr('title', share.data('user') + ' ' 
+ c.user.firstName + ' ' + c.user.lastName + ' ' + share.data('text')).show(), 
10);
+               if (VideoUtil.isSharing(c)) {
+                       _highlight(share
+                                       .attr('title', share.data('user') + ' ' 
+ c.user.firstName + ' ' + c.user.lastName + ' ' + share.data('text'))
+                                       .data('uid', c.uid)
+                                       .show(), 10);
                        share.tooltip().off('click').click(function() {
-                               var v = $('#' + VideoUtil.getShareVid(c.uid))
+                               var v = $('#' + VideoUtil.getVid(c.uid))
                                if (v.length != 1) {
                                        Video().init(box, options.uid, c);
                                } else {
                                        v.dialog('open');
                                }
                        });
-               } else {
+               } else if ('sharing' !== c.type) {
                        Video().init(box, options.uid, c);
                }
        }
-       function _close(uid, screenShare) {
-               var _id = !!screenShare ? VideoUtil.getShareVid(uid) : 
VideoUtil.getVid(uid)
-                               , v = $('#' + _id);
+       function _close(uid) {
+               var _id = VideoUtil.getVid(uid), v = $('#' + _id);
                if (v.length == 1) {
-                       if (v.data().client().screenShare) {
-                               share.off('click').hide();
-                       }
                        _closeV(v);
                }
+               if (uid === share.data('uid')) {
+                       share.off('click').hide();
+               }
        }
        function _highlight(el, count) {
                if (count < 0) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7efc2370/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
index d3c2446..cf6df77 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
@@ -56,7 +56,7 @@
                                <div class="canvases"></div>
                        </div>
                </div>
-               <div id="wb-zoom" class="wb-zoom">
+               <div id="wb-zoom" class="wb-zoom" style="position: absolute; 
top: 0px; left: 80px;">
                        <div class="doc-group btn-group btn-group-xs block" 
role="group" aria-label="...">
                                <button type="button" class="btn btn-default 
up" wicket:message="title:256">&nbsp;</button>
                                <button type="button" class="btn btn-default 
down" wicket:message="title:256">&nbsp;</button>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7efc2370/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
index 6fafd0e..9d49383 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
@@ -1090,12 +1090,6 @@ var Wb = function() {
                                sc.on('scroll', scrollHandler);
                        }
                        a.append(t).append(z);
-                       z.position({
-                               my: "left top"
-                               , at: "center top"
-                               , of: '#'+a[0].id
-                               , collision: "fit"
-                       });
                        showCurrentSlide();
                        t = a.find('.tools'), s = a.find(".wb-settings");
                        wb.eachCanvas(function(canvas) {
@@ -1127,7 +1121,15 @@ var Wb = function() {
                        t.position({
                                my: "right"
                                , at: "right-20"
-                               , of: a.selector
+                               , of: '#' + a[0].id
+                               , collision: "fit"
+                       });
+               }
+               if (z.position().left + z.width() > a.width()) {
+                       z.position({
+                               my: "left top"
+                               , at: "center top"
+                               , of: '#' + a[0].id
                                , collision: "fit"
                        });
                }

Reply via email to