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/12/10 09:37:41 UTC
[1/2] openmeetings git commit: [OPENMEETINGS-1776] Wb seems to work
with deleted objects as expected
Repository: openmeetings
Updated Branches:
refs/heads/master 91c1c8484 -> 0bb1537d1
[OPENMEETINGS-1776] Wb seems to work with deleted objects as expected
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/c55bd6c5
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/c55bd6c5
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/c55bd6c5
Branch: refs/heads/master
Commit: c55bd6c52265e82cd643713dda9fcae9c76c1c11
Parents: 91c1c84
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sun Dec 10 16:36:37 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sun Dec 10 16:37:19 2017 +0700
----------------------------------------------------------------------
.../db/dao/file/BaseFileItemDao.java | 6 +++
.../db/entity/file/BaseFileItem.java | 3 +-
openmeetings-web/pom.xml | 2 +-
.../web/room/RoomResourceReference.java | 11 +++--
.../openmeetings/web/room/wb/WbPanel.java | 5 +-
.../web/room/wb/WbWebSocketHelper.java | 2 +-
.../apache/openmeetings/web/room/wb/player.js | 2 +-
.../openmeetings/web/room/wb/tool-util.js | 22 +++++++++
.../apache/openmeetings/web/room/wb/wb-board.js | 48 +++++++++++++------
.../src/main/webapp/default/deleted.jpg | Bin 2549 -> 0 bytes
10 files changed, 74 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c55bd6c5/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/BaseFileItemDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/BaseFileItemDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/BaseFileItemDao.java
index da47729..27bfba6 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/BaseFileItemDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/BaseFileItemDao.java
@@ -52,6 +52,12 @@ public class BaseFileItemDao {
return list.size() == 1 ? list.get(0) : null;
}
+ public BaseFileItem getAny(Long id) {
+ List<BaseFileItem> list = em.createNamedQuery("getAnyFileById", BaseFileItem.class)
+ .setParameter("id", id).getResultList();
+ return list.size() == 1 ? list.get(0) : null;
+ }
+
public void delete(BaseFileItem f) {
if (f == null || f.getId() == null) {
return;
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c55bd6c5/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
index fddc2f6..0521866 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/BaseFileItem.java
@@ -58,6 +58,7 @@ import org.simpleframework.xml.Element;
@Entity
@NamedQueries({
@NamedQuery(name = "getFileById", query = "SELECT f FROM BaseFileItem f WHERE f.deleted = false AND f.id = :id")
+ , @NamedQuery(name = "getAnyFileById", query = "SELECT f FROM BaseFileItem f WHERE f.id = :id")
, @NamedQuery(name = "getFileByHash", query = "SELECT f FROM BaseFileItem f WHERE f.deleted = false AND f.hash = :hash")
, @NamedQuery(name = "getAllFileItemsForRoom", query = "SELECT f FROM BaseFileItem f"
+ " WHERE f.deleted = false AND f.type <> :folder"
@@ -263,7 +264,7 @@ public abstract class BaseFileItem extends HistoricalEntity {
public final File getFile(String ext) {
File f = null;
- if (getHash() != null) {
+ if (!isDeleted() && getHash() != null) {
File d = new File(getUploadFilesDir(), getHash());
switch (getType()) {
case WmlFile:
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c55bd6c5/openmeetings-web/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index 8ac81b3..615266a 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -154,8 +154,8 @@
<jsSourceFile>fabric.js</jsSourceFile>
<jsSourceFile>wb-all.js</jsSourceFile>
<jsSourceFile>uuid.js</jsSourceFile>
- <jsSourceFile>player.js</jsSourceFile>
<jsSourceFile>tool-util.js</jsSourceFile>
+ <jsSourceFile>player.js</jsSourceFile>
<jsSourceFile>tool-base.js</jsSourceFile>
<jsSourceFile>tool-pointer.js</jsSourceFile>
<jsSourceFile>tool-apointer.js</jsSourceFile>
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c55bd6c5/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
index a2da700..ae84cce 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.web.room;
import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_FILE_ID;
import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_SLIDE;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG;
import static org.apache.openmeetings.util.OmFileHelper.JPG_MIME_TYPE;
import static org.apache.openmeetings.util.OmFileHelper.MP4_MIME_TYPE;
import static org.apache.openmeetings.util.OmFileHelper.PNG_MIME_TYPE;
@@ -79,7 +79,7 @@ public class RoomResourceReference extends FileItemResourceReference<FileItem> {
default:
throw new RuntimeException("Not supported");
}
- return mime;
+ return r.isDeleted() ? PNG_MIME_TYPE : mime;
}
@Override
@@ -98,7 +98,10 @@ public class RoomResourceReference extends FileItemResourceReference<FileItem> {
if (id == null || !ws.isSignedIn() || c == null) {
return null;
}
- FileItem f = getBean(FileItemDao.class).get(id);
+ FileItem f = (FileItem)getBean(FileItemDao.class).getAny(id);
+ if (f == null) {
+ return null;
+ }
String ruid = params.get("ruid").toString();
String wuid = params.get("wuid").toString();
if (c.getRoom() != null) {
@@ -121,7 +124,7 @@ public class RoomResourceReference extends FileItemResourceReference<FileItem> {
protected File getFile(FileItem f, String ext) {
File file = f.getFile(ext);
if (file == null || !file.exists()) {
- file = new File(new File(getOmHome(), "default"), String.format("deleted.%s", EXTENSION_JPG));
+ file = new File(new File(getOmHome(), "default"), String.format("deleted.%s", EXTENSION_PNG));
}
return file;
}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c55bd6c5/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 63b55e9..3c87934 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
@@ -58,7 +58,6 @@ import org.apache.commons.codec.binary.Base64;
import org.apache.directory.api.util.Strings;
import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache;
import org.apache.openmeetings.db.dao.file.FileItemDao;
-import org.apache.openmeetings.db.dao.record.RecordingDao;
import org.apache.openmeetings.db.dto.room.Whiteboard;
import org.apache.openmeetings.db.dto.room.Whiteboard.ZoomMode;
import org.apache.openmeetings.db.dto.room.Whiteboards;
@@ -491,9 +490,7 @@ public class WbPanel extends AbstractWbPanel {
try {
final long fid = _file.optLong(ATTR_FILE_ID, -1);
if (fid > 0) {
- BaseFileItem fi = FileItem.Type.Recording.name().equals(_file.optString(ATTR_FILE_TYPE))
- ? getBean(RecordingDao.class).get(fid)
- : getBean(FileItemDao.class).get(fid);
+ BaseFileItem fi = getBean(FileItemDao.class).getAny(fid);
if (fi != null) {
if (consumer != null) {
consumer.accept(fi);
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c55bd6c5/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
index 207bc99..7d0f2e3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
@@ -95,6 +95,7 @@ public class WbWebSocketHelper extends WebSocketHelper {
final PageParameters pp = new PageParameters()
.add("id", fi.getId()).add("uid", c.getUid())
.add("ruid", ruid).add("wuid", _file.optString("uid"));
+ file.put("deleted", !fi.exists());
switch (fi.getType()) {
case Video:
ref = new RoomResourceReference();
@@ -109,7 +110,6 @@ public class WbWebSocketHelper extends WebSocketHelper {
case Presentation:
ref = new RoomResourceReference();
file.put("_src", urlFor(ref, pp));
- file.put("deleted", !fi.exists());
break;
default:
ref = new RoomResourceReference();
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c55bd6c5/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/player.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/player.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/player.js
index 56adc13..c8bea20 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/player.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/player.js
@@ -22,7 +22,7 @@ var Player = (function() {
.attr("width", _o.width).attr("height", _o.height)
.append($('<source>').attr('type', 'video/mp4').attr('src', _o._src));
$('#wb-tab-' + canvas.wbId).append(vid);
- new fabric.Image.fromURL(_o._poster, function(poster) {
+ fabric.Image.fromURL(_o._poster, function(poster) {
poster.scaleX = poster.scaleY = _o.width / poster.getOriginalSize().width;
const video = new fabric.Image(vid[0], {visible: false});
if (typeof(_o.status) === 'undefined') {
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c55bd6c5/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-util.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-util.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-util.js
index aefe155..1c87054 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-util.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/tool-util.js
@@ -32,5 +32,27 @@ var ToolUtil = (function() {
s.find('.wb-prop-b, .wb-prop-i, .wb-prop-lock-color, .wb-prop-lock-fill').button("disable");
}
}
+ , addDeletedItem: function(canvas, o) {
+ if ("Presentation" === o.fileType) {
+ fabric.Image.fromURL(o._src, function(img) {
+ const sz = img.getOriginalSize();
+ img.width = sz.width;
+ img.height = sz.height;
+ img.scaleX = img.scaleY = canvas.width / (canvas.getZoom() * sz.width);
+ canvas.setBackgroundImage(img, canvas.renderAll.bind(canvas));
+ });
+ } else {
+ fabric.Image.fromURL(o._src || o.src, function(img) {
+ const sz = img.getOriginalSize();
+ img.width = sz.width;
+ img.height = sz.height;
+ img.scaleX = img.scaleY = (o.scaleX || 1.) * o.width / sz.width;
+ img.type = 'image';
+ img.videoStatus = function() {};
+ canvas.add(img);
+ canvas.requestRenderAll();
+ }, o);
+ }
+ }
};
})();
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c55bd6c5/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js
index e58623e..72c3aad 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb-board.js
@@ -268,12 +268,15 @@ var Wb = function() {
}
function _findObject(o) {
let _o = null;
- canvases[o.slide].forEachObject(function(__o) {
- if (!!__o && o.uid === __o.uid) {
- _o = __o;
- return false;
- }
- });
+ const cnvs = canvases[o.slide];
+ if (!!cnvs) {
+ cnvs.forEachObject(function(__o) {
+ if (!!__o && o.uid === __o.uid) {
+ _o = __o;
+ return false;
+ }
+ });
+ }
return _o;
}
function _removeHandler(o) {
@@ -301,17 +304,20 @@ var Wb = function() {
break;
case 'Presentation':
{
- const ccount = canvases.length
- , count = _o.deleted ? 1 : _o.count;
- for (let i = 0; i < count; ++i) {
+ const ccount = canvases.length;
+ for (let i = 0; i < _o.count; ++i) {
if (canvases.length < i + 1) {
addCanvas();
}
const canvas = canvases[i];
- let scale = width / _o.width;
- scale = scale < 1 ? 1 : scale;
- canvas.setBackgroundImage(_o._src + "&slide=" + i, canvas.renderAll.bind(canvas)
- , {scaleX: scale, scaleY: scale});
+ if (_o.deleted) {
+ ToolUtil.addDeletedItem(canvas, _o);
+ } else {
+ let scale = width / _o.width;
+ scale = scale < 1 ? 1 : scale;
+ canvas.setBackgroundImage(_o._src + "&slide=" + i, canvas.renderAll.bind(canvas)
+ , {scaleX: scale, scaleY: scale});
+ }
}
_updateZoomPanel();
if (ccount !== canvases.length) {
@@ -320,6 +326,7 @@ var Wb = function() {
b.data().deactivate();
b.data().activate();
}
+ showCurrentSlide();
}
}
break;
@@ -443,7 +450,10 @@ var Wb = function() {
a.find('.scroll-container .canvas-container').each(function(idx) {
if (role === PRESENTER) {
$(this).show();
- a.find('.scroll-container .canvas-container')[slide].scrollIntoView();
+ const cclist = a.find('.scroll-container .canvas-container');
+ if (cclist.length > slide) {
+ cclist[slide].scrollIntoView();
+ }
} else {
if (idx === slide) {
$(this).show();
@@ -628,9 +638,13 @@ var Wb = function() {
showCurrentSlide();
};
wb.createObj = function(obj) {
- const arr = [], _arr = Array.isArray(obj) ? obj : [obj];
+ const arr = [], del = [], _arr = Array.isArray(obj) ? obj : [obj];
for (let i = 0; i < _arr.length; ++i) {
const o = _arr[i];
+ if (!!o.deleted && "Presentation" !== o.fileType) {
+ del.push(o);
+ continue;
+ }
switch(o.type) {
case 'pointer':
APointer().create(canvases[o.slide], o);
@@ -651,6 +665,10 @@ var Wb = function() {
if (arr.length > 0) {
_createObject(arr, _createHandler);
}
+ for (let i = 0; i < del.length; ++i) {
+ const o = del[i];
+ ToolUtil.addDeletedItem(canvases[o.slide], o);
+ }
};
wb.load = wb.createObj;
wb.modifyObj = function(obj) { //TODO need to be unified
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c55bd6c5/openmeetings-web/src/main/webapp/default/deleted.jpg
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/default/deleted.jpg b/openmeetings-web/src/main/webapp/default/deleted.jpg
deleted file mode 100644
index 932c9bd..0000000
Binary files a/openmeetings-web/src/main/webapp/default/deleted.jpg and /dev/null differ
[2/2] openmeetings git commit: [OPENMEETINGS-1776] Wb seems to work
with deleted objects as expected
Posted by so...@apache.org.
[OPENMEETINGS-1776] Wb seems to work with deleted objects as expected
Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/0bb1537d
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/0bb1537d
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/0bb1537d
Branch: refs/heads/master
Commit: 0bb1537d1f5d8d7ee3bd3a723cf45eb32de4414b
Parents: c55bd6c
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sun Dec 10 16:37:05 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sun Dec 10 16:37:34 2017 +0700
----------------------------------------------------------------------
.../src/main/webapp/default/deleted.png | Bin 0 -> 8756 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0bb1537d/openmeetings-web/src/main/webapp/default/deleted.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/default/deleted.png b/openmeetings-web/src/main/webapp/default/deleted.png
new file mode 100644
index 0000000..5dcb963
Binary files /dev/null and b/openmeetings-web/src/main/webapp/default/deleted.png differ