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"> </button> <button type="button" class="btn btn-default down" wicket:message="title:256"> </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" }); }
