Author: solomax
Date: Thu Mar 23 12:53:00 2017
New Revision: 1788234
URL: http://svn.apache.org/viewvc?rev=1788234&view=rev
Log:
[OPENMEETINGS-551] synchronized add/remove WB is added; code clean-up
Removed:
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardObjectSyncManager.java
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteboardService.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardSyncLockObject.java
Modified:
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboards.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
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/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css
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=1788234&r1=1788233&r2=1788234&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 23 12:53:00 2017
@@ -19,11 +19,14 @@
package org.apache.openmeetings.core.data.whiteboard;
import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicLong;
+import org.apache.openmeetings.db.dao.label.LabelDao;
import org.apache.openmeetings.db.dto.room.Whiteboard;
import org.apache.openmeetings.db.dto.room.Whiteboards;
+import org.springframework.beans.factory.annotation.Autowired;
/**
* Memory based cache, configured as singleton in spring configuration
@@ -34,53 +37,57 @@ import org.apache.openmeetings.db.dto.ro
public class WhiteboardCache {
private Map<Long, Whiteboards> cache = new ConcurrentHashMap<>();
- private volatile AtomicLong whiteboardId = new AtomicLong(0);
+ @Autowired
+ private LabelDao labelDao;
- public long getNewWhiteboardId(Long roomId, String name) {
- long wbId = whiteboardId.getAndIncrement();
- set(roomId, new Whiteboard(name), wbId);
- return wbId;
+ private String getDefaultName(Long langId, int num) {
+ StringBuilder sb = new StringBuilder(labelDao.getString("615",
langId));
+ if (num > 0) {
+ sb.append(" ").append(num);
+ }
+ return sb.toString();
+ }
+
+ public Set<Entry<Long, Whiteboard>> list(Long roomId, Long langId) {
+ Whiteboards wbs = get(roomId);
+ if (wbs.getWhiteboards().isEmpty()) {
+ add(wbs, langId);
+ }
+ return wbs.getWhiteboards().entrySet();
+ }
+
+ public Whiteboard add(Long roomId, Long langId) {
+ Whiteboards wbs = get(roomId);
+ return add(wbs, langId);
+ }
+
+ public Whiteboard add(Whiteboards wbs, Long langId) {
+ Whiteboard wb = new Whiteboard(getDefaultName(langId,
wbs.count()));
+ wbs.add(wb);
+ return wb;
}
- /*
- * Room items a Whiteboard
- */
public Whiteboards get(Long roomId) {
if (roomId == null) {
return null;
}
- if (cache.containsKey(roomId)) {
- return cache.get(roomId);
- } else {
- Whiteboards whiteboards = new Whiteboards();
- whiteboards.setRoomId(roomId);
- set(roomId, whiteboards);
- return whiteboards;
+ Whiteboards wbs = cache.get(roomId);
+ if (wbs == null) {
+ wbs = new Whiteboards(roomId);
+ cache.put(roomId, wbs);
}
+ return wbs;
}
- public Whiteboard get(Long roomId, Long whiteBoardId) {
- Whiteboards whiteboards = get(roomId);
- Whiteboard wb = whiteboards.getWhiteboards().get(whiteBoardId);
- if (wb == null) {
- wb = new Whiteboard();
- set(roomId, wb, whiteBoardId);
+ public void clear(Long roomId, Long wbId) {
+ Whiteboard wb = get(roomId).get(wbId);
+ if (wb != null) {
+ wb.clear();
}
- return wb;
- }
-
- /*
- * Whiteboard Object List
- *
- */
- public void set(Long roomId, Whiteboards whiteboards) {
- cache.put(roomId, whiteboards);
}
- public void set(Long roomId, Whiteboard wb, long whiteBoardId) {
- Whiteboards whiteboards = get(roomId);
- wb.setWhiteBoardId(whiteBoardId);
- whiteboards.getWhiteboards().put(whiteBoardId, wb);
- cache.put(roomId, whiteboards);
+ public Whiteboard remove(Long roomId, Long wbId) {
+ Whiteboards wbs = get(roomId);
+ return wbs.getWhiteboards().remove(wbId);
}
}
Modified:
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java?rev=1788234&r1=1788233&r2=1788234&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java
(original)
+++
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java
Thu Mar 23 12:53:00 2017
@@ -20,11 +20,8 @@ package org.apache.openmeetings.core.dat
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
-import org.apache.openmeetings.db.dto.room.Whiteboard;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +34,7 @@ public class WhiteboardManager {
@SuppressWarnings("unchecked")
public void add(Long roomId, Map<Integer, Object> whiteboardObj, Long
whiteBoardId) {
+ /* FIXME TODO check this
try {
log.debug("add: ", whiteboardObj);
@@ -132,5 +130,6 @@ public class WhiteboardManager {
} catch (Exception err) {
log.error("[add]", err);
}
+ */
}
}
Modified:
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1788234&r1=1788233&r2=1788234&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
(original)
+++
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
Thu Mar 23 12:53:00 2017
@@ -42,7 +42,6 @@ import org.apache.openmeetings.core.data
import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache;
import org.apache.openmeetings.core.data.whiteboard.WhiteboardManager;
import org.apache.openmeetings.core.remote.RecordingService;
-import org.apache.openmeetings.core.remote.WhiteboardService;
import org.apache.openmeetings.core.remote.util.SessionVariablesUtil;
import org.apache.openmeetings.core.util.WebSocketHelper;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
@@ -103,8 +102,6 @@ public class ScopeApplicationAdapter ext
@Autowired
private ISessionManager sessionManager;
@Autowired
- private WhiteboardService whiteBoardService;
- @Autowired
private WhiteboardManager whiteboardManager;
@Autowired
private WhiteboardCache whiteboardCache;
@@ -602,18 +599,11 @@ public class ScopeApplicationAdapter ext
public void roomLeaveByScope(Client client, IScope scope) {
try {
log.debug("[roomLeaveByScope] currentClient " + client);
- Long roomId = client.getRoomId();
-
if (client.isScreenClient() &&
client.isStartStreaming()) {
//TODO check others/find better way
WebSocketHelper.sendRoom(new
TextRoomMessage(client.getRoomId(), client.getUserId(),
RoomMessage.Type.sharingStoped, client.getStreamPublishName()));
}
- // Remove User from Sync List's
- if (roomId != null) {
- whiteBoardService.removeUserFromAllLists(scope,
client);
- }
-
log.debug("removing Username " + client.getUsername() +
" "
+ client.getConnectedSince() + "
streamid: "
+ client.getStreamid());
@@ -1276,7 +1266,7 @@ public class ScopeApplicationAdapter ext
wbClear.put("id", wbId);
wbClear.put("param", Arrays.asList("whiteboard", new
Date(), "clear", null));
- whiteboardCache.get(client.getRoomId(), wbId).clear();
+ whiteboardCache.clear(client.getRoomId(), wbId);
sendToScope(client.getRoomId(),
"sendVarsToWhiteboardById", Arrays.asList(null, wbClear));
}
sendToWhiteboard(client, Arrays.asList("whiteboard", new
Date(), "draw", wbObject), wbId);
Modified:
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java?rev=1788234&r1=1788233&r2=1788234&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
(original)
+++
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
Thu Mar 23 12:53:00 2017
@@ -32,7 +32,7 @@ import org.slf4j.Logger;
public class Whiteboard {
private static final Logger log =
Red5LoggerFactory.getLogger(Whiteboard.class, webAppRootKey);
- private long whiteBoardId;
+ private long id;
private Integer x = 0;
private Integer y = 0;
private Integer zoom = 100;
@@ -48,12 +48,12 @@ public class Whiteboard {
this.name = name;
}
- public long getWhiteBoardId() {
- return whiteBoardId;
+ public long getId() {
+ return id;
}
- public void setWhiteBoardId(long whiteBoardId) {
- this.whiteBoardId = whiteBoardId;
+ public void setId(long id) {
+ this.id = id;
}
public Integer getX() {
Modified:
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboards.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboards.java?rev=1788234&r1=1788233&r2=1788234&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboards.java
(original)
+++
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboards.java
Thu Mar 23 12:53:00 2017
@@ -21,14 +21,20 @@ package org.apache.openmeetings.db.dto.r
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicLong;
public class Whiteboards {
private Long roomId;
private final String uid = UUID.randomUUID().toString();
private Map<Long, Whiteboard> whiteboards = new ConcurrentHashMap<>();
+ private volatile AtomicLong whiteboardId = new AtomicLong(0);
public Whiteboards() {}
+ public Whiteboards(Long roomId) {
+ this.roomId = roomId;
+ }
+
public Long getRoomId() {
return roomId;
}
@@ -37,6 +43,20 @@ public class Whiteboards {
this.roomId = roomId;
}
+ public Whiteboards add(Whiteboard wb) {
+ wb.setId(whiteboardId.getAndIncrement());
+ whiteboards.put(wb.getId(), wb);
+ return this;
+ }
+
+ public Whiteboard get(Long id) {
+ return whiteboards.get(id);
+ }
+
+ public int count() {
+ return whiteboards.size();
+ }
+
public Map<Long, Whiteboard> getWhiteboards() {
return whiteboards;
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1788234&r1=1788233&r2=1788234&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
Thu Mar 23 12:53:00 2017
@@ -138,7 +138,7 @@ public class RoomPanel extends BasePanel
, "1429",
"1430", "775", "452", "767", "764", "765", "918", "54", "761", "762"))
.toString()
));
- } catch (MalformedURLException e) {
+ } catch (NullPointerException|MalformedURLException e) {
log.error("Error while constructing room
parameters", e);
}
WebSocketHelper.sendRoom(new RoomMessage(r.getId(),
getUserId(), RoomMessage.Type.roomEnter));
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js?rev=1788234&r1=1788233&r2=1788234&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
Thu Mar 23 12:53:00 2017
@@ -57,15 +57,16 @@ function initVideo(_options) {
}
function setRoomSizes() {
- var w = $(window).width() - $(".room.sidebar.left").width() - 5;
- var h = $(window).height() - $('#menu').height();
- $(".room.sidebar.left").height(h);
- var p = $(".room.sidebar.left .tabs");
+ var sb = $(".room.sidebar.left")
+ , w = $(window).width() - sb.width() - 5
+ , h = $(window).height() - $('#menu').height()
+ , p = sb.find('.tabs');
+ sb.height(h);
var hh = h - 5;
p.height(hh);
$(".user.list", p).height(hh - $("ul", p).height() - $(".user.header",
p).height() - 5);
if (!!WbArea) {
- WbArea.resize(w, h);
+ WbArea.resize(sb.width(), w, h);
}
}
function roomReload(event, ui) {
@@ -100,7 +101,7 @@ function roomLoad() {
$(".room.sidebar.left").resizable({
handles: "e"
, stop: function(event, ui) {
- alignBlocks();
+ setRoomSizes();
}
});
Wicket.Event.subscribe("/websocket/closed", roomClosed);
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=1788234&r1=1788233&r2=1788234&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 23 12:53:00 2017
@@ -19,31 +19,83 @@
package org.apache.openmeetings.web.room.wb;
import static org.apache.openmeetings.web.app.Application.getBean;
+import static
org.apache.openmeetings.web.util.CallbackFunctionHelper.getNamedFunction;
import static org.apache.wicket.AttributeModifier.append;
+import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
import java.util.Arrays;
+import java.util.Map.Entry;
import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache;
+import org.apache.openmeetings.core.util.WebSocketHelper;
+import org.apache.openmeetings.db.dto.room.Whiteboard;
import org.apache.openmeetings.db.entity.room.Room.Right;
import org.apache.openmeetings.util.OmFileHelper;
import org.apache.openmeetings.web.room.RoomPanel;
+import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.util.string.StringValue;
+
+import com.github.openjson.JSONObject;
public class WbPanel extends Panel {
private static final long serialVersionUID = 1L;
+ public static final String FUNC_ACTION = "wbAction";
+ public static final String PARAM_ACTION = "action";
+ public static final String PARAM_OBJ = "obj";
private final static ResourceReference WB_JS_REFERENCE = new
JavaScriptResourceReference(WbPanel.class, "wb.js");
private final static ResourceReference FABRIC_JS_REFERENCE = new
JavaScriptResourceReference(WbPanel.class, "fabric.js");
private boolean readOnly = true;
private final RoomPanel rp;
+ private enum Action {
+ createWb
+ , removeWb
+ }
+ private final AbstractDefaultAjaxBehavior wbAction = new
AbstractDefaultAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void respond(AjaxRequestTarget target) {
+ try {
+ Action a =
Action.valueOf(getRequest().getRequestParameters().getParameterValue(PARAM_ACTION).toString());
+ StringValue sv =
getRequest().getRequestParameters().getParameterValue(PARAM_OBJ);
+ JSONObject obj = sv.isEmpty() ? new
JSONObject() : new JSONObject(sv.toString());
+
+ //wb-right
+ if (rp.getClient().hasRight(Right.whiteBoard)) {
+ switch (a) {
+ case createWb:
+ {
+ Whiteboard wb =
getBean(WhiteboardCache.class).add(rp.getRoom().getId(),
rp.getClient().getUser().getLanguageId());
+
sendWb(getAddWbScript(wb.getId(), wb.getName()).toString());
+ }
+ break;
+ case removeWb:
+ {
+ long _id =
obj.optLong("id", -1);
+ Long id = _id < 0 ?
null : _id;
+
getBean(WhiteboardCache.class).remove(rp.getRoom().getId(), id);
+
sendWb(String.format("WbArea.remove(%s);", id));
+ }
+ break;
+ }
+ }
+ } catch (Exception e) {
+ // no-op
+ }
+ }
+ };
public WbPanel(String id, RoomPanel rp) {
super(id);
@@ -61,6 +113,7 @@ public class WbPanel extends Panel {
, new
AttributeAppender("data-image", item.getModelObject()).setSeparator(""));
}
});
+ add(wbAction);
}
@Override
@@ -68,7 +121,32 @@ public class WbPanel extends Panel {
super.renderHead(response);
response.render(JavaScriptHeaderItem.forReference(FABRIC_JS_REFERENCE));
response.render(JavaScriptHeaderItem.forReference(WB_JS_REFERENCE));
- response.render(OnDomReadyHeaderItem.forScript("WbArea.init();
WbArea.add(1, 'Whiteboard 1');"));
+ response.render(new
PriorityHeaderItem(getNamedFunction(FUNC_ACTION, wbAction,
explicit(PARAM_ACTION), explicit(PARAM_OBJ))));
+ StringBuilder sb = new StringBuilder("WbArea.init();");
+ for (Entry<Long, Whiteboard> entry :
getBean(WhiteboardCache.class).list(rp.getRoom().getId(),
rp.getClient().getUser().getLanguageId())) {
+ sb.append(getAddWbScript(entry.getKey(),
entry.getValue().getName()));
+ }
+ response.render(OnDomReadyHeaderItem.forScript(sb));
+ }
+
+ private void sendWb(CharSequence func) {
+ WebSocketHelper.sendRoom(
+ rp.getRoom().getId()
+ , new JSONObject()
+ .put("type", "wb")
+ .put("func", func)
+ .toString()
+ );
+ }
+
+ private static CharSequence getAddWbScript(Long id, String name) {
+ return new StringBuilder("WbArea.add(")
+ .append(new JSONObject()
+ .put("id", id)
+ .put("name", name)
+ .toString()
+ )
+ .append(");");
}
public boolean isReadOnly() {
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=1788234&r1=1788233&r2=1788234&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 23 12:53:00 2017
@@ -594,7 +594,10 @@ var Wb = function() {
};
var WbArea = (function() {
var container, area, tabs, self = {};
-
+
+ function getWbTabId(id) {
+ return "wb-tab-" + id;
+ }
function refreshTabs() {
tabs.tabs("refresh").find('ul').removeClass('ui-corner-all').removeClass('ui-widget-header');
}
@@ -630,12 +633,15 @@ var WbArea = (function() {
}
self.init = function() {
tabs = $('.room.wb.area .tabs').tabs();
- tabs.find( ".ui-tabs-nav" ).sortable({
+ tabs.find(".ui-tabs-nav").sortable({
axis: "x"
, stop: function() {
refreshTabs();
}
});
+ tabs.find('.add.om-icon').click(function() {
+ wbAction('createWb');
+ });
container = $(".room.wb.area");
area = container.find(".wb-area");
$(window).keyup(deleteHandler);
@@ -643,28 +649,37 @@ var WbArea = (function() {
self.destroy = function() {
$(window).off('keyup', deleteHandler);
};
- self.add = function(id, name) {
- var tid = "wb-tab-" + id
- , li = $('#wb-area-tab').clone().attr('id',
'').data('wb-id', id)
+ self.add = function(obj) {
+ var tid = 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(name).attr('href', "#" + 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();
$('.room.wb.area .wb-tabbar li').each(function(idx) {
- if (id == 1 * $(this).data('wb-id')) {
+ if (obj.id == 1 * $(this).data('wb-id')) {
tabs.tabs("option", "active", idx);
return false;
}
});
- wb.data(Wb()).data('init')(id, tid);
- }
- self.resize = function(w, h) {
+ wb.data(Wb()).data('init')(obj.id, tid);
+ };
+ self.remove = function(id) {
+ var tabId = getWbTabId(id);
+ tabs.find('li[aria-controls="' + tabId + '"]').remove();
+ $("#" + tabId).remove();
+ refreshTabs();
+ };
+ self.resize = function(posX, w, h) {
if (!container) return;
var hh = h - 5;
- container.width(w);
+ container.width(w).css('left', posX + "px");
area.width(w);
container.height(h);
@@ -680,3 +695,19 @@ var WbArea = (function() {
}
return self;
})();
+$(function() {
+ Wicket.Event.subscribe("/websocket/message", function(jqEvent, msg) {
+ try {
+ var m = jQuery.parseJSON(msg);
+ if (m) {
+ switch(m.type) {
+ case "wb":
+ eval(m.func);
+ break;
+ }
+ }
+ } catch (err) {
+ //no-op
+ }
+ });
+});
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml?rev=1788234&r1=1788233&r2=1788234&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
Thu Mar 23 12:53:00 2017
@@ -65,8 +65,6 @@
<bean id="openmeetings.DatabaseStore"
class="org.apache.openmeetings.core.session.store.DatabaseStore" />
<bean id="whiteboardCache" scope="singleton"
class="org.apache.openmeetings.core.data.whiteboard.WhiteboardCache" />
- <!-- WhiteboardObjectSyncManager can stay in the memory, even on
cluster! -->
- <bean id="whiteboardObjectSyncManager" scope="singleton"
class="org.apache.openmeetings.core.data.whiteboard.WhiteboardObjectSyncManager"
/>
<!-- Cluster related config start -->
<bean id="openmeetings.ServerUtil" scope="singleton"
class="org.apache.openmeetings.core.session.ServerUtil">
@@ -77,7 +75,6 @@
<!-- Start of Services -->
<bean id="xmlcrm.service"
class="org.apache.openmeetings.core.remote.MainService" />
- <bean id="whiteboardservice.service"
class="org.apache.openmeetings.core.remote.WhiteboardService" />
<bean id="userservice.service"
class="org.apache.openmeetings.core.remote.UserService" />
<bean id="fileservice.service"
class="org.apache.openmeetings.core.remote.ConferenceLibrary" />
<bean id="openmeetings.FileProcessor"
class="org.apache.openmeetings.core.data.file.FileProcessor" />
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css?rev=1788234&r1=1788233&r2=1788234&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css
Thu Mar 23 12:53:00 2017
@@ -88,10 +88,10 @@
.room.sidebar.left {
min-width: 200px;
width: 315px;
- float: left;
+ position: absolute;
}
.room.wb.area {
- float: left;
+ position: absolute;
}
.room.wb.area.ui-state-hover {
border: 0;