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