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/15 08:40:59 UTC
svn commit: r1739231 - in /openmeetings/application:
branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/
branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/popups/
branches/3.2.x/openmeetings-web/src...
Author: solomax
Date: Fri Apr 15 06:40:59 2016
New Revision: 1739231
URL: http://svn.apache.org/viewvc?rev=1739231&view=rev
Log:
[OPENMEETINGS-896] meeting timer is added, user list is improved
Removed:
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/popups/meetingTimer.lzx
Modified:
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx
openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/popups/library.lzx
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.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/webapp/css/room.css
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.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/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/webapp/css/room.css
Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx?rev=1739231&r1=1739230&r2=1739231&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx Fri Apr 15 06:40:59 2016
@@ -59,8 +59,6 @@
<attribute name="roomobj" value="null" />
- <attribute name="meetingTimer" value="null" />
-
<handler name="oninit">
<![CDATA[
if ($debug) Debug.write("baseConferenceRoom:: oninit");
@@ -88,11 +86,6 @@
if ($debug) Debug.write("no appointed meeting");
}
- if (this.roomobj.demoRoom && this.roomobj.demoTime != null) {
- if ($debug) Debug.warn("THIS IS A DEMO ROOM THAT SHOULD CLOSE AFTER SEC: ",this.roomobj.demoTime);
- this.meetingTimer = new lz.meetingTimer(canvas,{refObj:this, roomobj:this.roomobj});
- }
-
if ($debug) Debug.write("canvas._videocontainer ", canvas._videocontainer);
canvas._videocontainer.setAttribute("allowUserQuestions",this.roomobj.allowUserQuestions);
]]>
Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/popups/library.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/popups/library.lzx?rev=1739231&r1=1739230&r2=1739231&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/popups/library.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/popups/library.lzx Fri Apr 15 06:40:59 2016
@@ -37,7 +37,6 @@
<include href="converterPopup.lzx" />
<include href="errorModeratorPopup.lzx" />
<include href="syncWin.lzx" />
- <include href="meetingTimer.lzx" />
<include href="incomingScreenSharing.lzx" />
<include href="redirectBox.lzx" />
<include href="chooseNickName.lzx" />
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1739231&r1=1739230&r2=1739231&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java Fri Apr 15 06:40:59 2016
@@ -102,9 +102,9 @@ import ro.fortsoft.wicket.dashboard.web.
public class Application extends AuthenticatedWebApplication implements IApplication {
private static final Logger log = getLogger(Application.class, webAppRootKey);
private static boolean isInstalled;
- private static Map<String, Client> ONLINE_USERS = new ConcurrentHashMap<>();
- private static Map<String, Client> INVALID_SESSIONS = new ConcurrentHashMap<>();
- private static Map<Long, Set<Client>> ROOMS = new ConcurrentHashMap<>();
+ private static ConcurrentHashMap<String, Client> ONLINE_USERS = new ConcurrentHashMap<>();
+ private static ConcurrentHashMap<String, Client> INVALID_SESSIONS = new ConcurrentHashMap<>();
+ private static ConcurrentHashMap<Long, Set<Client>> ROOMS = new ConcurrentHashMap<>();
//additional maps for faster searching should be created
private DashboardContext dashboardContext;
private static Set<String> STRINGS_WITH_APP = new HashSet<>(); //FIXME need to be removed
@@ -282,11 +282,8 @@ public class Application extends Authent
}
public static Client addUserToRoom(Client c) {
- Long roomId = c.getRoomId();
- if (!ROOMS.containsKey(roomId)) {
- ROOMS.put(roomId, new ConcurrentHashSet<Client>());
- }
- ROOMS.get(roomId).add(c);
+ ROOMS.putIfAbsent(c.getRoomId(), new ConcurrentHashSet<Client>());
+ ROOMS.get(c.getRoomId()).add(c);
return c;
}
@@ -296,20 +293,18 @@ public class Application extends Authent
removeUserFromRoom(c);
}
- public static Client removeUserFromRoom(Client _c) {
- if (ROOMS.containsKey(_c.getRoomId())) {
- Set<Client> clients = ROOMS.get(_c.getRoomId());
- for (Client c : clients) {
- if (c.equals(_c)) {
- clients.remove(c);
- return c;
+ public static Client removeUserFromRoom(Client c) {
+ if (c.getRoomId() != null) {
+ Set<Client> clients = ROOMS.get(c.getRoomId());
+ if (clients != null) {
+ clients.remove(c);
+ if (clients.isEmpty()) {
+ ROOMS.remove(c.getRoomId());
}
- }
- if (clients.isEmpty()) {
- ROOMS.remove(_c.getRoomId());
+ c.setRoomId(null);
}
}
- return _c;
+ return c;
}
public static Set<Client> getRoomUsers(long roomId) {
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1739231&r1=1739230&r2=1739231&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java Fri Apr 15 06:40:59 2016
@@ -77,7 +77,6 @@ import com.googlecode.wicket.jquery.ui.w
@AuthorizeInstantiation("Room")
public class RoomPanel extends BasePanel {
- //TODO demoTime - demo timer
private static final long serialVersionUID = 1L;
private static final Logger log = Red5LoggerFactory.getLogger(RoomPanel.class, webAppRootKey);
private final Room r;
@@ -137,7 +136,7 @@ public class RoomPanel extends BasePanel
allowed = true;
} else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm"); //FIXME format
- deniedMessage = Application.getString(1271) + String.format(" %s - %s", sdf.format(a.getStart()), sdf.format(a.getEnd()));
+ deniedMessage = getString("1271") + String.format(" %s - %s", sdf.format(a.getStart()), sdf.format(a.getEnd()));
}
*/
}
@@ -161,7 +160,7 @@ public class RoomPanel extends BasePanel
}
if (!allowed) {
if (deniedMessage == null) {
- deniedMessage = Application.getString(1599);
+ deniedMessage = getString("1599");
}
accessDenied = new ExpiredMessageDialog("accessDenied", deniedMessage);
room.setVisible(false);
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=1739231&r1=1739230&r2=1739231&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 15 06:40:59 2016
@@ -26,6 +26,7 @@
<span wicket:id="share" class="icon share"></span>
<span wicket:id="recording" class="room recording"></span>
<span wicket:id="roomName" class="room name"></span>
+ <span wicket:id="demo" class="ui-state-error room demo"></span>
</div>
<div wicket:id="invite"></div>
<div wicket:id="createPoll"></div>
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=1739231&r1=1739230&r2=1739231&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 15 06:40:59 2016
@@ -46,13 +46,16 @@ import org.apache.openmeetings.web.room.
import org.apache.openmeetings.web.room.poll.CreatePollDialog;
import org.apache.openmeetings.web.room.poll.PollResultsDialog;
import org.apache.openmeetings.web.room.poll.VoteDialog;
+import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
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.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
import org.apache.wicket.request.flow.RedirectToUrlException;
import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.util.time.Duration;
import com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem;
@@ -150,10 +153,55 @@ public class RoomMenuPanel extends Panel
add(pollResults = new PollResultsDialog("pollResults", room.getRoom().getId()));
}
+
+ private static String getDemoTime(int remain) {
+ return Duration.seconds(remain).toString(WebSession.get().getLocale());
+ }
+
+ private String getDemoText(int remain) {
+ return String.format("%s: %s", getString("637"), getDemoTime(remain));
+ }
+
+ private String getDemoTitle(int remain) {
+ return String.format("%s: %s", getString("639"), getDemoTime(remain));
+ }
+
@Override
protected void onInitialize() {
super.onInitialize();
askBtn.add(new AttributeAppender("title", getString("906")));
+ Label demo = new Label("demo", Model.of(""));
+ Room r = room.getRoom();
+ add(demo.setVisible(r.isDemoRoom() && r.getDemoTime() != null && room.getRoom().getDemoTime().intValue() > 0));
+ if (demo.isVisible()) {
+ demo.setOutputMarkupId(true);
+ demo.setDefaultModelObject(getDemoText(r.getDemoTime().intValue()));
+ demo.add(AttributeAppender.replace("title", getDemoTitle(r.getDemoTime().intValue())));
+ demo.add(new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
+ private static final long serialVersionUID = 1L;
+ private final long clock;
+ {
+ clock = System.currentTimeMillis();
+ }
+
+ private int remain(long now) {
+ return (int)(room.getRoom().getDemoTime().longValue() - (now - clock) / 1000);
+ }
+
+ @Override
+ protected void onTimer(AjaxRequestTarget target) {
+ int remain = remain(System.currentTimeMillis());
+ if (remain > -1) {
+ getComponent().setDefaultModelObject(getDemoText(remain));
+ getComponent().add(AttributeAppender.replace("title", getDemoTitle(remain)));
+ target.add(getComponent());
+ } else {
+ stop(target);
+ exit(target);
+ }
+ }
+ });
+ }
}
private List<IMenuItem> getMenu() {
@@ -192,7 +240,7 @@ public class RoomMenuPanel extends Panel
inviteMenuItem.setEnabled(notExternalUser && moder);
//TODO add check "sharing started"
Room r = room.getRoom();
- boolean shareVisible = Room.Type.interview != r.getType() && !r.getHideScreenSharing() && moder;
+ boolean shareVisible = Room.Type.interview != r.getType() && !r.getHideScreenSharing() && r.isAllowRecording() && moder;
shareMenuItem.setEnabled(shareVisible);
shareBtn.setVisible(shareMenuItem.isEnabled());
//FIXME TODO apply* should be enabled if moder is in room
@@ -216,8 +264,8 @@ public class RoomMenuPanel extends Panel
public void exit(IPartialPageRequestHandler handler) {
if (WebSession.getRights().contains(Right.Dashboard)) {
- room.getMainPage().updateContents(ROOMS_PUBLIC, handler);
roomExit(room, false);
+ room.getMainPage().updateContents(ROOMS_PUBLIC, handler);
} else {
String url = getBean(ConfigurationDao.class).getConfValue(CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY, String.class, "");
if (Strings.isEmpty(url)) {
@@ -235,7 +283,7 @@ public class RoomMenuPanel extends Panel
Client c = room.getClient();
removeUserFromRoom(c);
if (broadcast) {
- RoomMessage m = new RoomMessage(c.getRoomId(), c.getUserId(), RoomMessage.Type.roomExit);
+ RoomMessage m = new RoomMessage(room.getRoom().getId(), c.getUserId(), RoomMessage.Type.roomExit);
RoomPanel.broadcast(m);
}
}
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=1739231&r1=1739230&r2=1739231&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 15 06:40:59 2016
@@ -52,6 +52,8 @@
.room.menu.right .room.name {
font-weight: bold;
}
+.room.menu.right .room.demo {
+}
.room.menu.right .room.recording {
color: red;
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1739231&r1=1739230&r2=1739231&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java Fri Apr 15 06:40:59 2016
@@ -102,9 +102,9 @@ import ro.fortsoft.wicket.dashboard.web.
public class Application extends AuthenticatedWebApplication implements IApplication {
private static final Logger log = getLogger(Application.class, webAppRootKey);
private static boolean isInstalled;
- private static Map<String, Client> ONLINE_USERS = new ConcurrentHashMap<>();
- private static Map<String, Client> INVALID_SESSIONS = new ConcurrentHashMap<>();
- private static Map<Long, Set<Client>> ROOMS = new ConcurrentHashMap<>();
+ private static ConcurrentHashMap<String, Client> ONLINE_USERS = new ConcurrentHashMap<>();
+ private static ConcurrentHashMap<String, Client> INVALID_SESSIONS = new ConcurrentHashMap<>();
+ private static ConcurrentHashMap<Long, Set<Client>> ROOMS = new ConcurrentHashMap<>();
//additional maps for faster searching should be created
private DashboardContext dashboardContext;
private static Set<String> STRINGS_WITH_APP = new HashSet<>(); //FIXME need to be removed
@@ -282,11 +282,8 @@ public class Application extends Authent
}
public static Client addUserToRoom(Client c) {
- Long roomId = c.getRoomId();
- if (!ROOMS.containsKey(roomId)) {
- ROOMS.put(roomId, new ConcurrentHashSet<Client>());
- }
- ROOMS.get(roomId).add(c);
+ ROOMS.putIfAbsent(c.getRoomId(), new ConcurrentHashSet<Client>());
+ ROOMS.get(c.getRoomId()).add(c);
return c;
}
@@ -296,20 +293,18 @@ public class Application extends Authent
removeUserFromRoom(c);
}
- public static Client removeUserFromRoom(Client _c) {
- if (ROOMS.containsKey(_c.getRoomId())) {
- Set<Client> clients = ROOMS.get(_c.getRoomId());
- for (Client c : clients) {
- if (c.equals(_c)) {
- clients.remove(c);
- return c;
+ public static Client removeUserFromRoom(Client c) {
+ if (c.getRoomId() != null) {
+ Set<Client> clients = ROOMS.get(c.getRoomId());
+ if (clients != null) {
+ clients.remove(c);
+ if (clients.isEmpty()) {
+ ROOMS.remove(c.getRoomId());
}
- }
- if (clients.isEmpty()) {
- ROOMS.remove(_c.getRoomId());
+ c.setRoomId(null);
}
}
- return _c;
+ return c;
}
public static Set<Client> getRoomUsers(long roomId) {
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=1739231&r1=1739230&r2=1739231&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 Fri Apr 15 06:40:59 2016
@@ -82,7 +82,6 @@ import com.googlecode.wicket.jquery.ui.w
@AuthorizeInstantiation("Room")
public class RoomPanel extends BasePanel {
- //TODO demoTime - demo timer
private static final long serialVersionUID = 1L;
private static final Logger log = Red5LoggerFactory.getLogger(RoomPanel.class, webAppRootKey);
private final Room r;
@@ -154,7 +153,7 @@ public class RoomPanel extends BasePanel
allowed = true;
} else {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm"); //FIXME format
- deniedMessage = Application.getString(1271) + String.format(" %s - %s", sdf.format(a.getStart()), sdf.format(a.getEnd()));
+ deniedMessage = getString("1271") + String.format(" %s - %s", sdf.format(a.getStart()), sdf.format(a.getEnd()));
}
*/
}
@@ -178,7 +177,7 @@ public class RoomPanel extends BasePanel
}
if (!allowed) {
if (deniedMessage == null) {
- deniedMessage = Application.getString(1599);
+ deniedMessage = getString("1599");
}
accessDenied = new ExpiredMessageDialog("accessDenied", deniedMessage);
room.setVisible(false);
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=1739231&r1=1739230&r2=1739231&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 15 06:40:59 2016
@@ -26,6 +26,7 @@
<span wicket:id="share" class="icon share"></span>
<span wicket:id="recording" class="room recording"></span>
<span wicket:id="roomName" class="room name"></span>
+ <span wicket:id="demo" class="ui-state-error room demo"></span>
</div>
<div wicket:id="invite"></div>
<div wicket:id="createPoll"></div>
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=1739231&r1=1739230&r2=1739231&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 15 06:40:59 2016
@@ -46,13 +46,16 @@ import org.apache.openmeetings.web.room.
import org.apache.openmeetings.web.room.poll.CreatePollDialog;
import org.apache.openmeetings.web.room.poll.PollResultsDialog;
import org.apache.openmeetings.web.room.poll.VoteDialog;
+import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
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.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
import org.apache.wicket.request.flow.RedirectToUrlException;
import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.util.time.Duration;
import com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem;
@@ -150,10 +153,55 @@ public class RoomMenuPanel extends Panel
add(pollResults = new PollResultsDialog("pollResults", room.getRoom().getId()));
}
+
+ private static String getDemoTime(int remain) {
+ return Duration.seconds(remain).toString(WebSession.get().getLocale());
+ }
+
+ private String getDemoText(int remain) {
+ return String.format("%s: %s", getString("637"), getDemoTime(remain));
+ }
+
+ private String getDemoTitle(int remain) {
+ return String.format("%s: %s", getString("639"), getDemoTime(remain));
+ }
+
@Override
protected void onInitialize() {
super.onInitialize();
askBtn.add(new AttributeAppender("title", getString("906")));
+ Label demo = new Label("demo", Model.of(""));
+ Room r = room.getRoom();
+ add(demo.setVisible(r.isDemoRoom() && r.getDemoTime() != null && room.getRoom().getDemoTime().intValue() > 0));
+ if (demo.isVisible()) {
+ demo.setOutputMarkupId(true);
+ demo.setDefaultModelObject(getDemoText(r.getDemoTime().intValue()));
+ demo.add(AttributeAppender.replace("title", getDemoTitle(r.getDemoTime().intValue())));
+ demo.add(new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
+ private static final long serialVersionUID = 1L;
+ private final long clock;
+ {
+ clock = System.currentTimeMillis();
+ }
+
+ private int remain(long now) {
+ return (int)(room.getRoom().getDemoTime().longValue() - (now - clock) / 1000);
+ }
+
+ @Override
+ protected void onTimer(AjaxRequestTarget target) {
+ int remain = remain(System.currentTimeMillis());
+ if (remain > -1) {
+ getComponent().setDefaultModelObject(getDemoText(remain));
+ getComponent().add(AttributeAppender.replace("title", getDemoTitle(remain)));
+ target.add(getComponent());
+ } else {
+ stop(target);
+ exit(target);
+ }
+ }
+ });
+ }
}
private List<IMenuItem> getMenu() {
@@ -192,7 +240,7 @@ public class RoomMenuPanel extends Panel
inviteMenuItem.setEnabled(notExternalUser && moder);
//TODO add check "sharing started"
Room r = room.getRoom();
- boolean shareVisible = Room.Type.interview != r.getType() && !r.getHideScreenSharing() && moder;
+ boolean shareVisible = Room.Type.interview != r.getType() && !r.getHideScreenSharing() && r.isAllowRecording() && moder;
shareMenuItem.setEnabled(shareVisible);
shareBtn.setVisible(shareMenuItem.isEnabled());
//FIXME TODO apply* should be enabled if moder is in room
@@ -216,8 +264,8 @@ public class RoomMenuPanel extends Panel
public void exit(IPartialPageRequestHandler handler) {
if (WebSession.getRights().contains(Right.Dashboard)) {
- room.getMainPage().updateContents(ROOMS_PUBLIC, handler);
roomExit(room, false);
+ room.getMainPage().updateContents(ROOMS_PUBLIC, handler);
} else {
String url = getBean(ConfigurationDao.class).getConfValue(CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY, String.class, "");
if (Strings.isEmpty(url)) {
@@ -235,7 +283,7 @@ public class RoomMenuPanel extends Panel
Client c = room.getClient();
removeUserFromRoom(c);
if (broadcast) {
- RoomMessage m = new RoomMessage(c.getRoomId(), c.getUserId(), RoomMessage.Type.roomExit);
+ RoomMessage m = new RoomMessage(room.getRoom().getId(), c.getUserId(), RoomMessage.Type.roomExit);
RoomPanel.broadcast(m);
}
}
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=1739231&r1=1739230&r2=1739231&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 15 06:40:59 2016
@@ -52,6 +52,8 @@
.room.menu.right .room.name {
font-weight: bold;
}
+.room.menu.right .room.demo {
+}
.room.menu.right .room.recording {
color: red;
}