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/03/30 17:59:45 UTC
svn commit: r1789544 - in /openmeetings/application/trunk:
openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/
openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/
openmeetings-util/src/main/java/org/apache/op...
Author: solomax
Date: Thu Mar 30 17:59:45 2017
New Revision: 1789544
URL: http://svn.apache.org/viewvc?rev=1789544&view=rev
Log:
[OPENMEETINGS-551] more work on Presentation upload
Removed:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java
Modified:
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java?rev=1789544&r1=1789543&r2=1789544&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java Thu Mar 30 17:59:45 2017
@@ -51,7 +51,8 @@ public class WhiteboardCache {
public Set<Entry<Long, Whiteboard>> list(Long roomId, Long langId) {
Whiteboards wbs = get(roomId);
if (wbs.getWhiteboards().isEmpty()) {
- add(wbs, langId);
+ Whiteboard wb = add(wbs, langId);
+ wbs.setActiveWb(wb.getId());
}
return wbs.getWhiteboards().entrySet();
}
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java?rev=1789544&r1=1789543&r2=1789544&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/file/FileItem.java Thu Mar 30 17:59:45 2017
@@ -21,6 +21,7 @@ package org.apache.openmeetings.db.entit
import static org.apache.openmeetings.util.OmFileHelper.DOC_PAGE_PREFIX;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PNG;
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_WML;
import static org.apache.openmeetings.util.OmFileHelper.getStreamsHibernateDir;
@@ -271,14 +272,18 @@ public abstract class FileItem implement
f = new File(d, String.format("%s.%s", getHash(), ext == null ? EXTENSION_MP4 : ext));
break;
case Presentation:
- int slide = 0;
+ int slide = (ext == null) ? 0 : -1;
try {
+ //ext is used for slide here
slide = Integer.parseInt(ext);
} catch (Exception e) {
//no-op
}
- //ext is used for slide here
- f = new File(d, String.format("%1$s-%2$04d.%3$s", DOC_PAGE_PREFIX, slide, EXTENSION_PNG));
+ if (slide > -1) {
+ f = new File(d, String.format("%1$s-%2$04d.%3$s", DOC_PAGE_PREFIX, slide, EXTENSION_PNG));
+ } else {
+ f = new File(d, String.format("%s.%s", getHash(), ext == null ? EXTENSION_PDF : ext));
+ }
break;
case PollChart:
case Folder:
Modified: openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java?rev=1789544&r1=1789543&r2=1789544&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java (original)
+++ openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java Thu Mar 30 17:59:45 2017
@@ -137,8 +137,8 @@ public class OmFileHelper {
}
public static File getUserProfilePicture(Long userId, String uri) {
- File img = new File(getUploadProfilesUserDir(userId), profileImagePrefix + uri);
- if (!img.exists()) {
+ File img = new File(getUploadProfilesUserDir(userId), uri == null ? "" : uri);
+ if (!img.exists() || img.isDirectory()) {
img = getDefaultProfilePicture();
}
return img;
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java?rev=1789544&r1=1789543&r2=1789544&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java Thu Mar 30 17:59:45 2017
@@ -38,7 +38,6 @@ import org.apache.openmeetings.db.dto.ro
import org.apache.openmeetings.db.dto.room.Whiteboards;
import org.apache.openmeetings.db.entity.basic.Client;
import org.apache.openmeetings.db.entity.file.FileExplorerItem;
-import org.apache.openmeetings.db.entity.file.FileItem.Type;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.util.FileItemResourceReference;
import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -83,8 +82,8 @@ public class RoomResourceReference exten
}
@Override
- protected FileExplorerItem getFileItem(Attributes attributes) {
- PageParameters params = attributes.getParameters();
+ protected FileExplorerItem getFileItem(Attributes attr) {
+ PageParameters params = attr.getParameters();
StringValue _id = params.get("id");
StringValue _preview = params.get("preview");
preview = _preview.toBoolean(false);
@@ -127,8 +126,20 @@ public class RoomResourceReference exten
}
@Override
- protected File getFile(FileExplorerItem f) {
- return getFile(f, Type.Video == f.getType() && preview ? EXTENSION_JPG : null);
+ protected File getFile(FileExplorerItem f, Attributes attr) {
+ String ext = null;
+ switch (f.getType()) {
+ case Video:
+ if (preview) {
+ ext = EXTENSION_JPG;
+ }
+ break;
+ case Presentation:
+ ext = attr.getParameters().get("slide").toString();
+ break;
+ default:
+ }
+ return getFile(f, ext);
}
@Override
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html?rev=1789544&r1=1789543&r2=1789544&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.html Thu Mar 30 17:59:45 2017
@@ -50,7 +50,7 @@
</div>
<div id="wb-area">
- <canvas></canvas>
+ <div class="canvases"></div>
<div class="tools ui-state-active vertical clear" style="position: absolute; top: 20px; right: 0px;">
<div class="bumper"></div>
<div wicket:message="title:72" class="ui-widget-header clickable om-icon big pointer"></div>
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java?rev=1789544&r1=1789543&r2=1789544&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java Thu Mar 30 17:59:45 2017
@@ -208,7 +208,9 @@ public class WbPanel extends Panel {
WhiteboardCache cache = getBean(WhiteboardCache.class);
Whiteboards wbs = cache.get(roomId);
for (Entry<Long, Whiteboard> entry : cache.list(roomId, rp.getClient().getUser().getLanguageId())) {
- sb.append(getAddWbScript(entry.getKey(), entry.getValue().getName()));
+ sb.append(new StringBuilder("WbArea.create(")
+ .append(getAddWbJson(entry.getKey(), entry.getValue().getName()).toString())
+ .append(");"));
JSONArray arr = new JSONArray();
for (Entry<String, JSONObject> wbEntry : entry.getValue().getRoomItems().entrySet()) {
JSONObject o = wbEntry.getValue();
@@ -216,6 +218,7 @@ public class WbPanel extends Panel {
}
sb.append("WbArea.load(").append(getObjWbJson(entry.getKey(), arr).toString()).append(");");
}
+ sb.append("WbArea.activate({id: ").append(wbs.getActiveWb()).append("});");
response.render(OnDomReadyHeaderItem.forScript(sb));
}
@@ -249,12 +252,6 @@ public class WbPanel extends Panel {
.put("name", name);
}
- private static CharSequence getAddWbScript(Long id, String name) {
- return new StringBuilder("WbArea.add(")
- .append(getAddWbJson(id, name).toString())
- .append(");");
- }
-
public boolean isReadOnly() {
return readOnly;
}
@@ -354,6 +351,7 @@ public class WbPanel extends Panel {
JSONObject file = new JSONObject()
.put("fileId", fi.getId())
.put("fileType", fi.getType().name())
+ .put("count", fi.getCount())
.put("type", "image")
.put("left", UPLOAD_WB_LEFT)
.put("top", UPLOAD_WB_TOP)
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js?rev=1789544&r1=1789543&r2=1789544&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js Thu Mar 30 17:59:45 2017
@@ -40,12 +40,23 @@ var UUID = (function() {
}
return self;
})();
-var Pointer = function(canvas, s) {
+var Base = function() {
+ var base = {};
+ base.objectCreated = function(o, canvas) {
+ o.uid = UUID.generate();
+ canvas.trigger("wb:object:created", o);
+ return o.uid;
+ }
+ return base;
+}
+var Pointer = function(wb, s) {
return {
activate: function() {
- canvas.selection = true;
- canvas.forEachObject(function(o) {
- o.selectable = true;
+ wb.eachCanvas(function(canvas) {
+ canvas.selection = true;
+ canvas.forEachObject(function(o) {
+ o.selectable = true;
+ });
});
s.find('[class^="wb-prop"]').prop('disabled', true);
if (!!s.find('.wb-prop-b').button("instance")) {
@@ -53,26 +64,19 @@ var Pointer = function(canvas, s) {
}
}
, deactivate: function() {
- canvas.selection = false;
- canvas.forEachObject(function(o) {
- o.selectable = false;
+ wb.eachCanvas(function(canvas) {
+ canvas.selection = false;
+ canvas.forEachObject(function(o) {
+ o.selectable = false;
+ });
});
}
};
}
-var Base = function(canvas) {
- var base = {};
- base.objectCreated = function(o) {
- o.uid = UUID.generate();
- canvas.trigger("wb:object:created", o);
- return o.uid;
- }
- return base;
-}
-var APointer = function(canvas) {
- var pointer = Base(canvas);
+var APointer = function(wb) {
+ var pointer = Base(wb);
pointer.user = '';
- pointer.create = function(_cnvs, o) {
+ pointer.create = function(canvas, o) {
fabric.Image.fromURL('./css/images/pointer.png', function(img) {
img.set({
left:15
@@ -106,28 +110,28 @@ var APointer = function(canvas) {
, top: o.y - 20
});
- _cnvs.add(group);
+ canvas.add(group);
group.uid = o.uid;
group.loaded = !!o.loaded;
var count = 3;
function go(_cnt) {
if (_cnt < 0) {
- _cnvs.remove(group);
+ canvas.remove(group);
}
circle1.set({radius: 3});
circle2.set({radius: 6});
circle1.animate(
'radius', '20'
, {
- onChange: _cnvs.renderAll.bind(_cnvs)
+ onChange: canvas.renderAll.bind(canvas)
, duration: 1000
, onComplete: function() {go(_cnt - 1);}
});
circle2.animate(
'radius', '20'
, {
- onChange: _cnvs.renderAll.bind(_cnvs)
+ onChange: canvas.renderAll.bind(canvas)
, duration: 1000
});
}
@@ -135,6 +139,7 @@ var APointer = function(canvas) {
});
}
pointer.mouseUp = function(o) {
+ var canvas = this;
var ptr = canvas.getPointer(o.e);
var obj = {
type: 'pointer'
@@ -142,20 +147,24 @@ var APointer = function(canvas) {
, y: ptr.y
, user: pointer.user
};
- obj.uid = uid = pointer.objectCreated(obj);
+ obj.uid = uid = pointer.objectCreated(obj, canvas);
pointer.create(canvas, obj);
}
pointer.activate = function() {
- canvas.on('mouse:up', pointer.mouseUp);
+ wb.eachCanvas(function(canvas) {
+ canvas.on('mouse:up', pointer.mouseUp);
+ });
pointer.user = $('.room.sidebar.left .user.list .current .name').text();
}
pointer.deactivate = function() {
- canvas.off('mouse:up', pointer.mouseUp);
+ wb.eachCanvas(function(canvas) {
+ canvas.off('mouse:up', pointer.mouseUp);
+ });
};
return pointer;
}
-var ShapeBase = function(canvas) {
- var base = Base(canvas);
+var ShapeBase = function(wb) {
+ var base = Base(wb);
base.fill = {enabled: true, color: '#FFFF33'};
base.stroke = {enabled: true, color: '#FF6600', width: 5};
base.opacity = 1;
@@ -182,11 +191,12 @@ var ShapeBase = function(canvas) {
};
return base;
}
-var Text = function(canvas, s) {
- var text = ShapeBase(canvas);
+var Text = function(wb, s) {
+ var text = ShapeBase(wb);
text.obj = null;
text.mouseDown = function(o) {
+ var canvas = this;
var pointer = canvas.getPointer(o.e);
var ao = canvas.getActiveObject();
if (!!ao && ao.type == 'i-text') {
@@ -205,58 +215,67 @@ var Text = function(canvas, s) {
text.obj.enterEditing();
};
text.activate = function() {
- canvas.on('mouse:down', text.mouseDown);
- canvas.selection = true;
- canvas.forEachObject(function(o) {
- if (o.type == 'i-text') {
- o.selectable = true;
- }
+ wb.eachCanvas(function(canvas) {
+ canvas.on('mouse:down', text.mouseDown);
+ canvas.selection = true;
+ canvas.forEachObject(function(o) {
+ if (o.type == 'i-text') {
+ o.selectable = true;
+ }
+ });
});
text.enableAllProps(s);
};
text.deactivate = function() {
- canvas.off('mouse:down', text.mouseDown);
- canvas.selection = false;
- canvas.forEachObject(function(o) {
- if (o.type == 'i-text') {
- o.selectable = false;
- }
+ wb.eachCanvas(function(canvas) {
+ canvas.off('mouse:down', text.mouseDown);
+ canvas.selection = false;
+ canvas.forEachObject(function(o) {
+ if (o.type == 'i-text') {
+ o.selectable = false;
+ }
+ });
});
};
return text;
}
-var Paint = function(canvas, s) {
- var paint = ShapeBase(canvas);
+var Paint = function(wb, s) {
+ var paint = ShapeBase(wb);
paint.activate = function() {
- canvas.isDrawingMode = true;
- canvas.freeDrawingBrush.width = paint.stroke.width;
- canvas.freeDrawingBrush.color = paint.stroke.color;
- canvas.freeDrawingBrush.opacity = paint.opacity; //TODO not working
-
+ wb.eachCanvas(function(canvas) {
+ canvas.isDrawingMode = true;
+ canvas.freeDrawingBrush.width = paint.stroke.width;
+ canvas.freeDrawingBrush.color = paint.stroke.color;
+ canvas.freeDrawingBrush.opacity = paint.opacity; //TODO not working
+ });
paint.enableLineProps(s).o.prop('disabled', true); //TODO not working
};
paint.deactivate = function() {
- canvas.isDrawingMode = false;
+ wb.eachCanvas(function(canvas) {
+ canvas.isDrawingMode = false;
+ });
};
return paint;
}
-var Shape = function(canvas) {
- var shape = ShapeBase(canvas);
+var Shape = function(wb) {
+ var shape = ShapeBase(wb);
shape.obj = null;
shape.isDown = false;
shape.orig = {x: 0, y: 0};
- shape.add2Canvas = function() {
+ shape.add2Canvas = function(canvas) {
canvas.add(shape.obj);
}
shape.mouseDown = function(o) {
+ var canvas = this;
shape.isDown = true;
var pointer = canvas.getPointer(o.e);
shape.orig = {x: pointer.x, y: pointer.y};
- shape.createShape();
- shape.add2Canvas();
+ shape.createShape(canvas);
+ shape.add2Canvas(canvas);
};
shape.mouseMove = function(o) {
+ var canvas = this;
if (!shape.isDown) return;
var pointer = canvas.getPointer(o.e);
shape.updateShape(pointer);
@@ -266,33 +285,38 @@ var Shape = function(canvas) {
return o;
};
shape.mouseUp = function(o) {
+ var canvas = this;
shape.isDown = false;
shape.obj.setCoords();
shape.obj.selectable = false;
canvas.renderAll();
- shape.objectCreated(shape.obj);
+ shape.objectCreated(shape.obj, canvas);
};
shape.internalActivate = function() {};
shape.activate = function() {
- canvas.on({
- 'mouse:down': shape.mouseDown
- , 'mouse:move': shape.mouseMove
- , 'mouse:up': shape.mouseUp
+ wb.eachCanvas(function(canvas) {
+ canvas.on({
+ 'mouse:down': shape.mouseDown
+ , 'mouse:move': shape.mouseMove
+ , 'mouse:up': shape.mouseUp
+ });
});
shape.internalActivate();
};
shape.deactivate = function() {
- canvas.off({
- 'mouse:down': shape.mouseDown
- , 'mouse:move': shape.mouseMove
- , 'mouse:up': shape.mouseUp
+ wb.eachCanvas(function(canvas) {
+ canvas.off({
+ 'mouse:down': shape.mouseDown
+ , 'mouse:move': shape.mouseMove
+ , 'mouse:up': shape.mouseUp
+ });
});
};
return shape;
};
-var Line = function(canvas, s) {
- var line = Shape(canvas);
- line.createShape = function() {
+var Line = function(wb, s) {
+ var line = Shape(wb);
+ line.createShape = function(canvas) {
line.obj = new fabric.Line([line.orig.x, line.orig.y, line.orig.x, line.orig.y], {
strokeWidth: line.stroke.width
, fill: line.stroke.color
@@ -309,15 +333,15 @@ var Line = function(canvas, s) {
};
return line;
}
-var ULine = function(canvas, s) {
- var uline = Line(canvas, s);
+var ULine = function(wb, s) {
+ var uline = Line(wb, s);
uline.stroke.width = 20;
uline.opacity = .5;
return uline;
}
-var Rect = function(canvas, s) {
- var rect = Shape(canvas);
- rect.createShape = function() {
+var Rect = function(wb, s) {
+ var rect = Shape(wb);
+ rect.createShape = function(canvas) {
rect.obj = new fabric.Rect({
strokeWidth: rect.stroke.width
, fill: rect.fill.enabled ? rect.fill.color : 'rgba(0,0,0,0)'
@@ -346,9 +370,9 @@ var Rect = function(canvas, s) {
};
return rect;
}
-var Ellipse = function(canvas, s) {
- var ellipse = Rect(canvas, s);
- ellipse.createShape = function() {
+var Ellipse = function(wb, s) {
+ var ellipse = Rect(wb, s);
+ ellipse.createShape = function(canvas) {
ellipse.obj = new fabric.Ellipse({
strokeWidth: ellipse.stroke.width
, fill: ellipse.fill.enabled ? ellipse.fill.color : 'rgba(0,0,0,0)'
@@ -370,9 +394,9 @@ var Ellipse = function(canvas, s) {
};
return ellipse;
}
-var Arrow = function(canvas, s) {
- var arrow = Line(canvas, s);
- arrow.createShape = function() {
+var Arrow = function(wb, s) {
+ var arrow = Line(wb, s);
+ arrow.createShape = function(canvas) {
arrow.obj = new fabric.Polygon([
{x: 0, y: 0},
{x: 0, y: 0},
@@ -425,10 +449,10 @@ var Arrow = function(canvas, s) {
};
return arrow;
}
-var Clipart = function(canvas, btn) {
- var art = Shape(canvas);
- art.add2Canvas = function() {}
- art.createShape = function() {
+var Clipart = function(wb, btn) {
+ var art = Shape(wb);
+ art.add2Canvas = function(canvas) {}
+ art.createShape = function(canvas) {
fabric.Image.fromURL(btn.data('image'), function(img) {
art.orig.width = img.width;
art.orig.height = img.height;
@@ -457,7 +481,7 @@ var Clipart = function(canvas, btn) {
}
var Wb = function() {
const ACTIVE = 'active';
- var wbId, a, t, s, canvas, mode;
+ var wb = {id: -1}, a, t, s, canvases = [], mode, slide = 0;
function getBtn(m) {
return t.find(".om-icon." + (m || mode));
@@ -500,7 +524,7 @@ var Wb = function() {
c.find('ul li').prepend(old);
c.find('a').prepend(cur);
});
- initToolBtn(cur.data('mode'), false, Clipart(canvas, cur));
+ initToolBtn(cur.data('mode'), false, Clipart(wb, cur));
});
}
function internalInit(t) {
@@ -515,18 +539,17 @@ var Wb = function() {
} else if (pos.top == 0 || pos.top + ui.helper.height() == ui.helper.parent().height()) {
ui.helper.removeClass('vertical').addClass('horisontal');
}
- setRoomSizes(); // TODO should be better option
}
});
- initToolBtn('pointer', true, Pointer(canvas, s));
- initToolBtn('apointer', false, APointer(canvas));
- initToolBtn('text', false, Text(canvas, s));
- initToolBtn('paint', false, Paint(canvas, s));
- initToolBtn('line', false, Line(canvas, s));
- initToolBtn('uline', false, ULine(canvas, s));
- initToolBtn('rect', false, Rect(canvas, s));
- initToolBtn('ellipse', false, Ellipse(canvas, s));
- initToolBtn('arrow', false, Arrow(canvas, s));
+ initToolBtn('pointer', true, Pointer(wb, s));
+ initToolBtn('apointer', false, APointer(wb));
+ initToolBtn('text', false, Text(wb, s));
+ initToolBtn('paint', false, Paint(wb, s));
+ initToolBtn('line', false, Line(wb, s));
+ initToolBtn('uline', false, ULine(wb, s));
+ initToolBtn('rect', false, Rect(wb, s));
+ initToolBtn('ellipse', false, Ellipse(wb, s));
+ initToolBtn('arrow', false, Arrow(wb, s));
initCliparts();
t.find(".om-icon.settings").click(function() {
s.show();
@@ -553,7 +576,9 @@ var Wb = function() {
var v = $(this).val();
btn.data('obj').stroke.color = v;
if ('paint' == mode) {
- canvas.freeDrawingBrush.color = v;
+ wb.eachCanvas(function(canvas) {
+ canvas.freeDrawingBrush.color = v;
+ });
}
}
});
@@ -563,7 +588,9 @@ var Wb = function() {
var v = 1 * $(this).val();
btn.data('obj').stroke.width = v;
if ('paint' == mode) {
- canvas.freeDrawingBrush.width = v;
+ wb.eachCanvas(function(canvas) {
+ canvas.freeDrawingBrush.width = v;
+ });
}
}
});
@@ -573,7 +600,9 @@ var Wb = function() {
var v = (1 * $(this).val()) / 100;
btn.data('obj').opacity = v;
if ('paint' == mode) {
- canvas.freeDrawingBrush.opacity = v;
+ wb.eachCanvas(function(canvas) {
+ canvas.freeDrawingBrush.opacity = v;
+ });
}
}
});
@@ -586,7 +615,6 @@ var Wb = function() {
, start: function(event, ui) {
if (!!s.css("bottom")) {
s.css("bottom", "").css("right", "");
- setRoomSizes(); // TODO should be better option
}
}
, drag: function(event, ui) {
@@ -598,10 +626,10 @@ var Wb = function() {
}
function toOmJson(o) {
- return o.toJSON(['uid', 'fileId', 'fileType']);
+ return o.toJSON(['uid', 'fileId', 'fileType', 'count']);
}
//events
- var wbObjCreatedHandler = function (o) {
+ function wbObjCreatedHandler(o) {
var json = {};
switch(o.type) {
case 'pointer':
@@ -613,11 +641,11 @@ var Wb = function() {
break;
}
wbAction('createObj', JSON.stringify({
- wbId: wbId
+ wbId: wb.id
, obj: json
}));
};
- var objAddedHandler = function (e) {
+ function objAddedHandler(e) {
var o = e.target;
if (!!o.loaded) return;
switch(o.type) {
@@ -627,22 +655,22 @@ var Wb = function() {
break;
}
};
- var objModifiedHandler = function (e) {
+ function objModifiedHandler(e) {
var o = e.target;
o.includeDefaultValues = false;
wbAction('modifyObj', JSON.stringify({
- wbId: wbId
+ wbId: wb.id
, obj: toOmJson(o)
}));
};
- var objSelectedHandler = function (e) {
+ function objSelectedHandler(e) {
var o = e.target;
s.find('.wb-dim-x').val(o.left);
s.find('.wb-dim-y').val(o.top);
s.find('.wb-dim-w').val(o.width);
s.find('.wb-dim-h').val(o.height);
}
- var pathCreatedHandler = function (o) {
+ function pathCreatedHandler(o) {
o.path.uid = UUID.generate();
wbObjCreatedHandler(o.path);
};
@@ -655,53 +683,57 @@ var Wb = function() {
var obj = e.target;
console.log('Text Changed', obj);
};*/
- return {
- init: function(_wbId, tid) {
- wbId = _wbId;
- a = $('#' + tid);
- t = a.find('.tools'), c = a.find('canvas'), s = a.find(".wb-settings");
- c.attr('id', 'can-' + tid);
- canvas = new fabric.Canvas(c.attr('id'));
- canvas.wbId = _wbId;
- //TODO create via WS canvas:cleared
- canvas.on({
- 'object:added': objAddedHandler
- , 'object:modified': objModifiedHandler
- , 'object:selected': objSelectedHandler
- , 'path:created': pathCreatedHandler
- //, 'text:editing:exited': textEditedHandler
- //, 'text:changed': textChangedHandler
- , 'wb:object:created': wbObjCreatedHandler
- });
- internalInit(t);
- setRoomSizes();
- }
- , resize: function(w, h) {
- if (t.position().left + t.width() > a.width()) {
- t.position({
- my: "right"
- , at: "right"
- , of: a.selector
- , collision: "fit"
- });
- }
- canvas.setWidth(w);
- canvas.setHeight(h);
- }
- , getCanvas: function() {
- return canvas;
- }
- , getWbId: function() {
- return wbId;
+ function addCanvas() {
+ var c = $('<canvas></canvas>').attr('id', 'can-' + a.attr('id'));
+ a.find('.canvases').append(c);
+ var canvas = new fabric.Canvas(c.attr('id'));
+ canvas.wbId = wb.id;
+ canvas.slide = canvases.length;
+ //TODO create via WS canvas:cleared
+ canvas.on({
+ 'object:added': objAddedHandler
+ , 'object:modified': objModifiedHandler
+ , 'object:selected': objSelectedHandler
+ , 'path:created': pathCreatedHandler
+ //, 'text:editing:exited': textEditedHandler
+ //, 'text:changed': textChangedHandler
+ , 'wb:object:created': wbObjCreatedHandler
+ });
+ canvases.push(canvas);
+ }
+ wb.init = function(_wbId, tid) {
+ wb.id = _wbId;
+ a = $('#' + tid);
+ t = a.find('.tools'), s = a.find(".wb-settings");
+ addCanvas();
+ internalInit(t);
+ };
+ wb.resize = function(w, h) {
+ if (t.position().left + t.width() > a.width()) {
+ t.position({
+ my: "right"
+ , at: "right"
+ , of: a.selector
+ , collision: "fit"
+ });
}
+ wb.eachCanvas(function(canvas) {
+ canvas.setWidth(w).setHeight(h);
+ });
+ };
+ wb.getCanvas = function() {
+ return canvases[slide];
};
+ wb.eachCanvas = function(func) {
+ for (var i = 0; i < canvases.length; ++i) {
+ func(canvases[i]);
+ }
+ }
+ return wb;
};
var WbArea = (function() {
var container, area, tabs, scroll, self = {};
- function getWbTabId(id) {
- return "wb-tab-" + id;
- }
function refreshTabs() {
tabs.tabs("refresh").find('ul').removeClass('ui-corner-all').removeClass('ui-widget-header');
}
@@ -733,7 +765,7 @@ var WbArea = (function() {
}
}
wbAction('deleteObj', JSON.stringify({
- wbId: wb.data('getWbId')()
+ wbId: wb.data('id')()
, obj: arr
}));
return false;
@@ -753,19 +785,26 @@ var WbArea = (function() {
canvas.add(_o);
}
function _createHandler(canvas, _o) {
- if ('Video' === _o.fileType || 'Recording' === _o.fileType) {
- var vid = $('<video>').hide().attr('id', 'video-' + _o.uid).attr('poster', _o._poster + '&preview=true')
- .attr("width", _o.width).attr("height", _o.height)
- .append($('<source>').attr('type', 'video/mp4').attr('src', _o._src))
- $('#wb-tab-' + canvas.wbId).append(vid);
- var vImg = new fabric.Image(vid[0], {
- left: _o.left
- , top: _o.top
- });
- canvas.add(vImg);
- //console.log(vImg.toJSON(['uid', 'fileId', 'fileType']));
- } else {
- canvas.add(_o);
+ switch (_o.fileType) {
+ case 'Video':
+ case 'Recording':
+ {
+ var vid = $('<video>').hide().attr('id', 'video-' + _o.uid).attr('poster', _o._poster + '&preview=true')
+ .attr("width", _o.width).attr("height", _o.height)
+ .append($('<source>').attr('type', 'video/mp4').attr('src', _o._src))
+ $('#wb-tab-' + canvas.wbId).append(vid);
+ var vImg = new fabric.Image(vid[0], {
+ left: _o.left
+ , top: _o.top
+ });
+ canvas.add(vImg);
+ //console.log(vImg.toJSON(['uid', 'fileId', 'fileType']));
+ }
+ break;
+ case 'Presentation':
+ default:
+ canvas.add(_o);
+ break;
}
}
function _findObject(canvas, uid) {
@@ -797,10 +836,20 @@ var WbArea = (function() {
container.find('.wb-tabbar li').each(function(idx) {
if (wbId == 1 * $(this).data('wb-id')) {
tabs.tabs("option", "active", idx);
+ $(this)[0].scrollIntoView();
return false;
}
});
}
+ self.getWbTabId = function(id) {
+ return "wb-tab-" + id;
+ };
+ self.getCanvas = function(id) {
+ return $('#' + self.getWbTabId(id)).data('getCanvas')();
+ };
+ self.eachCanvas = function(id, func) {
+ return $('#' + self.getWbTabId(id)).data('eachCanvas')(func);
+ };
self.init = function() {
container = $(".room.wb.area");
tabs = container.find('.tabs').tabs({
@@ -826,35 +875,37 @@ var WbArea = (function() {
});
area = container.find(".wb-area");
$(window).keyup(deleteHandler);
- }
+ };
self.destroy = function() {
$(window).off('keyup', deleteHandler);
};
- self.add = function(obj) {
- var tid = getWbTabId(obj.id)
+ self.create = function(obj) {
+ var tid = self.getWbTabId(obj.id)
, li = $('#wb-area-tab').clone().attr('id', '').data('wb-id', obj.id)
, wb = $('#wb-area').clone().attr('id', tid);
li.find('a').text(obj.name).attr('title', obj.name).attr('href', "#" + tid);
li.find('button').click(function() {
wbAction('removeWb', JSON.stringify({id: obj.id}));
});
-
+
tabs.find(".ui-tabs-nav").append(li);
tabs.append(wb);
refreshTabs();
-
- _activateTab(obj.id);
+
wb.data(Wb()).data('init')(obj.id, tid);
+ }
+ self.add = function(obj) {
+ self.create(obj);
+ _activateTab(obj.id);
};
self.activate = function(obj) {
_activateTab(obj.id);
}
- self.load = function(json) { //TODO need to be unified
- var canvas = $('#' + getWbTabId(json.wbId)).data('getCanvas')();
- _createObject(canvas, json.obj, _createHandler);
+ self.load = function(json) {
+ _createObject(self.getCanvas(json.wbId), json.obj, _createHandler);
};
self.createObj = function(json) { //TODO need to be unified
- var canvas = $('#' + getWbTabId(json.wbId)).data('getCanvas')();
+ var canvas = self.getCanvas(json.wbId);
var o = json.obj;
switch(o.type) {
case 'pointer':
@@ -875,7 +926,7 @@ var WbArea = (function() {
}
};
self.modifyObj = function(json) { //TODO need to be unified
- var canvas = $('#' + getWbTabId(json.wbId)).data('getCanvas')();
+ var canvas = self.getCanvas(json.wbId);
var o = json.obj;
switch(o.type) {
case 'pointer':
@@ -896,13 +947,13 @@ var WbArea = (function() {
}
};
self.removeObj = function(json) {
- var canvas = $('#' + getWbTabId(json.wbId)).data('getCanvas')();
+ var canvas = self.getCanvas(json.wbId);
for (var i = 0; i < json.obj.length; ++i) {
_removeHandler(canvas, json.obj[i]);
}
};
self.remove = function(obj) {
- var tabId = getWbTabId(obj.id);
+ var tabId = self.getWbTabId(obj.id);
tabs.find('li[aria-controls="' + tabId + '"]').remove();
$("#" + tabId).remove();
refreshTabs();
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java?rev=1789544&r1=1789543&r2=1789544&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java Thu Mar 30 17:59:45 2017
@@ -25,6 +25,7 @@ import static org.apache.openmeetings.ut
import java.io.File;
import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.wicket.request.resource.IResource.Attributes;
public class JpgRecordingResourceReference extends RecordingResourceReference {
private static final long serialVersionUID = 1L;
@@ -44,7 +45,7 @@ public class JpgRecordingResourceReferen
}
@Override
- protected File getFile(Recording r) {
+ protected File getFile(Recording r, Attributes attr) {
return r.getFile(EXTENSION_JPG);
}
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java?rev=1789544&r1=1789543&r2=1789544&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java Thu Mar 30 17:59:45 2017
@@ -25,6 +25,7 @@ import static org.apache.openmeetings.ut
import java.io.File;
import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.wicket.request.resource.IResource.Attributes;
public class Mp4RecordingResourceReference extends RecordingResourceReference {
private static final long serialVersionUID = 1L;
@@ -44,7 +45,7 @@ public class Mp4RecordingResourceReferen
}
@Override
- protected File getFile(Recording r) {
+ protected File getFile(Recording r, Attributes attr) {
return r.getFile();
}
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java?rev=1789544&r1=1789543&r2=1789544&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java Thu Mar 30 17:59:45 2017
@@ -54,10 +54,10 @@ public abstract class FileItemResourceRe
}
@Override
- protected ResourceResponse newResourceResponse(Attributes attributes) {
- r = getFileItem(attributes);
+ protected ResourceResponse newResourceResponse(Attributes attr) {
+ r = getFileItem(attr);
if (r != null) {
- file = getFile(r);
+ file = getFile(r, attr);
ResourceResponse rr = createResourceResponse(file.toPath());
rr.setFileName(getFileName(r));
return rr;
@@ -73,6 +73,6 @@ public abstract class FileItemResourceRe
protected abstract String getMimeType(T r);
protected abstract String getFileName(T r);
- protected abstract File getFile(T r);
- protected abstract T getFileItem(Attributes attributes);
+ protected abstract File getFile(T r, Attributes attr);
+ protected abstract T getFileItem(Attributes attr);
}