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/09/16 12:56:25 UTC
openmeetings git commit: [OPENMEETINGS-1641] video status for newly
entered user is preserved
Repository: openmeetings
Updated Branches:
refs/heads/master c5fbecb27 -> 5b60f06f7
[OPENMEETINGS-1641] video status for newly entered user is preserved
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/5b60f06f
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/5b60f06f
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/5b60f06f
Branch: refs/heads/master
Commit: 5b60f06f7c295e364ab46f6b11b87b17bcb172a4
Parents: c5fbecb
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sat Sep 16 19:56:17 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sat Sep 16 19:56:17 2017 +0700
----------------------------------------------------------------------
.../openmeetings/web/room/wb/WbAction.java | 1 +
.../openmeetings/web/room/wb/WbPanel.java | 92 ++++++++++++++------
.../org/apache/openmeetings/web/room/wb/wb.js | 9 ++
3 files changed, 74 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5b60f06f/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbAction.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbAction.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbAction.java
index 7fded48..dc3eef1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbAction.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbAction.java
@@ -36,4 +36,5 @@ public enum WbAction {
, startRecording
, stopRecording
, videoStatus
+ , loadVideos
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5b60f06f/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
----------------------------------------------------------------------
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 23f807e..a68e150 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
@@ -180,6 +180,7 @@ public class WbPanel extends AbstractWbPanel {
if (wb != null) {
sb.append("WbArea.setSlide(").append(wbj.put("slide", wb.getSlide())).append(");");
}
+ sb.append("WbArea.loadVideos();");
}
@Override
@@ -189,41 +190,76 @@ public class WbPanel extends AbstractWbPanel {
@Override
protected void processWbAction(WbAction a, JSONObject obj, AjaxRequestTarget target) throws IOException {
- if (WbAction.createObj == a || WbAction.modifyObj == a) {
- JSONObject o = obj.optJSONObject("obj");
- if (o != null && "pointer".equals(o.getString("type"))) {
- sendWbOthers(a, obj);
+ Client c = rp.getClient();
+ switch (a) {
+ case createObj:
+ case modifyObj:
+ {
+ JSONObject o = obj.optJSONObject("obj");
+ if (o != null && "pointer".equals(o.getString("type"))) {
+ sendWbOthers(a, obj);
+ return;
+ }
+ }
+ break;
+ case downloadPdf:
+ {
+ boolean moder = c.hasRight(Room.Right.moderator);
+ Room r = rp.getRoom();
+ if ((moder && !r.isHidden(RoomElement.ActionMenu)) || (!moder && r.isAllowUserQuestions())) {
+ try (PDDocument doc = new PDDocument()) {
+ JSONArray arr = obj.getJSONArray("slides");
+ for (int i = 0; i < arr.length(); ++i) {
+ String base64Image = arr.getString(i).split(",")[1];
+ byte[] bb = Base64.decodeBase64(base64Image);
+ BufferedImage img = ImageIO.read(new ByteArrayInputStream(bb));
+ float width = img.getWidth();
+ float height = img.getHeight();
+ PDPage page = new PDPage(new PDRectangle(width, height));
+ PDImageXObject pdImageXObject = LosslessFactory.createFromImage(doc, img);
+ try (PDPageContentStream contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, false)) {
+ contentStream.drawImage(pdImageXObject, 0, 0, width, height);
+ }
+ doc.addPage(page);
+ }
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ doc.save(baos);
+ rp.startDownload(target, baos.toByteArray());
+ }
+ }
return;
}
- }
-
- Client c = rp.getClient();
- if (WbAction.downloadPdf == a) {
- boolean moder = c.hasRight(Room.Right.moderator);
- Room r = rp.getRoom();
- if ((moder && !r.isHidden(RoomElement.ActionMenu)) || (!moder && r.isAllowUserQuestions())) {
- try (PDDocument doc = new PDDocument()) {
- JSONArray arr = obj.getJSONArray("slides");
- for (int i = 0; i < arr.length(); ++i) {
- String base64Image = arr.getString(i).split(",")[1];
- byte[] bb = Base64.decodeBase64(base64Image);
- BufferedImage img = ImageIO.read(new ByteArrayInputStream(bb));
- float width = img.getWidth();
- float height = img.getHeight();
- PDPage page = new PDPage(new PDRectangle(width, height));
- PDImageXObject pdImageXObject = LosslessFactory.createFromImage(doc, img);
- try (PDPageContentStream contentStream = new PDPageContentStream(doc, page, AppendMode.APPEND, false)) {
- contentStream.drawImage(pdImageXObject, 0, 0, width, height);
+ case loadVideos:
+ {
+ StringBuilder sb = new StringBuilder("WbArea.initVideos(");
+ JSONArray arr = new JSONArray();
+ for (Entry<Long, Whiteboard> entry : WhiteboardCache.list(roomId, rp.getClient().getUser().getLanguageId())) {
+ Whiteboard wb = entry.getValue();
+ for (JSONObject o : wb.list()) {
+ String ft = o.optString("fileType");
+ if (BaseFileItem.Type.Recording.name().equals(ft) || BaseFileItem.Type.Video.name().equals(ft)) {
+ JSONObject _sts = o.optJSONObject("status");
+ if (_sts == null) {
+ continue;
+ }
+ JSONObject sts = new JSONObject(_sts.toString()); //copy
+ sts.put("pos", sts.getDouble("pos") + (System.currentTimeMillis() - sts.getLong("updated")) * 1. / 1000);
+ arr.put(new JSONObject()
+ .put("wbId", wb.getId())
+ .put("uid", o.getString("uid"))
+ .put("slide", o.getString("slide"))
+ .put("status", sts));
}
- doc.addPage(page);
}
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- doc.save(baos);
- rp.startDownload(target, baos.toByteArray());
}
+ sb.append(arr.toString()).append(");");
+ target.appendJavaScript(sb);
+ return;
}
- return;
+ default:
+ break;
}
+
//presenter-right
if (c.hasRight(Right.presenter)) {
switch (a) {
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5b60f06f/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 9c4b7d6..b2420d2 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
@@ -147,6 +147,7 @@ var Player = (function() {
updateProgress();
if (group.status.paused) {
cancelAnimationFrame(request);
+ canvas.renderAll();
} else {
request = fabric.util.requestAnimFrame(render);
}
@@ -1539,6 +1540,12 @@ var WbArea = (function() {
function _videoStatus(json) {
self.getWb(json.wbId).videoStatus(json);
}
+ function _initVideos(arr) {
+ for (let i = 0; i < arr.length; ++i) {
+ _videoStatus(arr[i]);
+ }
+ }
+
self.getWbTabId = function(id) {
return "wb-tab-" + id;
};
@@ -1712,6 +1719,8 @@ var WbArea = (function() {
}
}
self.videoStatus = _videoStatus;
+ self.loadVideos = function() { wbAction('loadVideos'); };
+ self.initVideos = _initVideos;
return self;
})();
$(function() {