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;
 })();