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 2016/04/29 11:57:50 UTC
svn commit: r1741602 - in /openmeetings/application:
branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/
branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/
branches/3.2.x/openmeeting...
Author: solomax
Date: Fri Apr 29 09:57:49 2016
New Revision: 1741602
URL: http://svn.apache.org/viewvc?rev=1741602&view=rev
Log:
[OPENMEETINGS-1381] sip dialog is moved to html5
Added:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.html
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.html
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
Removed:
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/sip/
Modified:
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MainService.java
openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/library.lzx
openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/room.css
openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MainService.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/dao/basic/ConfigurationDao.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css
Modified: openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MainService.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MainService.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MainService.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MainService.java Fri Apr 29 09:57:49 2016
@@ -20,6 +20,7 @@ package org.apache.openmeetings.core.rem
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MAX_UPLOAD_SIZE_KEY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SIP_ENABLED;
import java.util.Date;
import java.util.List;
@@ -458,7 +459,7 @@ public class MainService implements IPen
public List<Configuration> getGeneralOptions(String SID) {
try {
- return configurationDao.get("exclusive.audio.keycode", "red5sip.enable", CONFIG_MAX_UPLOAD_SIZE_KEY, "mute.keycode", CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY);
+ return configurationDao.get("exclusive.audio.keycode", CONFIG_SIP_ENABLED, CONFIG_MAX_UPLOAD_SIZE_KEY, "mute.keycode", CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY);
} catch (Exception err) {
log.error("[getGeneralOptions]",err);
}
Modified: openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Fri Apr 29 09:57:49 2016
@@ -2083,35 +2083,34 @@ public class ScopeApplicationAdapter ext
return (c != null && c > 0) ? "(" + (c - 1) + ")" : "";
}
- public synchronized int updateSipTransport() {
+ public synchronized int updateSipTransport() {
log.debug("----------- updateSipTransport");
- IConnection current = Red5.getConnectionLocal();
- String streamid = current.getClient().getId();
- Client client = sessionManager.getClientByStreamId(streamid, null);
- Long roomId = client.getRoomId();
- Integer count = roomManager.getSipConferenceMembersNumber(roomId);
- String newNumber = getSipTransportLastname(count);
- log.debug("getSipConferenceMembersNumber: " + newNumber);
- if (!newNumber.equals(client.getLastname())) {
- client.setLastname(newNumber);
- sessionManager.updateClientByStreamId(streamid, client, false, null);
- log.debug("updateSipTransport: {}, {}, {}, {}, {}", new Object[]{client.getPublicSID(),
- client.getRoomId(), client.getFirstname(), client.getLastname(), client.getAvsettings()});
- sendMessageWithClient(new String[]{"personal",client.getFirstname(),client.getLastname()});
- }
- return count != null && count > 0 ? count - 1 : 0;
- }
-
- /**
- * Perform call to specified phone number and join to conference
- * @param number to call
- */
- public synchronized void joinToConfCall(String number) {
IConnection current = Red5.getConnectionLocal();
String streamid = current.getClient().getId();
- Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+ Client client = sessionManager.getClientByStreamId(streamid, null);
+ Long roomId = client.getRoomId();
+ Integer count = roomManager.getSipConferenceMembersNumber(roomId);
+ String newNumber = getSipTransportLastname(count);
+ log.debug("getSipConferenceMembersNumber: " + newNumber);
+ if (!newNumber.equals(client.getLastname())) {
+ client.setLastname(newNumber);
+ sessionManager.updateClientByStreamId(streamid, client, false, null);
+ log.debug("updateSipTransport: {}, {}, {}, {}, {}", new Object[] { client.getPublicSID(), client.getRoomId(),
+ client.getFirstname(), client.getLastname(), client.getAvsettings() });
+ sendMessageWithClient(new String[] { "personal", client.getFirstname(), client.getLastname() });
+ }
+ return count != null && count > 0 ? count - 1 : 0;
+ }
+
+ /**
+ * Perform call to specified phone number and join to conference
+ *
+ * @param number
+ * to call
+ */
+ public void joinToConfCall(String number, Room r) {
try {
- String sipNumber = getSipNumber(currentClient.getRoomId());
+ String sipNumber = (r != null && r.getConfno() != null) ? r.getConfno() : null;
log.debug("asterisk -rx \"originate Local/" + number + "@rooms-out extension " + sipNumber + "@rooms-originate\"");
Runtime.getRuntime().exec(new String[] { "asterisk", "-rx", "originate Local/" + number + "@rooms-out extension " + sipNumber + "@rooms-originate" });
} catch (IOException e) {
@@ -2119,15 +2118,6 @@ public class ScopeApplicationAdapter ext
}
}
- public synchronized String getSipNumber(Long roomId) {
- Room r = roomDao.get(roomId);
- if(r != null && r.getConfno() != null) {
- log.debug("getSipNumber: roomId: {}, sipNumber: {}", new Object[]{roomId, r.getConfno()});
- return r.getConfno();
- }
- return null;
- }
-
public void setSipTransport(Long roomId, String publicSID, String broadCastId) {
log.debug("----------- setSipTransport");
IConnection current = Red5.getConnectionLocal();
Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java Fri Apr 29 09:57:49 2016
@@ -22,6 +22,7 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_NAME;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CRYPT_KEY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MAX_UPLOAD_SIZE_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SIP_ENABLED;
import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_BASE_URL;
import static org.apache.openmeetings.util.OpenmeetingsVariables.configKeyCryptClassName;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -187,6 +188,10 @@ public class ConfigurationDao implements
return val;
}
+ public boolean isSipEnabled() {
+ return "yes".equals(getConfValue(CONFIG_SIP_ENABLED, String.class, "no"));
+ }
+
@Override
public Configuration get(long id) {
return get(Long.valueOf(id));
Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java Fri Apr 29 09:57:49 2016
@@ -184,12 +184,8 @@ public class RoomDao implements IDataPro
: em.createNamedQuery("getRoomsCapacityByIds", Long.class).setParameter("ids", ids).getSingleResult();
}
- private boolean isSipEnabled() {
- return "yes".equals(cfgDao.getConfValue("red5sip.enable", String.class, "no"));
- }
-
private String getSipNumber(long roomId) {
- if (isSipEnabled()) {
+ if (cfgDao.isSipEnabled()) {
return cfgDao.getConfValue("red5sip.room_prefix", String.class, "400") + roomId;
}
return null;
@@ -203,7 +199,7 @@ public class RoomDao implements IDataPro
} else {
entity.setUpdated(new Date());
}
- if (entity.isSipEnabled() && isSipEnabled()) {
+ if (entity.isSipEnabled() && cfgDao.isSipEnabled()) {
String sipNumber = getSipNumber(entity.getId());
if (sipNumber != null && !sipNumber.equals(entity.getConfno())) {
entity.setConfno(sipNumber);
Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java Fri Apr 29 09:57:49 2016
@@ -515,7 +515,7 @@ public class Room implements IDataProvid
}
return hiddenElements.add(e);
}
-
+
public List<RoomGroup> getRoomGroups() {
return roomGroups;
}
Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java Fri Apr 29 09:57:49 2016
@@ -397,8 +397,7 @@ public class User implements IDataProvid
throw new RuntimeException("Password of invalid length is provided");
}
}
- String sipEnabled = configDao.getConfValue("red5sip.enable", String.class, "no");
- if("yes".equals(sipEnabled)) {
+ if (configDao.isSipEnabled()) {
AsteriskSipUser u = getSipUser();
if (u == null) {
setSipUser(u = new AsteriskSipUser());
Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/library.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/library.lzx?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/library.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/library.lzx Fri Apr 29 09:57:49 2016
@@ -44,8 +44,6 @@
<include href="popups/" />
<include href="moderation/" />
- <include href="sip/" />
-
<include href="flexibleConferenceRoom/" />
</library>
Modified: openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java Fri Apr 29 09:57:49 2016
@@ -45,6 +45,7 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS_SHOW;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_QUALITY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SIP_ENABLED;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SOAP_REGISTER_KEY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
@@ -266,7 +267,7 @@ public class ImportInitvalues {
// red5SIP Integration Coniguration Values
// ***************************************
- cfgDao.add("red5sip.enable", cfg.red5SipEnable, null, "Enable to enable the red5SIP integration ");
+ cfgDao.add(CONFIG_SIP_ENABLED, cfg.red5SipEnable, null, "Enable to enable the red5SIP integration ");
cfgDao.add("red5sip.room_prefix", cfg.red5SipRoomPrefix, null,
"Numerical prefix for OM rooms created inside the SIP");
cfgDao.add("red5sip.exten_context", cfg.red5SipExtenContext, null,
Modified: openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java Fri Apr 29 09:57:49 2016
@@ -28,6 +28,7 @@ public class OpenmeetingsVariables {
public static final String CONFIG_OAUTH_REGISTER_KEY = "allow.oauth.register";
public static final String CONFIG_LOGIN_MIN_LENGTH_KEY = "user.login.minimum.length";
public static final String CONFIG_MAX_UPLOAD_SIZE_KEY = "max_upload_size";
+ public static final String CONFIG_SIP_ENABLED = "red5sip.enable";
public static final String CONFIG_PASS_MIN_LENGTH_KEY = "user.pass.minimum.length";
public static final String CONFIG_RSS_FEED1_KEY = "rss_feed1";
public static final String CONFIG_RSS_FEED2_KEY = "rss_feed2";
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html Fri Apr 29 09:57:49 2016
@@ -31,5 +31,6 @@
<div wicket:id="createPoll"></div>
<div wicket:id="vote"></div>
<div wicket:id="pollResults"></div>
+ <div wicket:id="sipDialer"></div>
</wicket:panel>
</html>
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java Fri Apr 29 09:57:49 2016
@@ -69,6 +69,7 @@ public class RoomMenuPanel extends Panel
private final CreatePollDialog createPoll;
private final VoteDialog vote;
private final PollResultsDialog pollResults;
+ private final SipDialerDialog sipDialer;
private final MenuPanel menuPanel;
private final StartSharingButton shareBtn;
private final Label roomName;
@@ -171,7 +172,14 @@ public class RoomMenuPanel extends Panel
pollResults.open(target);
}
};
- private final RoomMenuItem sipDialerMenuItem = new RoomMenuItem(Application.getString(1447), Application.getString(1488), false);
+ private final RoomMenuItem sipDialerMenuItem = new RoomMenuItem(Application.getString(1447), Application.getString(1488), false) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ sipDialer.open(target);
+ }
+ };
public RoomMenuPanel(String id, final RoomPanel room) {
super(id);
@@ -187,9 +195,9 @@ public class RoomMenuPanel extends Panel
add(createPoll = new CreatePollDialog("createPoll", room.getRoom().getId()));
add(vote = new VoteDialog("vote"));
add(pollResults = new PollResultsDialog("pollResults", room.getRoom().getId()));
+ add(sipDialer = new SipDialerDialog("sipDialer", room));
}
-
@Override
protected void onInitialize() {
super.onInitialize();
@@ -251,7 +259,8 @@ public class RoomMenuPanel extends Panel
return;
}
Room r = room.getRoom();
- boolean pollExists = getBean(PollDao.class).hasPoll(r.getId());
+ PollDao pollDao = getBean(PollDao.class);
+ boolean pollExists = pollDao.hasPoll(r.getId());
User u = getBean(UserDao.class).get(getUserId());
boolean notExternalUser = u.getType() != User.Type.external && u.getType() != User.Type.contact;
exitMenuItem.setEnabled(notExternalUser);//TODO check this
@@ -267,21 +276,23 @@ public class RoomMenuPanel extends Panel
applyWbMenuItem.setEnabled(!room.getClient().hasRight(Client.Right.whiteBoard));
applyAvMenuItem.setEnabled(!room.getClient().hasRight(Client.Right.audio) || !room.getClient().hasRight(Client.Right.video));
pollCreateMenuItem.setEnabled(moder);
- pollVoteMenuItem.setEnabled(pollExists && notExternalUser && !getBean(PollDao.class).hasVoted(r.getId(), getUserId()));
- pollResultMenuItem.setEnabled(pollExists || getBean(PollDao.class).getArchived(r.getId()).size() > 0);
+ pollVoteMenuItem.setEnabled(pollExists && notExternalUser && !pollDao.hasVoted(r.getId(), getUserId()));
+ pollResultMenuItem.setEnabled(pollExists || pollDao.getArchived(r.getId()).size() > 0);
+ sipDialerMenuItem.setEnabled(r.isSipEnabled() && getBean(ConfigurationDao.class).isSipEnabled());
//TODO sip menus
menuPanel.update(handler);
//FIXME TODO askBtn should be visible if moder is in room
StringBuilder roomClass = new StringBuilder("room name");
StringBuilder roomTitle = new StringBuilder();
if (room.getRecordingUser() != null) {
- org.apache.openmeetings.db.entity.room.Client recUser = getBean(ISessionManager.class).getClientByPublicSID(room.getRecordingUser(), null); //TODO check server
+ ISessionManager sessMngr = getBean(ISessionManager.class);
+ org.apache.openmeetings.db.entity.room.Client recUser = sessMngr.getClientByPublicSID(room.getRecordingUser(), null); //TODO check server
if (recUser != null) {
roomTitle.append(String.format("%s %s %s %s %s", getString("419")
, recUser.getUsername(), recUser.getFirstname(), recUser.getLastname(), df.get().format(recUser.getConnectedSince())));
roomClass.append(" screen");
}
- org.apache.openmeetings.db.entity.room.Client pubUser = getBean(ISessionManager.class).getClientByPublicSID(room.getPublishingUser(), null); //TODO check server
+ org.apache.openmeetings.db.entity.room.Client pubUser = sessMngr.getClientByPublicSID(room.getPublishingUser(), null); //TODO check server
if (pubUser != null) {
if (recUser != null) {
roomTitle.append('\n');
Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.html?rev=1741602&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.html (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.html Fri Apr 29 09:57:49 2016
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <div class="sip">
+ <div class="button-row">
+ <form wicket:id="form">
+ <input wicket:id="number" class="sip-number" type="text"/>
+ <span id="sip-dialer-btn-erase">←</span>
+ <input type="submit" wicket:id="submit" class="invisible-form-component"/>
+ </form>
+ </div>
+ <div class="button-row">
+ <button id="sip-dialer-btn-7" data-value="7">7</button>
+ <button id="sip-dialer-btn-8" data-value="8">8</button>
+ <button id="sip-dialer-btn-9" data-value="9">9</button>
+ </div>
+ <div class="button-row">
+ <button id="sip-dialer-btn-4" data-value="4">4</button>
+ <button id="sip-dialer-btn-5" data-value="5">5</button>
+ <button id="sip-dialer-btn-6" data-value="6">6</button>
+ </div>
+ <div class="button-row">
+ <button id="sip-dialer-btn-1" data-value="1">1</button>
+ <button id="sip-dialer-btn-2" data-value="2">2</button>
+ <button id="sip-dialer-btn-3" data-value="3">3</button>
+ </div>
+ <div class="button-row">
+ <button id="sip-dialer-btn-0" data-value="0">0</button>
+ </div>
+ </div>
+ <div wicket:id="feedback"></div>
+ <script type="text/javascript">
+ $('.sip').on('keydown', sipKeyDown).on('keyup', sipKeyUp);
+ $('.sip .button-row button').button().on('click', sipBtnClick);
+ $('#sip-dialer-btn-erase').button().on('click', sipBtnEraseClick);
+ </script>
+</wicket:panel>
+</html>
Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java?rev=1741602&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java Fri Apr 29 09:57:49 2016
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.room.menu;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.room.RoomPanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+
+public class SipDialerDialog extends AbstractFormDialog<String> {
+ private static final long serialVersionUID = 1L;
+ private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
+ private final DialogButton call = new DialogButton("call", Application.getString(1448));
+ private final DialogButton close = new DialogButton("close", Application.getString(85));
+ private final Form<String> form = new Form<>("form", Model.of(""));
+ private final TextField<String> number = new TextField<>("number", Model.of(""));
+ private final RoomPanel room;
+
+ public SipDialerDialog(String id, RoomPanel room) {
+ super(id, "");
+ this.room = room;
+ AjaxButton ab = new AjaxButton("submit") { //FAKE button so "submit-on-enter" works as expected
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+ SipDialerDialog.this.onSubmit(target);
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target, Form<?> form) {
+ SipDialerDialog.this.onError(target);
+ }
+ };
+ form.setDefaultButton(ab);
+ add(feedback.setOutputMarkupId(true), form.add(number, ab));
+ }
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+ setTitle(Model.of(getString("1003")));
+ }
+
+ @Override
+ public int getWidth() {
+ return 300;
+ }
+
+ @Override
+ protected List<DialogButton> getButtons() {
+ return Arrays.asList(call, close);
+ }
+
+ @Override
+ public DialogButton getSubmitButton() {
+ return call;
+ }
+
+ @Override
+ public Form<?> getForm() {
+ return form;
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target) {
+ target.add(feedback);
+ }
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ getBean(ScopeApplicationAdapter.class).joinToConfCall(number.getModelObject(), room.getRoom());
+ }
+}
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js Fri Apr 29 09:57:49 2016
@@ -51,6 +51,40 @@ function startPrivateChat(el) {
openChat();
$('#chatMessage .wysiwyg-editor').click();
}
+/***** functions required by SIP ******/
+function sipBtnClick() {
+ var txt = $('.sip-number');
+ txt.val(txt.val() + $(this).data('value'));
+}
+function sipBtnEraseClick() {
+ var txt = $('.sip-number');
+ var t = txt.val();
+ if (!!t) {
+ txt.val(t.substring(0, t.length -1));
+ }
+}
+function sipGetKey(evt) {
+ var k = -1;
+ if (evt.keyCode > 47 && evt.keyCode < 58) {
+ k = evt.keyCode - 48;
+ }
+ if (evt.keyCode > 95 && evt.keyCode < 106) {
+ k = evt.keyCode - 96;
+ }
+ return k;
+}
+function sipKeyDown(evt) {
+ var k = sipGetKey(evt);
+ if (k > 0) {
+ $('#sip-dialer-btn-' + k).addClass('ui-state-active');
+ }
+}
+function sipKeyUp(evt) {
+ var k = sipGetKey(evt);
+ if (k > 0) {
+ $('#sip-dialer-btn-' + k).removeClass('ui-state-active');
+ }
+}
/***** functions required by SWF ******/
function audioActivity(uid, active) {
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/room.css
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/room.css?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/room.css (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/room.css Fri Apr 29 09:57:49 2016
@@ -206,3 +206,17 @@
max-height: 100px;
overflow-y: auto;
}
+.sip .button-row {
+ text-align: center;
+ margin: 5px;
+}
+.sip .button-row input.sip-number {
+ width: 130px;
+}
+.sip .button-row #sip-dialer-btn-erase {
+ margin-left: 5px;
+}
+.sip .button-row #sip-dialer-btn-erase .ui-button-text {
+ padding: .1em .7em;
+ font-weight: bolder;
+}
Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MainService.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MainService.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MainService.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MainService.java Fri Apr 29 09:57:49 2016
@@ -20,6 +20,7 @@ package org.apache.openmeetings.core.rem
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MAX_UPLOAD_SIZE_KEY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SIP_ENABLED;
import java.util.Date;
import java.util.List;
@@ -458,7 +459,7 @@ public class MainService implements IPen
public List<Configuration> getGeneralOptions(String SID) {
try {
- return configurationDao.get("exclusive.audio.keycode", "red5sip.enable", CONFIG_MAX_UPLOAD_SIZE_KEY, "mute.keycode", CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY);
+ return configurationDao.get("exclusive.audio.keycode", CONFIG_SIP_ENABLED, CONFIG_MAX_UPLOAD_SIZE_KEY, "mute.keycode", CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY);
} catch (Exception err) {
log.error("[getGeneralOptions]",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=1741602&r1=1741601&r2=1741602&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 Fri Apr 29 09:57:49 2016
@@ -2083,35 +2083,34 @@ public class ScopeApplicationAdapter ext
return (c != null && c > 0) ? "(" + (c - 1) + ")" : "";
}
- public synchronized int updateSipTransport() {
+ public synchronized int updateSipTransport() {
log.debug("----------- updateSipTransport");
- IConnection current = Red5.getConnectionLocal();
- String streamid = current.getClient().getId();
- Client client = sessionManager.getClientByStreamId(streamid, null);
- Long roomId = client.getRoomId();
- Integer count = roomManager.getSipConferenceMembersNumber(roomId);
- String newNumber = getSipTransportLastname(count);
- log.debug("getSipConferenceMembersNumber: " + newNumber);
- if (!newNumber.equals(client.getLastname())) {
- client.setLastname(newNumber);
- sessionManager.updateClientByStreamId(streamid, client, false, null);
- log.debug("updateSipTransport: {}, {}, {}, {}, {}", new Object[]{client.getPublicSID(),
- client.getRoomId(), client.getFirstname(), client.getLastname(), client.getAvsettings()});
- sendMessageWithClient(new String[]{"personal",client.getFirstname(),client.getLastname()});
- }
- return count != null && count > 0 ? count - 1 : 0;
- }
-
- /**
- * Perform call to specified phone number and join to conference
- * @param number to call
- */
- public synchronized void joinToConfCall(String number) {
IConnection current = Red5.getConnectionLocal();
String streamid = current.getClient().getId();
- Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+ Client client = sessionManager.getClientByStreamId(streamid, null);
+ Long roomId = client.getRoomId();
+ Integer count = roomManager.getSipConferenceMembersNumber(roomId);
+ String newNumber = getSipTransportLastname(count);
+ log.debug("getSipConferenceMembersNumber: " + newNumber);
+ if (!newNumber.equals(client.getLastname())) {
+ client.setLastname(newNumber);
+ sessionManager.updateClientByStreamId(streamid, client, false, null);
+ log.debug("updateSipTransport: {}, {}, {}, {}, {}", new Object[] { client.getPublicSID(), client.getRoomId(),
+ client.getFirstname(), client.getLastname(), client.getAvsettings() });
+ sendMessageWithClient(new String[] { "personal", client.getFirstname(), client.getLastname() });
+ }
+ return count != null && count > 0 ? count - 1 : 0;
+ }
+
+ /**
+ * Perform call to specified phone number and join to conference
+ *
+ * @param number
+ * to call
+ */
+ public void joinToConfCall(String number, Room r) {
try {
- String sipNumber = getSipNumber(currentClient.getRoomId());
+ String sipNumber = (r != null && r.getConfno() != null) ? r.getConfno() : null;
log.debug("asterisk -rx \"originate Local/" + number + "@rooms-out extension " + sipNumber + "@rooms-originate\"");
Runtime.getRuntime().exec(new String[] { "asterisk", "-rx", "originate Local/" + number + "@rooms-out extension " + sipNumber + "@rooms-originate" });
} catch (IOException e) {
@@ -2119,15 +2118,6 @@ public class ScopeApplicationAdapter ext
}
}
- public synchronized String getSipNumber(Long roomId) {
- Room r = roomDao.get(roomId);
- if(r != null && r.getConfno() != null) {
- log.debug("getSipNumber: roomId: {}, sipNumber: {}", new Object[]{roomId, r.getConfno()});
- return r.getConfno();
- }
- return null;
- }
-
public void setSipTransport(Long roomId, String publicSID, String broadCastId) {
log.debug("----------- setSipTransport");
IConnection current = Red5.getConnectionLocal();
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java Fri Apr 29 09:57:49 2016
@@ -22,6 +22,7 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_NAME;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CRYPT_KEY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MAX_UPLOAD_SIZE_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SIP_ENABLED;
import static org.apache.openmeetings.util.OpenmeetingsVariables.DEFAULT_BASE_URL;
import static org.apache.openmeetings.util.OpenmeetingsVariables.configKeyCryptClassName;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -187,6 +188,10 @@ public class ConfigurationDao implements
return val;
}
+ public boolean isSipEnabled() {
+ return "yes".equals(getConfValue(CONFIG_SIP_ENABLED, String.class, "no"));
+ }
+
@Override
public Configuration get(long id) {
return get(Long.valueOf(id));
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java Fri Apr 29 09:57:49 2016
@@ -184,12 +184,8 @@ public class RoomDao implements IDataPro
: em.createNamedQuery("getRoomsCapacityByIds", Long.class).setParameter("ids", ids).getSingleResult();
}
- private boolean isSipEnabled() {
- return "yes".equals(cfgDao.getConfValue("red5sip.enable", String.class, "no"));
- }
-
private String getSipNumber(long roomId) {
- if (isSipEnabled()) {
+ if (cfgDao.isSipEnabled()) {
return cfgDao.getConfValue("red5sip.room_prefix", String.class, "400") + roomId;
}
return null;
@@ -203,7 +199,7 @@ public class RoomDao implements IDataPro
} else {
entity.setUpdated(new Date());
}
- if (entity.isSipEnabled() && isSipEnabled()) {
+ if (entity.isSipEnabled() && cfgDao.isSipEnabled()) {
String sipNumber = getSipNumber(entity.getId());
if (sipNumber != null && !sipNumber.equals(entity.getConfno())) {
entity.setConfno(sipNumber);
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java Fri Apr 29 09:57:49 2016
@@ -397,8 +397,7 @@ public class User implements IDataProvid
throw new RuntimeException("Password of invalid length is provided");
}
}
- String sipEnabled = configDao.getConfValue("red5sip.enable", String.class, "no");
- if("yes".equals(sipEnabled)) {
+ if (configDao.isSipEnabled()) {
AsteriskSipUser u = getSipUser();
if (u == null) {
setSipUser(u = new AsteriskSipUser());
Modified: openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java (original)
+++ openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java Fri Apr 29 09:57:49 2016
@@ -45,6 +45,7 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_FPS_SHOW;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_QUALITY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SIP_ENABLED;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SOAP_REGISTER_KEY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
@@ -266,7 +267,7 @@ public class ImportInitvalues {
// red5SIP Integration Coniguration Values
// ***************************************
- cfgDao.add("red5sip.enable", cfg.red5SipEnable, null, "Enable to enable the red5SIP integration ");
+ cfgDao.add(CONFIG_SIP_ENABLED, cfg.red5SipEnable, null, "Enable to enable the red5SIP integration ");
cfgDao.add("red5sip.room_prefix", cfg.red5SipRoomPrefix, null,
"Numerical prefix for OM rooms created inside the SIP");
cfgDao.add("red5sip.exten_context", cfg.red5SipExtenContext, null,
Modified: openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java (original)
+++ openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java Fri Apr 29 09:57:49 2016
@@ -28,6 +28,7 @@ public class OpenmeetingsVariables {
public static final String CONFIG_OAUTH_REGISTER_KEY = "allow.oauth.register";
public static final String CONFIG_LOGIN_MIN_LENGTH_KEY = "user.login.minimum.length";
public static final String CONFIG_MAX_UPLOAD_SIZE_KEY = "max_upload_size";
+ public static final String CONFIG_SIP_ENABLED = "red5sip.enable";
public static final String CONFIG_PASS_MIN_LENGTH_KEY = "user.pass.minimum.length";
public static final String CONFIG_RSS_FEED1_KEY = "rss_feed1";
public static final String CONFIG_RSS_FEED2_KEY = "rss_feed2";
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.html Fri Apr 29 09:57:49 2016
@@ -31,5 +31,6 @@
<div wicket:id="createPoll"></div>
<div wicket:id="vote"></div>
<div wicket:id="pollResults"></div>
+ <div wicket:id="sipDialer"></div>
</wicket:panel>
</html>
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java?rev=1741602&r1=1741601&r2=1741602&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java Fri Apr 29 09:57:49 2016
@@ -69,6 +69,7 @@ public class RoomMenuPanel extends Panel
private final CreatePollDialog createPoll;
private final VoteDialog vote;
private final PollResultsDialog pollResults;
+ private final SipDialerDialog sipDialer;
private final MenuPanel menuPanel;
private final StartSharingButton shareBtn;
private final Label roomName;
@@ -171,7 +172,14 @@ public class RoomMenuPanel extends Panel
pollResults.open(target);
}
};
- private final RoomMenuItem sipDialerMenuItem = new RoomMenuItem(Application.getString(1447), Application.getString(1488), false);
+ private final RoomMenuItem sipDialerMenuItem = new RoomMenuItem(Application.getString(1447), Application.getString(1488), false) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ sipDialer.open(target);
+ }
+ };
public RoomMenuPanel(String id, final RoomPanel room) {
super(id);
@@ -187,9 +195,9 @@ public class RoomMenuPanel extends Panel
add(createPoll = new CreatePollDialog("createPoll", room.getRoom().getId()));
add(vote = new VoteDialog("vote"));
add(pollResults = new PollResultsDialog("pollResults", room.getRoom().getId()));
+ add(sipDialer = new SipDialerDialog("sipDialer", room));
}
-
@Override
protected void onInitialize() {
super.onInitialize();
@@ -251,7 +259,8 @@ public class RoomMenuPanel extends Panel
return;
}
Room r = room.getRoom();
- boolean pollExists = getBean(PollDao.class).hasPoll(r.getId());
+ PollDao pollDao = getBean(PollDao.class);
+ boolean pollExists = pollDao.hasPoll(r.getId());
User u = getBean(UserDao.class).get(getUserId());
boolean notExternalUser = u.getType() != User.Type.external && u.getType() != User.Type.contact;
exitMenuItem.setEnabled(notExternalUser);//TODO check this
@@ -267,21 +276,23 @@ public class RoomMenuPanel extends Panel
applyWbMenuItem.setEnabled(!room.getClient().hasRight(Client.Right.whiteBoard));
applyAvMenuItem.setEnabled(!room.getClient().hasRight(Client.Right.audio) || !room.getClient().hasRight(Client.Right.video));
pollCreateMenuItem.setEnabled(moder);
- pollVoteMenuItem.setEnabled(pollExists && notExternalUser && !getBean(PollDao.class).hasVoted(r.getId(), getUserId()));
- pollResultMenuItem.setEnabled(pollExists || getBean(PollDao.class).getArchived(r.getId()).size() > 0);
+ pollVoteMenuItem.setEnabled(pollExists && notExternalUser && !pollDao.hasVoted(r.getId(), getUserId()));
+ pollResultMenuItem.setEnabled(pollExists || pollDao.getArchived(r.getId()).size() > 0);
+ sipDialerMenuItem.setEnabled(r.isSipEnabled() && getBean(ConfigurationDao.class).isSipEnabled());
//TODO sip menus
menuPanel.update(handler);
//FIXME TODO askBtn should be visible if moder is in room
StringBuilder roomClass = new StringBuilder("room name");
StringBuilder roomTitle = new StringBuilder();
if (room.getRecordingUser() != null) {
- org.apache.openmeetings.db.entity.room.Client recUser = getBean(ISessionManager.class).getClientByPublicSID(room.getRecordingUser(), null); //TODO check server
+ ISessionManager sessMngr = getBean(ISessionManager.class);
+ org.apache.openmeetings.db.entity.room.Client recUser = sessMngr.getClientByPublicSID(room.getRecordingUser(), null); //TODO check server
if (recUser != null) {
roomTitle.append(String.format("%s %s %s %s %s", getString("419")
, recUser.getUsername(), recUser.getFirstname(), recUser.getLastname(), df.get().format(recUser.getConnectedSince())));
roomClass.append(" screen");
}
- org.apache.openmeetings.db.entity.room.Client pubUser = getBean(ISessionManager.class).getClientByPublicSID(room.getPublishingUser(), null); //TODO check server
+ org.apache.openmeetings.db.entity.room.Client pubUser = sessMngr.getClientByPublicSID(room.getPublishingUser(), null); //TODO check server
if (pubUser != null) {
if (recUser != null) {
roomTitle.append('\n');
Added: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.html?rev=1741602&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.html (added)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.html Fri Apr 29 09:57:49 2016
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <div class="sip">
+ <div class="button-row">
+ <form wicket:id="form">
+ <input wicket:id="number" class="sip-number" type="text"/>
+ <span id="sip-dialer-btn-erase">←</span>
+ <input type="submit" wicket:id="submit" class="invisible-form-component"/>
+ </form>
+ </div>
+ <div class="button-row">
+ <button id="sip-dialer-btn-7" data-value="7">7</button>
+ <button id="sip-dialer-btn-8" data-value="8">8</button>
+ <button id="sip-dialer-btn-9" data-value="9">9</button>
+ </div>
+ <div class="button-row">
+ <button id="sip-dialer-btn-4" data-value="4">4</button>
+ <button id="sip-dialer-btn-5" data-value="5">5</button>
+ <button id="sip-dialer-btn-6" data-value="6">6</button>
+ </div>
+ <div class="button-row">
+ <button id="sip-dialer-btn-1" data-value="1">1</button>
+ <button id="sip-dialer-btn-2" data-value="2">2</button>
+ <button id="sip-dialer-btn-3" data-value="3">3</button>
+ </div>
+ <div class="button-row">
+ <button id="sip-dialer-btn-0" data-value="0">0</button>
+ </div>
+ </div>
+ <div wicket:id="feedback"></div>
+ <script type="text/javascript">
+ $('.sip').on('keydown', sipKeyDown).on('keyup', sipKeyUp);
+ $('.sip .button-row button').button().on('click', sipBtnClick);
+ $('#sip-dialer-btn-erase').button().on('click', sipBtnEraseClick);
+ </script>
+</wicket:panel>
+</html>
Added: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java?rev=1741602&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java (added)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/SipDialerDialog.java Fri Apr 29 09:57:49 2016
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.room.menu;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.room.RoomPanel;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+
+public class SipDialerDialog extends AbstractFormDialog<String> {
+ private static final long serialVersionUID = 1L;
+ private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
+ private final DialogButton call = new DialogButton("call", Application.getString(1448));
+ private final DialogButton close = new DialogButton("close", Application.getString(85));
+ private final Form<String> form = new Form<>("form", Model.of(""));
+ private final TextField<String> number = new TextField<>("number", Model.of(""));
+ private final RoomPanel room;
+
+ public SipDialerDialog(String id, RoomPanel room) {
+ super(id, "");
+ this.room = room;
+ AjaxButton ab = new AjaxButton("submit") { //FAKE button so "submit-on-enter" works as expected
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+ SipDialerDialog.this.onSubmit(target);
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target, Form<?> form) {
+ SipDialerDialog.this.onError(target);
+ }
+ };
+ form.setDefaultButton(ab);
+ add(feedback.setOutputMarkupId(true), form.add(number, ab));
+ }
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+ setTitle(Model.of(getString("1003")));
+ }
+
+ @Override
+ public int getWidth() {
+ return 300;
+ }
+
+ @Override
+ protected List<DialogButton> getButtons() {
+ return Arrays.asList(call, close);
+ }
+
+ @Override
+ public DialogButton getSubmitButton() {
+ return call;
+ }
+
+ @Override
+ public Form<?> getForm() {
+ return form;
+ }
+
+ @Override
+ protected void onError(AjaxRequestTarget target) {
+ target.add(feedback);
+ }
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ getBean(ScopeApplicationAdapter.class).joinToConfCall(number.getModelObject(), room.getRoom());
+ }
+}
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=1741602&r1=1741601&r2=1741602&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 Fri Apr 29 09:57:49 2016
@@ -91,6 +91,40 @@ function startPrivateChat(el) {
openChat();
$('#chatMessage .wysiwyg-editor').click();
}
+/***** functions required by SIP ******/
+function sipBtnClick() {
+ var txt = $('.sip-number');
+ txt.val(txt.val() + $(this).data('value'));
+}
+function sipBtnEraseClick() {
+ var txt = $('.sip-number');
+ var t = txt.val();
+ if (!!t) {
+ txt.val(t.substring(0, t.length -1));
+ }
+}
+function sipGetKey(evt) {
+ var k = -1;
+ if (evt.keyCode > 47 && evt.keyCode < 58) {
+ k = evt.keyCode - 48;
+ }
+ if (evt.keyCode > 95 && evt.keyCode < 106) {
+ k = evt.keyCode - 96;
+ }
+ return k;
+}
+function sipKeyDown(evt) {
+ var k = sipGetKey(evt);
+ if (k > 0) {
+ $('#sip-dialer-btn-' + k).addClass('ui-state-active');
+ }
+}
+function sipKeyUp(evt) {
+ var k = sipGetKey(evt);
+ if (k > 0) {
+ $('#sip-dialer-btn-' + k).removeClass('ui-state-active');
+ }
+}
/***** functions required by SWF ******/
function audioActivity(uid, active) {
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=1741602&r1=1741601&r2=1741602&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 Fri Apr 29 09:57:49 2016
@@ -206,3 +206,17 @@
max-height: 100px;
overflow-y: auto;
}
+.sip .button-row {
+ text-align: center;
+ margin: 5px;
+}
+.sip .button-row input.sip-number {
+ width: 130px;
+}
+.sip .button-row #sip-dialer-btn-erase {
+ margin-left: 5px;
+}
+.sip .button-row #sip-dialer-btn-erase .ui-button-text {
+ padding: .1em .7em;
+ font-weight: bolder;
+}