You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/08/31 16:34:32 UTC
openmeetings git commit: [OPENMEETINGS-1638] interview room seems to
work as expected
Repository: openmeetings
Updated Branches:
refs/heads/master 2a08f01b2 -> 6600a6bf6
[OPENMEETINGS-1638] interview room seems to work as expected
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/6600a6bf
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/6600a6bf
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/6600a6bf
Branch: refs/heads/master
Commit: 6600a6bf6830bd5b40a66076be04db49b7a7445b
Parents: 2a08f01
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Thu Aug 31 23:34:24 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Thu Aug 31 23:34:24 2017 +0700
----------------------------------------------------------------------
.../core/remote/RecordingService.java | 50 ++++++++++----------
.../core/remote/ScopeApplicationAdapter.java | 5 +-
.../apache/openmeetings/web/room/RoomPanel.java | 36 +++++++++-----
.../web/room/wb/InterviewWbPanel.java | 5 ++
.../openmeetings/web/room/wb/interviewwb.js | 14 ++++--
5 files changed, 66 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6600a6bf/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 75d90d0..01a4ab9 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
@@ -337,37 +337,39 @@ public class RecordingService implements IPendingServiceCallback {
// If its the recording client we need another type of Meta Data
boolean audioOnly = "a".equals(rcl.getAvsettings());
boolean videoOnly = "v".equals(rcl.getAvsettings());
- if (Client.Type.sharing == rcl.getType()) {
- if (rcl.getRecordingId() != null && (rcl.isSharingStarted() || rcl.isRecordingStarted())) {
- String streamName = generateFileName(recordingId, rcl.getBroadCastId());
+ String broadcastId = rcl.getBroadCastId();
+ if (broadcastId != null) {
+ if (Client.Type.sharing == rcl.getType()) {
+ if (rcl.getRecordingId() != null && (rcl.isSharingStarted() || rcl.isRecordingStarted())) {
+ String streamName = generateFileName(recordingId, broadcastId);
+
+ Long metaId = metaDataDao.add(
+ recordingId, rcl.getFirstname() + " " + rcl.getLastname(), now, false,
+ false, true, streamName, null);
+
+ // Start FLV Recording
+ addListener(conn, rcl.getBroadCastId(), streamName, metaId, true, isInterview);
+
+ // Add Meta Data
+ rcl.setMetaId(metaId);
+ sessionManager.update(rcl);
+ }
+ } else if ("av".equals(rcl.getAvsettings()) || audioOnly || videoOnly) {
+ // if the user does publish av, a, v
+ // But we only record av or a, video only is not interesting
+ String streamName = generateFileName(recordingId, broadcastId);
- Long metaId = metaDataDao.add(
- recordingId, rcl.getFirstname() + " " + rcl.getLastname(), now, false,
- false, true, streamName, null);
+ Long metaId = metaDataDao.add(recordingId,
+ rcl.getFirstname() + " " + rcl.getLastname(), now, audioOnly, videoOnly, false, streamName,
+ rcl.getInterviewPodId());
- // Start FLV Recording
- addListener(conn, rcl.getBroadCastId(), streamName, metaId, true, isInterview);
+ // Start FLV recording
+ addListener(conn, broadcastId, streamName, metaId, !audioOnly, isInterview);
// Add Meta Data
rcl.setMetaId(metaId);
sessionManager.update(rcl);
}
- } else if ("av".equals(rcl.getAvsettings()) || audioOnly || videoOnly) {
- // if the user does publish av, a, v
- // But we only record av or a, video only is not interesting
- String broadcastId = rcl.getBroadCastId();
- String streamName = generateFileName(recordingId, broadcastId);
-
- Long metaId = metaDataDao.add(recordingId,
- rcl.getFirstname() + " " + rcl.getLastname(), now, audioOnly, videoOnly, false, streamName,
- rcl.getInterviewPodId());
-
- // Start FLV recording
- addListener(conn, broadcastId, streamName, metaId, !audioOnly, isInterview);
-
- // Add Meta Data
- rcl.setMetaId(metaId);
- sessionManager.update(rcl);
}
}
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6600a6bf/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
index 9a95e74..ae96e4c 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ScopeApplicationAdapter.java
@@ -595,10 +595,9 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
rcl.setAvsettings("n");
}
sessionManager.update(rcl);
- IApplication iapp = getApp();
- Client c = iapp.getOmClientBySid(rcl.getSid());
+ Room r = roomDao.get(rcl.getRoomId());
if ((Client.Type.sharing == rcl.getType() && rcl.isRecordingStarted())
- || (c != null && Room.Type.interview == c.getRoom().getType() && sessionManager.getBroadcastingCount(rcl.getRoomId()) == 0))
+ || (r != null && Room.Type.interview == r.getType() && sessionManager.getBroadcastingCount(rcl.getRoomId()) == 0))
{
_log.debug("*** Screen sharing client stoped recording, or last broadcasting user stoped in interview room");
recordingService.stopRecording(scope, rcl);
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6600a6bf/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 f29e7d1..270f3ae 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
@@ -407,6 +407,7 @@ public class RoomPanel extends BasePanel {
recordingUser = null;
update(c.remove(Client.Activity.record));
menu.update(handler);
+ updateInterviewRecordingButtons(handler);
}
break;
case recordingStarted:
@@ -420,6 +421,7 @@ public class RoomPanel extends BasePanel {
recordingUser = uid;
update(c.set(Client.Activity.record));
menu.update(handler);
+ updateInterviewRecordingButtons(handler);
}
break;
case sharingStoped:
@@ -466,6 +468,7 @@ public class RoomPanel extends BasePanel {
sidebar.update(handler);
menu.update(handler);
wb.update(handler);
+ updateInterviewRecordingButtons(handler);
}
break;
case newStream:
@@ -493,9 +496,7 @@ public class RoomPanel extends BasePanel {
if (_c.getSid().equals(c.getSid())) {
update(c.addStream(uid, streamId, broadcastId, type));
}
- if (isInterview && recordingUser == null && _c.hasRight(Right.moderator)) {
- handler.appendJavaScript("WbArea.setRecStartEnabled(true);");
- }
+ updateInterviewRecordingButtons(handler);
}
break;
case closeStream:
@@ -511,16 +512,7 @@ public class RoomPanel extends BasePanel {
update(c.removeStream(obj.optString("broadcastId")));
}
handler.appendJavaScript(String.format("VideoManager.close('%s');", obj.getString("uid")));
- if (isInterview && recordingUser == null && _c.hasRight(Right.moderator)) {
- boolean hasStreams = false;
- for (Client cl : getRoomClients(r.getId())) {
- if (!cl.getStreams().isEmpty()) {
- hasStreams = true;
- break;
- }
- }
- handler.appendJavaScript(String.format("WbArea.setRecStartEnabled(%s);", hasStreams));
- }
+ updateInterviewRecordingButtons(handler);
}
break;
case roomEnter:
@@ -605,6 +597,24 @@ public class RoomPanel extends BasePanel {
super.onEvent(event);
}
+ private void updateInterviewRecordingButtons(IPartialPageRequestHandler handler) {
+ Client _c = getClient();
+ if (isInterview && _c.hasRight(Right.moderator)) {
+ if (recordingUser == null) {
+ boolean hasStreams = false;
+ for (Client cl : getRoomClients(r.getId())) {
+ if (!cl.getStreams().isEmpty()) {
+ hasStreams = true;
+ break;
+ }
+ }
+ handler.appendJavaScript(String.format("WbArea.setRecStopEnabled(false);WbArea.setRecStartEnabled(%s);", hasStreams));
+ } else {
+ handler.appendJavaScript("WbArea.setRecStartEnabled(false);WbArea.setRecStopEnabled(true);");
+ }
+ }
+ }
+
@Override
protected void onBeforeRender() {
super.onBeforeRender();
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6600a6bf/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
index a24fa41..5d94c19 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/InterviewWbPanel.java
@@ -61,6 +61,11 @@ public class InterviewWbPanel extends AbstractWbPanel {
getBean(ScopeApplicationAdapter.class).startInterviewRecording(c);
}
break;
+ case stopRecording:
+ if (getBean(ISessionManager.class).getRecordingCount(c.getRoomId()) < 1) {
+ getBean(ScopeApplicationAdapter.class).stopInterviewRecording(c);
+ }
+ break;
default:
//no-op
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6600a6bf/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interviewwb.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interviewwb.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interviewwb.js
index 56e2c9e..8184f38 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interviewwb.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/interviewwb.js
@@ -19,7 +19,7 @@
var NONE = 'none';
var WbArea = (function() {
var container, area, role = NONE, self = {}, choose, btns
- , _inited = false, recStart;
+ , _inited = false, recStart, recStop;
function _init() {
container = $(".room.wb.area");
@@ -37,17 +37,19 @@ var WbArea = (function() {
choose.find('.pod-name').val($(this).data('pod'));
return false;
});
- recStart = $('.pod-row .pod-container a.rec-btn.start');
- recStart.button({
+ recStart = $('.pod-row .pod-container a.rec-btn.start').button({
disabled: true
, icon: "ui-icon-play"
}).click(function() {
wbAction('startRecording', '');
return false;
});
- $('.pod-row .pod-container a.rec-btn.stop').button({
+ recStop = $('.pod-row .pod-container a.rec-btn.stop').button({
disabled: true
, icon: "ui-icon-stop"
+ }).click(function() {
+ wbAction('stopRecording', '');
+ return false;
});
choose = $('#interview-choose-video');
choose.dialog({
@@ -89,11 +91,15 @@ var WbArea = (function() {
function _setRecStartEnabled(en) {
recStart.button("option", "disabled", !en);
}
+ function _setRecStopEnabled(en) {
+ recStop.button("option", "disabled", !en);
+ }
self.init = _init;
self.destroy = function() {};
self.setRole = _setRole;
self.resize = _resize;
self.setRecStartEnabled = _setRecStartEnabled;
+ self.setRecStopEnabled = _setRecStopEnabled;
return self;
})();