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/08/25 03:07:48 UTC
svn commit: r1757594 [2/3] - in /openmeetings/application:
branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/
branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/
branc...
Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html?rev=1757594&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html Thu Aug 25 03:07:48 2016
@@ -0,0 +1,59 @@
+<?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:head>
+ <script type="text/javascript">
+ function showBusyIndicator() {
+ $('#busy_indicator').show();
+ }
+ function hideBusyIndicator() {
+ $('#busy_indicator').hide();
+ }
+ </script>
+</wicket:head>
+<wicket:panel>
+ <script type="text/javascript">
+ $(function() {
+ Wicket.Event.subscribe('/ajax/call/failure', hideBusyIndicator);
+ Wicket.Event.subscribe('/ajax/call/before', showBusyIndicator);
+ Wicket.Event.subscribe('/ajax/call/success', hideBusyIndicator);
+ Wicket.Event.subscribe('/ajax/call/complete', hideBusyIndicator);
+ });
+ </script>
+ <div wicket:id="topControls">
+ <div wicket:id="topLinks"><span
+ id="contactsAndMessages"><a wicket:id="messages"><wicket:message key="1188"/></a></span><span
+ id="profile"><a wicket:id="profile"><wicket:message key="5"/></a></span><span
+ id="logout"><a wicket:id="logout" href="#"><wicket:message key="310"/></a></span><span
+ id="reportBug"><a target="_blank" href="https://issues.apache.org/jira/browse/OPENMEETINGS"><wicket:message key="284"/></a></span><span><a
+ wicket:id="about"><wicket:message key="1549"/></a></span>
+ </div>
+ <div id="busy_indicator" class="ui-widget-header"><span><wicket:message key="1554"/></span></div>
+ <div wicket:id="menu"></div>
+ </div>
+ <div wicket:id="dev" id="devMenu"/>
+ <div wicket:id="contents"><div wicket:id="child"></div></div>
+ <div wicket:id="chatPanel"></div>
+ <div wicket:id="aboutDialog"></div>
+ <div wicket:id="userInfoDialog"></div>
+ <div wicket:id="newMessageDialog"></div>
+</wicket:panel>
+</html>
Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java?rev=1757594&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java Thu Aug 25 03:07:48 2016
@@ -0,0 +1,301 @@
+/*
+ * 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.common;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.addOnlineUser;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.Application.removeOnlineUser;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getNamedFunction;
+import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getParam;
+import static org.apache.openmeetings.web.util.OmUrlFragment.CHILD_ID;
+import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_EDIT;
+import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
+import static org.apache.openmeetings.web.util.OmUrlFragment.getPanel;
+import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.NavigationDao;
+import org.apache.openmeetings.db.entity.basic.Naviglobal;
+import org.apache.openmeetings.db.entity.basic.Navimain;
+import org.apache.openmeetings.db.entity.user.PrivateMessage;
+import org.apache.openmeetings.db.util.AuthLevelUtil;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.Client;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.menu.MainMenuItem;
+import org.apache.openmeetings.web.common.menu.MenuItem;
+import org.apache.openmeetings.web.common.menu.MenuPanel;
+import org.apache.openmeetings.web.room.RoomPanel;
+import org.apache.openmeetings.web.room.menu.RoomMenuPanel;
+import org.apache.openmeetings.web.user.AboutDialog;
+import org.apache.openmeetings.web.user.ChatPanel;
+import org.apache.openmeetings.web.user.MessageDialog;
+import org.apache.openmeetings.web.user.UserInfoDialog;
+import org.apache.openmeetings.web.util.ContactsHelper;
+import org.apache.openmeetings.web.util.OmUrlFragment;
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.devutils.debugbar.DebugBar;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.panel.EmptyPanel;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.protocol.ws.api.WebSocketBehavior;
+import org.apache.wicket.protocol.ws.api.message.AbortedMessage;
+import org.apache.wicket.protocol.ws.api.message.AbstractClientMessage;
+import org.apache.wicket.protocol.ws.api.message.ClosedMessage;
+import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.wicketstuff.urlfragment.UrlFragment;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem;
+
+public class MainPanel extends Panel {
+ private static final long serialVersionUID = 1L;
+ private static final Logger log = Red5LoggerFactory.getLogger(MainPanel.class, webAppRootKey);
+ public final static String PARAM_USER_ID = "userId";
+ private Client client;
+ private final MenuPanel menu;
+ private final WebMarkupContainer topControls = new WebMarkupContainer("topControls");
+ private final WebMarkupContainer topLinks = new WebMarkupContainer("topLinks");
+ private final MarkupContainer contents;
+ private final ChatPanel chat;
+ private final MessageDialog newMessage;
+ private final UserInfoDialog userInfo;
+
+ public MainPanel(String id) {
+ this(id, new WebMarkupContainer(CHILD_ID));
+ }
+
+ public MainPanel(String id, WebMarkupContainer panel) {
+ super(id);
+ client = new Client(getSession().getId(), getUserId());
+ add(topControls.setOutputMarkupPlaceholderTag(true).setMarkupId("topControls"));
+ menu = new MenuPanel("menu", getMainMenu());
+ contents = new WebMarkupContainer("contents");
+ add(contents.add(panel).setOutputMarkupId(true).setMarkupId("contents"));
+ topControls.add(menu.setVisible(false), topLinks.setVisible(false).setOutputMarkupPlaceholderTag(true).setMarkupId("topLinks"));
+ topLinks.add(new AjaxLink<Void>("messages") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ updateContents(PROFILE_MESSAGES, target);
+ }
+ });
+ topLinks.add(new ConfirmableAjaxBorder("logout", getString("310"), getString("634")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+ getSession().invalidate();
+ setResponsePage(Application.get().getSignInPageClass());
+ }
+ });
+ topLinks.add(new AjaxLink<Void>("profile") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ updateContents(PROFILE_EDIT, target);
+ }
+ });
+ final AboutDialog about = new AboutDialog("aboutDialog");
+ topLinks.add(new AjaxLink<Void>("about") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ about.open(target);
+ }
+ });
+ if (getApplication().getDebugSettings().isDevelopmentUtilitiesEnabled()) {
+ add(new DebugBar("dev").setOutputMarkupId(true));
+ } else {
+ add(new EmptyPanel("dev").setVisible(false));
+ }
+ add(about, chat = new ChatPanel("chatPanel"));
+ add(newMessage = new MessageDialog("newMessageDialog", new CompoundPropertyModel<PrivateMessage>(new PrivateMessage())) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
+ BasePanel bp = getCurrentPanel();
+ if (send.equals(button) && bp != null) {
+ bp.onNewMessageClose(handler);
+ }
+ }
+ });
+ add(userInfo = new UserInfoDialog("userInfoDialog", newMessage));
+ add(new AbstractDefaultAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void respond(AjaxRequestTarget target) {
+ userInfo.open(target, getParam(getComponent(), PARAM_USER_ID).toLong());
+ }
+
+ @Override
+ public void renderHead(Component component, IHeaderResponse response) {
+ super.renderHead(component, response);
+ response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forScript(getNamedFunction("showUserInfo", this, explicit(PARAM_USER_ID)), "showUserInfo")));
+ }
+ });
+ add(new AbstractDefaultAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void respond(AjaxRequestTarget target) {
+ ContactsHelper.addUserToContactList(getParam(getComponent(), PARAM_USER_ID).toLong());
+ }
+
+ @Override
+ public void renderHead(Component component, IHeaderResponse response) {
+ super.renderHead(component, response);
+ response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forScript(getNamedFunction("addContact", this, explicit(PARAM_USER_ID)), "addContact")));
+ }
+ });
+ add(new AbstractDefaultAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void respond(AjaxRequestTarget target) {
+ newMessage.reset(true).open(target, getParam(getComponent(), PARAM_USER_ID).toOptionalLong());
+ }
+
+ @Override
+ public void renderHead(Component component, IHeaderResponse response) {
+ super.renderHead(component, response);
+ response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forScript(getNamedFunction("privateMessage", this, explicit(PARAM_USER_ID)), "privateMessage")));
+ }
+ });
+ add(new WebSocketBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onConnect(ConnectedMessage message) {
+ super.onConnect(message);
+ addOnlineUser(client.setPageId(message.getKey()));
+ log.debug("WebSocketBehavior::onConnect [uid: {}, session: {}, key: {}]", client.getUid(), message.getSessionId(), message.getKey());
+ }
+
+ @Override
+ protected void onAbort(AbortedMessage message) {
+ super.onAbort(message);
+ closeHandler(message);
+ }
+
+ @Override
+ protected void onClose(ClosedMessage message) {
+ super.onClose(message);
+ closeHandler(message);
+ }
+
+ private void closeHandler(AbstractClientMessage message) {
+ if (MainPanel.this.getCurrentPanel() instanceof RoomPanel) {
+ RoomPanel rp = (RoomPanel)MainPanel.this.getCurrentPanel();
+ RoomMenuPanel.roomExit(rp);
+ }
+ removeOnlineUser(client);
+ log.debug("WebSocketBehavior::closeHandler [uid: {}, session: {}, key: {}]", client.getUid(), message.getSessionId(), message.getKey());
+ }
+ });
+ }
+
+ private List<IMenuItem> getMainMenu() {
+ List<IMenuItem> menu = new ArrayList<>();
+ for (Naviglobal gl : getBean(NavigationDao.class).getMainMenu(AuthLevelUtil.hasAdminLevel(WebSession.getRights()))) {
+ List<IMenuItem> l = new ArrayList<>();
+ for (Navimain nm : gl.getMainnavi()) {
+ l.add(new MainMenuItem(nm) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ onClick(MainPanel.this, target);
+ }
+ });
+ }
+ menu.add(new MenuItem(Application.getString(gl.getLabelId()), l));
+ }
+ return menu;
+ }
+
+ public void updateContents(OmUrlFragment f, IPartialPageRequestHandler handler) {
+ updateContents(f, handler, true);
+ }
+
+ private BasePanel getCurrentPanel() {
+ Component prev = contents.get(CHILD_ID);
+ if (prev != null && prev instanceof BasePanel) {
+ return (BasePanel)prev;
+ }
+ return null;
+ }
+
+ public void updateContents(OmUrlFragment f, IPartialPageRequestHandler handler, boolean updateFragment) {
+ BasePanel panel = getPanel(f.getArea(), f.getType());
+ if (panel != null) {
+ BasePanel prev = getCurrentPanel();
+ if (prev != null) {
+ prev.cleanup(handler);
+ }
+ handler.add(contents.replace(panel));
+ if (updateFragment) {
+ UrlFragment uf = new UrlFragment(handler);
+ uf.set(f.getArea().name(), f.getType());
+ }
+ panel.onMenuPanelLoad(handler);
+ }
+ }
+
+ public MenuPanel getMenu() {
+ return menu;
+ }
+
+ public WebMarkupContainer getTopLinks() {
+ return topLinks;
+ }
+
+ public WebMarkupContainer getTopControls() {
+ return topControls;
+ }
+
+ public ChatPanel getChat() {
+ return chat;
+ }
+
+ public Client getClient() {
+ return client;
+ }
+}
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MainMenuItem.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MainMenuItem.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MainMenuItem.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MainMenuItem.java Thu Aug 25 03:07:48 2016
@@ -20,7 +20,7 @@ package org.apache.openmeetings.web.comm
import org.apache.openmeetings.db.entity.basic.Navimain;
import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.web.common.MainPanel;
import org.apache.openmeetings.web.util.OmUrlFragment;
import org.apache.openmeetings.web.util.OmUrlFragment.MenuActions;
import org.apache.openmeetings.web.util.OmUrlFragment.MenuParams;
@@ -37,7 +37,7 @@ public class MainMenuItem extends MenuIt
params = m.getParams() != null ? MenuParams.valueOf(m.getParams()) : MenuParams.publicTabButton;
}
- public void onClick(MainPage page, AjaxRequestTarget target) {
- page.updateContents(new OmUrlFragment(action, params), target);
+ public void onClick(MainPanel main, AjaxRequestTarget target) {
+ main.updateContents(new OmUrlFragment(action, params), target);
}
}
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/AccessDeniedPage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/AccessDeniedPage.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/AccessDeniedPage.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/AccessDeniedPage.java Thu Aug 25 03:07:48 2016
@@ -46,7 +46,7 @@ public class AccessDeniedPage extends Ba
@Override
public boolean isVisible() {
- return !WebSession.get().isSignedIn();
+ return WebSession.get().isSignedIn();
}
@Override
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html Thu Aug 25 03:07:48 2016
@@ -27,7 +27,7 @@
</div>
<div wicket:id="i-pass"></div>
</div>
- <div wicket:id="panel-swf" style="width: 100%; height: 100%;"></div>
+ <div wicket:id="panel-main" style="width: 100%; height: 100%;"></div>
<div wicket:id="access-denied"></div>
</wicket:extend>
</html>
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java Thu Aug 25 03:07:48 2016
@@ -19,24 +19,30 @@
package org.apache.openmeetings.web.pages;
import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.WICKET_ROOM_ID;
import static org.apache.openmeetings.web.app.WebSession.getRecordingId;
import static org.apache.openmeetings.web.room.SwfPanel.SWF;
import static org.apache.openmeetings.web.room.SwfPanel.SWF_TYPE_NETWORK;
import static org.apache.openmeetings.web.room.SwfPanel.SWF_TYPE_SETTINGS;
+import static org.apache.openmeetings.web.util.OmUrlFragment.CHILD_ID;
import org.apache.openmeetings.db.dao.record.RecordingDao;
+import org.apache.openmeetings.db.dao.room.RoomDao;
import org.apache.openmeetings.db.entity.record.Recording;
import org.apache.openmeetings.db.entity.room.Invitation;
import org.apache.openmeetings.db.entity.room.Invitation.Valid;
import org.apache.openmeetings.db.entity.room.Room;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.IUpdatable;
+import org.apache.openmeetings.web.common.MainPanel;
+import org.apache.openmeetings.web.room.RoomPanel;
import org.apache.openmeetings.web.room.SwfPanel;
import org.apache.openmeetings.web.user.record.VideoInfo;
import org.apache.openmeetings.web.user.record.VideoPlayer;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.markup.head.CssHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.panel.EmptyPanel;
import org.apache.wicket.request.IRequestParameters;
@@ -52,13 +58,15 @@ import com.googlecode.wicket.jquery.ui.w
public class HashPage extends BaseInitedPage implements IUpdatable {
private static final long serialVersionUID = 1L;
public static final String SECURE_HASH = "secureHash";
+ public static final String PANEL_MAIN = "panel-main";
public static final String INVITATION_HASH = "invitationHash";
private static final String HASH = "hash";
private final WebMarkupContainer recContainer = new WebMarkupContainer("panel-recording");
private final VideoInfo vi = new VideoInfo("info", null);
private final VideoPlayer vp = new VideoPlayer("player", null);
private String errorKey = "invalid.hash";
- private boolean error = true;;
+ private boolean error = true;
+ private Long roomId;
public HashPage(PageParameters p) {
StringValue secure = p.get(SECURE_HASH);
@@ -71,7 +79,7 @@ public class HashPage extends BaseInited
ws.checkHashes(secure, invitation);
recContainer.setVisible(false);
- add(new EmptyPanel("panel-swf").setVisible(false));
+ add(new EmptyPanel(PANEL_MAIN).setVisible(false));
if (!invitation.isEmpty()) {
Invitation i = ws.getInvitation();
if (i == null) {
@@ -91,13 +99,12 @@ public class HashPage extends BaseInited
}
Room r = i.getRoom();
if (r != null) {
- replace(new SwfPanel("panel-swf", new PageParameters(p).add(WICKET_ROOM_ID, r.getId())));
+ createRoom(r.getId());
}
- error = false;
}
} else if (!secure.isEmpty()) {
- Long recId = getRecordingId();
- if (recId == null && ws.getRoomId() == null) {
+ Long recId = getRecordingId(), roomId = ws.getRoomId();
+ if (recId == null && roomId == null) {
errorKey = "1599";
} else if (recId != null) {
recContainer.setVisible(true);
@@ -106,25 +113,36 @@ public class HashPage extends BaseInited
vp.update(null, rec);
error = false;
} else {
- replace(new SwfPanel("panel-swf", new PageParameters(p).add(WICKET_ROOM_ID, ws.getRoomId())));
- error = false;
+ createRoom(roomId);
}
}
StringValue swf = p.get(SWF);
if (!swf.isEmpty() && (SWF_TYPE_NETWORK.equals(swf.toString()) || SWF_TYPE_SETTINGS.equals(swf.toString()))) {
- replace(new SwfPanel("panel-swf", p));
+ replace(new SwfPanel(PANEL_MAIN, p));
error = false;
}
- add(recContainer
- .add(vi.setShowShare(false).setOutputMarkupPlaceholderTag(true)
- , vp.setOutputMarkupPlaceholderTag(true)
- , new InvitationPasswordDialog("i-pass", this)));
+ add(recContainer.add(vi.setShowShare(false).setOutputMarkupPlaceholderTag(true),
+ vp.setOutputMarkupPlaceholderTag(true), new InvitationPasswordDialog("i-pass", this)));
+ }
+
+ private void createRoom(Long roomId) {
+ error = false;
+ getHeader().setVisible(false);
+ // need to re-fetch Room object to initialize all collections
+ Room room = getBean(RoomDao.class).get(roomId);
+ if (room != null) {
+ this.roomId = roomId;
+ RoomPanel rp = new RoomPanel(CHILD_ID, room);
+ replace(new MainPanel(PANEL_MAIN, rp));
+ rp.onMenuPanelLoad(null);
+ }
}
@Override
protected void onInitialize() {
super.onInitialize();
- add(new MessageDialog("access-denied", getString("invalid.hash"), getString(errorKey), DialogButtons.OK, DialogIcon.ERROR) {
+ add(new MessageDialog("access-denied", getString("invalid.hash"), getString(errorKey), DialogButtons.OK,
+ DialogIcon.ERROR) {
private static final long serialVersionUID = 1L;
@Override
@@ -151,4 +169,13 @@ public class HashPage extends BaseInited
target.add(vi.update(target, i.getRecording()).setVisible(true)
, vp.update(target, i.getRecording()).setVisible(true));
}
+
+ @Override
+ public void renderHead(IHeaderResponse response) {
+ super.renderHead(response);
+ response.render(CssHeaderItem.forCSS(".invite.om-icon{display: none !important;}", "no-invite-to-room"));
+ if (roomId != null) {
+ response.render(OnDomReadyHeaderItem.forScript("roomLoad();"));
+ }
+ }
}
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.html Thu Aug 25 03:07:48 2016
@@ -30,31 +30,7 @@
</script>
</wicket:head>
<wicket:extend>
- <script type="text/javascript">
- $(function() {
- Wicket.Event.subscribe('/ajax/call/failure', hideBusyIndicator);
- Wicket.Event.subscribe('/ajax/call/before', showBusyIndicator);
- Wicket.Event.subscribe('/ajax/call/success', hideBusyIndicator);
- Wicket.Event.subscribe('/ajax/call/complete', hideBusyIndicator);
- });
- </script>
- <div wicket:id="topControls">
- <div wicket:id="topLinks"><span
- id="contactsAndMessages"><a wicket:id="messages"><wicket:message key="1188"/></a></span><span
- id="profile"><a wicket:id="profile"><wicket:message key="5"/></a></span><span
- id="logout"><a wicket:id="logout" href="#"><wicket:message key="310"/></a></span><span
- id="reportBug"><a target="_blank" href="https://issues.apache.org/jira/browse/OPENMEETINGS"><wicket:message key="284"/></a></span><span><a
- wicket:id="about"><wicket:message key="1549"/></a></span>
- </div>
- <div id="busy_indicator" class="ui-widget-header"><span><wicket:message key="1554"/></span></div>
- <div wicket:id="menu"></div>
- </div>
- <div wicket:id="dev" id="devMenu"/>
- <div wicket:id="contents"><div wicket:id="child"></div></div>
- <div wicket:id="chatPanel"></div>
- <div wicket:id="aboutDialog"></div>
- <div wicket:id="userInfoDialog"></div>
- <div wicket:id="newMessageDialog"></div>
- <div wicket:id="inviteUserDialog"></div>
+ <div wicket:id="main"/>
+ <div wicket:id="invite-to-room"></div>
</wicket:extend>
</html>
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/MainPage.java Thu Aug 25 03:07:48 2016
@@ -18,228 +18,48 @@
*/
package org.apache.openmeetings.web.pages;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import static org.apache.openmeetings.web.app.Application.addOnlineUser;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.Application.removeOnlineUser;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getNamedFunction;
import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getParam;
-import static org.apache.openmeetings.web.util.OmUrlFragment.CHILD_ID;
-import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_EDIT;
-import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
-import static org.apache.openmeetings.web.util.OmUrlFragment.getPanel;
import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
+import static org.apache.openmeetings.web.common.MainPanel.PARAM_USER_ID;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.basic.NavigationDao;
-import org.apache.openmeetings.db.entity.basic.Naviglobal;
-import org.apache.openmeetings.db.entity.basic.Navimain;
-import org.apache.openmeetings.db.entity.user.PrivateMessage;
-import org.apache.openmeetings.db.util.AuthLevelUtil;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.Client;
import org.apache.openmeetings.web.app.WebSession;
-import org.apache.openmeetings.web.common.BasePanel;
-import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
-import org.apache.openmeetings.web.common.menu.MainMenuItem;
-import org.apache.openmeetings.web.common.menu.MenuItem;
-import org.apache.openmeetings.web.common.menu.MenuPanel;
-import org.apache.openmeetings.web.room.RoomPanel;
-import org.apache.openmeetings.web.room.menu.RoomMenuPanel;
-import org.apache.openmeetings.web.user.AboutDialog;
-import org.apache.openmeetings.web.user.ChatPanel;
+import org.apache.openmeetings.web.common.MainPanel;
import org.apache.openmeetings.web.user.InviteUserToRoomDialog;
-import org.apache.openmeetings.web.user.MessageDialog;
-import org.apache.openmeetings.web.user.UserInfoDialog;
-import org.apache.openmeetings.web.util.ContactsHelper;
import org.apache.openmeetings.web.util.OmUrlFragment;
import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.devutils.debugbar.DebugBar;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.PriorityHeaderItem;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.panel.EmptyPanel;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.protocol.ws.api.WebSocketBehavior;
-import org.apache.wicket.protocol.ws.api.message.AbortedMessage;
-import org.apache.wicket.protocol.ws.api.message.AbstractClientMessage;
-import org.apache.wicket.protocol.ws.api.message.ClosedMessage;
-import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
import org.apache.wicket.request.IRequestParameters;
import org.apache.wicket.util.time.Duration;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.wicketstuff.urlfragment.UrlFragment;
-
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-import com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem;
@AuthorizeInstantiation({"Admin", "Dashboard", "Room"})
public class MainPage extends BaseInitedPage {
private static final long serialVersionUID = 1L;
- private static final Logger log = Red5LoggerFactory.getLogger(MainPage.class, webAppRootKey);
- private final static String PARAM_USER_ID = "userId";
- private Client client;
- private final MenuPanel menu;
- private final WebMarkupContainer topControls = new WebMarkupContainer("topControls");
- private final WebMarkupContainer topLinks = new WebMarkupContainer("topLinks");
- private final MarkupContainer contents;
private final AbstractAjaxTimerBehavior areaBehavior;
- private final Component dev;
- private final ChatPanel chat;
- private final MessageDialog newMessage;
- private final UserInfoDialog userInfo;
+ private final MainPanel main = new MainPanel("main");
private final InviteUserToRoomDialog inviteUser;
-
+
public MainPage() {
super();
- client = new Client(getSession().getId(), getUserId());
getHeader().setVisible(false);
- add(topControls.setOutputMarkupPlaceholderTag(true).setMarkupId("topControls"));
- menu = new MenuPanel("menu", getMainMenu());
- contents = new WebMarkupContainer("contents");
- add(contents.add(new WebMarkupContainer(CHILD_ID)).setOutputMarkupId(true).setMarkupId("contents"));
- topControls.add(menu.setVisible(false), topLinks.setVisible(false).setOutputMarkupPlaceholderTag(true).setMarkupId("topLinks"));
- topLinks.add(new AjaxLink<Void>("messages") {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- updateContents(PROFILE_MESSAGES, target);
- }
- });
- topLinks.add(new ConfirmableAjaxBorder("logout", getString("310"), getString("634")) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
- getSession().invalidate();
- setResponsePage(Application.get().getSignInPageClass());
- }
- });
- topLinks.add(new AjaxLink<Void>("profile") {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- updateContents(PROFILE_EDIT, target);
- }
- });
- final AboutDialog about = new AboutDialog("aboutDialog");
- topLinks.add(new AjaxLink<Void>("about") {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClick(AjaxRequestTarget target) {
- about.open(target);
- }
- });
- add(about);
- if (getApplication().getDebugSettings().isDevelopmentUtilitiesEnabled()) {
- add(dev = new DebugBar("dev"));
- dev.setOutputMarkupId(true);
- } else {
- dev = null;
- add(new EmptyPanel("dev").setVisible(false));
- }
-
- add(chat = new ChatPanel("chatPanel"));
- add(newMessage = new MessageDialog("newMessageDialog", new CompoundPropertyModel<PrivateMessage>(new PrivateMessage())) {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
- BasePanel bp = getCurrentPanel();
- if (send.equals(button) && bp != null) {
- bp.onNewMessageClose(handler);
- }
- }
- });
- add(userInfo = new UserInfoDialog("userInfoDialog", newMessage));
- add(inviteUser = new InviteUserToRoomDialog("inviteUserDialog"));
- add(new AbstractDefaultAjaxBehavior() {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void respond(AjaxRequestTarget target) {
- userInfo.open(target, getParam(getComponent(), PARAM_USER_ID).toLong());
- }
-
- @Override
- public void renderHead(Component component, IHeaderResponse response) {
- super.renderHead(component, response);
- response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forScript(getNamedFunction("showUserInfo", this, explicit(PARAM_USER_ID)), "showUserInfo")));
- }
- });
- add(new AbstractDefaultAjaxBehavior() {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void respond(AjaxRequestTarget target) {
- ContactsHelper.addUserToContactList(getParam(getComponent(), PARAM_USER_ID).toLong());
- }
-
- @Override
- public void renderHead(Component component, IHeaderResponse response) {
- super.renderHead(component, response);
- response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forScript(getNamedFunction("addContact", this, explicit(PARAM_USER_ID)), "addContact")));
- }
- });
- add(new AbstractDefaultAjaxBehavior() {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void respond(AjaxRequestTarget target) {
- newMessage.reset(true).open(target, getParam(getComponent(), PARAM_USER_ID).toOptionalLong());
- }
-
- @Override
- public void renderHead(Component component, IHeaderResponse response) {
- super.renderHead(component, response);
- response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forScript(getNamedFunction("privateMessage", this, explicit(PARAM_USER_ID)), "privateMessage")));
- }
- });
- add(new WebSocketBehavior() {
+ add(main, inviteUser = new InviteUserToRoomDialog("invite-to-room"));
+ //load preselected content
+ add(areaBehavior = new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
private static final long serialVersionUID = 1L;
@Override
- protected void onConnect(ConnectedMessage message) {
- super.onConnect(message);
- addOnlineUser(client.setPageId(message.getKey()));
- log.debug("WebSocketBehavior::onConnect [uid: {}, session: {}, key: {}]", client.getUid(), message.getSessionId(), message.getKey());
- }
-
- @Override
- protected void onAbort(AbortedMessage message) {
- super.onAbort(message);
- closeHandler(message);
- }
-
- @Override
- protected void onClose(ClosedMessage message) {
- super.onClose(message);
- closeHandler(message);
- }
-
- private void closeHandler(AbstractClientMessage message) {
- if (MainPage.this.getCurrentPanel() instanceof RoomPanel) {
- RoomPanel rp = (RoomPanel)MainPage.this.getCurrentPanel();
- RoomMenuPanel.roomExit(rp);
- }
- removeOnlineUser(client);
- log.debug("WebSocketBehavior::closeHandler [uid: {}, session: {}, key: {}]", client.getUid(), message.getSessionId(), message.getKey());
+ protected void onTimer(AjaxRequestTarget target) {
+ OmUrlFragment area = WebSession.get().getArea();
+ main.updateContents(area == null ? OmUrlFragment.get() : area, target);
+ stop(target);
+ WebSession.get().setArea(null);
}
});
add(new AbstractDefaultAjaxBehavior() {
@@ -256,104 +76,23 @@ public class MainPage extends BaseInited
response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forScript(getNamedFunction("inviteUser", this, explicit(PARAM_USER_ID)), "inviteUser")));
}
});
- //load preselected content
- add(areaBehavior = new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onTimer(AjaxRequestTarget target) {
- OmUrlFragment area = WebSession.get().getArea();
- updateContents(area == null ? OmUrlFragment.get() : area, target);
- stop(target);
- WebSession.get().setArea(null);
- }
- });
}
-
- private List<IMenuItem> getMainMenu() {
- List<IMenuItem> menu = new ArrayList<>();
- for (Naviglobal gl : getBean(NavigationDao.class).getMainMenu(AuthLevelUtil.hasAdminLevel(WebSession.getRights()))) {
- List<IMenuItem> l = new ArrayList<>();
- for (Navimain nm : gl.getMainnavi()) {
- l.add(new MainMenuItem(nm) {
- private static final long serialVersionUID = 1L;
- @Override
- public void onClick(AjaxRequestTarget target) {
- onClick(MainPage.this, target);
- }
- });
- }
- menu.add(new MenuItem(Application.getString(gl.getLabelId()), l));
- }
- return menu;
- }
-
public void updateContents(OmUrlFragment f, IPartialPageRequestHandler handler) {
- updateContents(f, handler, true);
- }
-
- private BasePanel getCurrentPanel() {
- Component prev = contents.get(CHILD_ID);
- if (prev != null && prev instanceof BasePanel) {
- return (BasePanel)prev;
- }
- return null;
+ main.updateContents(f, handler);
}
-
- public void updateContents(OmUrlFragment f, IPartialPageRequestHandler handler, boolean updateFragment) {
- BasePanel panel = getPanel(f.getArea(), f.getType());
- if (panel != null) {
- BasePanel prev = getCurrentPanel();
- if (prev != null) {
- prev.cleanup(handler);
- }
- handler.add(contents.replace(panel));
- if (updateFragment) {
- UrlFragment uf = new UrlFragment(handler);
- uf.set(f.getArea().name(), f.getType());
- }
- panel.onMenuPanelLoad(handler);
- }
- /* FIXME commented until wicket 7.2.0 will be released
- TODO check if this call is necessary
- if (dev != null){
- target.add(dev);
- }
- */
+
+ @Override
+ protected boolean isMainPage() {
+ return true;
}
-
+
@Override
protected void onParameterArrival(IRequestParameters params, AjaxRequestTarget target) {
OmUrlFragment uf = getUrlFragment(params);
if (uf != null) {
areaBehavior.stop(target);
- updateContents(uf, target, false);
+ main.updateContents(uf, target, false);
}
}
-
- public MenuPanel getMenu() {
- return menu;
- }
-
- public WebMarkupContainer getTopLinks() {
- return topLinks;
- }
-
- public WebMarkupContainer getTopControls() {
- return topControls;
- }
-
- public ChatPanel getChat() {
- return chat;
- }
-
- @Override
- protected boolean isMainPage() {
- return true;
- }
-
- public Client getClient() {
- return client;
- }
}
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=1757594&r1=1757593&r2=1757594&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 Thu Aug 25 03:07:48 2016
@@ -114,7 +114,7 @@ public class RoomPanel extends BasePanel
String path = url.getPath();
path = path.substring(1, path.indexOf('/', 2) + 1);
broadcast(new RoomMessage(r.getId(), getUserId(), RoomMessage.Type.roomEnter));
- getMainPage().getChat().roomEnter(r, target);
+ getMainPanel().getChat().roomEnter(r, target);
} catch (MalformedURLException e) {
log.error("Error while constructing room parameters", e);
}
@@ -406,25 +406,30 @@ public class RoomPanel extends BasePanel
}
}
}
-
+
@Override
- public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
- handler.add(getMainPage().getHeader().setVisible(false), getMainPage().getTopControls().setVisible(false));
+ public BasePanel onMenuPanelLoad(IPartialPageRequestHandler handler) {
+ getBasePage().getHeader().setVisible(false);
+ getMainPanel().getTopControls().setVisible(false);
if (r.isHidden(RoomElement.Chat)) {
- getMainPage().getChat().toggle(handler, false);
+ getMainPanel().getChat().toggle(handler, false);
+ }
+ if (handler != null) {
+ handler.add(getBasePage().getHeader(), getMainPanel().getTopControls());
+ handler.appendJavaScript("roomLoad();");
}
- handler.appendJavaScript("roomLoad();");
+ return this;
}
-
+
@Override
public void cleanup(IPartialPageRequestHandler handler) {
- handler.add(getMainPage().getHeader().setVisible(true), getMainPage().getTopControls().setVisible(true));
+ handler.add(getBasePage().getHeader().setVisible(true), getMainPanel().getTopControls().setVisible(true));
if (r.isHidden(RoomElement.Chat)) {
- getMainPage().getChat().toggle(handler, true);
+ getMainPanel().getChat().toggle(handler, true);
}
handler.appendJavaScript("$(window).off('resize.openmeetings');");
RoomMenuPanel.roomExit(this);
- getMainPage().getChat().roomExit(r, handler);
+ getMainPanel().getChat().roomExit(r, handler);
}
private static ResourceReference newResourceReference() {
@@ -500,7 +505,7 @@ public class RoomPanel extends BasePanel
}
public Client getClient() {
- return getMainPage().getClient();
+ return getMainPanel().getClient();
}
public boolean screenShareAllowed() {
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=1757594&r1=1757593&r2=1757594&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 Thu Aug 25 03:07:48 2016
@@ -321,7 +321,7 @@ public class RoomMenuPanel extends Panel
public void exit(IPartialPageRequestHandler handler) {
if (WebSession.getRights().contains(User.Right.Dashboard)) {
roomExit(room, false);
- room.getMainPage().updateContents(ROOMS_PUBLIC, handler);
+ room.getMainPanel().updateContents(ROOMS_PUBLIC, handler);
} else {
String url = getBean(ConfigurationDao.class).getConfValue(CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY, String.class, "");
if (Strings.isEmpty(url)) {
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java Thu Aug 25 03:07:48 2016
@@ -205,19 +205,22 @@ public class ChatPanel extends BasePanel
sb.append("});");
target.appendJavaScript(sb);
}
-
+
public void roomExit(Room r, IPartialPageRequestHandler handler) {
if (r.isHidden(RoomElement.Chat)) {
return;
}
handler.appendJavaScript(String.format("removeChatTab('%1$s%2$d');", ID_ROOM_PREFIX, r.getId()));
}
-
+
public void toggle(IPartialPageRequestHandler handler, boolean visible) {
- handler.add(setVisible(visible));
- handler.appendJavaScript("reinit();");
+ setVisible(visible);
+ if (handler != null) {
+ handler.add(this);
+ handler.appendJavaScript("reinit();");
+ }
}
-
+
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java Thu Aug 25 03:07:48 2016
@@ -70,25 +70,20 @@ public class CalendarPanel extends UserP
}
};
private Calendar calendar;
-
- @Override
- public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
- super.onMenuPanelLoad(handler);
- }
@Override
public void cleanup(IPartialPageRequestHandler handler) {
refreshTimer.stop(handler);
}
-
+
private static AppointmentDao getDao() {
return getBean(AppointmentDao.class);
}
-
+
public void refresh(IPartialPageRequestHandler handler) {
calendar.refresh(handler);
}
-
+
Calendar getCalendar() {
return calendar;
}
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=1757594&r1=1757593&r2=1757594&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 Thu Aug 25 03:07:48 2016
@@ -66,6 +66,7 @@
height: 30px;
background-repeat: no-repeat;
background-position: 5px 5px;
+ background-size: 22px;
float: right;
padding: 0;
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java Thu Aug 25 03:07:48 2016
@@ -22,6 +22,7 @@ import org.apache.openmeetings.db.dao.ba
import org.apache.openmeetings.db.entity.basic.Configuration;
import org.apache.openmeetings.web.admin.AdminPanel;
import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.BasePanel;
import org.apache.openmeetings.web.common.PagedEntityListPanel;
import org.apache.openmeetings.web.data.DataViewContainer;
import org.apache.openmeetings.web.data.OmOrderByBorder;
@@ -46,9 +47,10 @@ public class ConfigsPanel extends AdminP
private final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
@Override
- public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
+ public BasePanel onMenuPanelLoad(IPartialPageRequestHandler handler) {
super.onMenuPanelLoad(handler);
handler.appendJavaScript("omConfigPanelInit();");
+ return this;
}
public ConfigsPanel(String id) {
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java Thu Aug 25 03:07:48 2016
@@ -42,7 +42,6 @@ import org.apache.openmeetings.web.data.
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
@@ -209,9 +208,4 @@ public class ConnectionsPanel extends Ad
}
});
}
-
- @Override
- public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
- super.onMenuPanelLoad(handler);
- }
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java Thu Aug 25 03:07:48 2016
@@ -23,6 +23,7 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.user.GroupUser;
import org.apache.openmeetings.web.admin.AdminPanel;
import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.BasePanel;
import org.apache.openmeetings.web.common.PagedEntityListPanel;
import org.apache.openmeetings.web.data.DataViewContainer;
import org.apache.openmeetings.web.data.OmOrderByBorder;
@@ -45,11 +46,12 @@ import org.apache.wicket.markup.repeater
public class GroupsPanel extends AdminPanel {
private static final long serialVersionUID = 1L;
private GroupForm form;
-
+
@Override
- public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
+ public BasePanel onMenuPanelLoad(IPartialPageRequestHandler handler) {
super.onMenuPanelLoad(handler);
handler.appendJavaScript("groupsInit();");
+ return this;
}
public GroupsPanel(String id) {
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java Thu Aug 25 03:07:48 2016
@@ -33,6 +33,7 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.web.admin.AdminPanel;
import org.apache.openmeetings.web.admin.SearchableDataView;
import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.BasePanel;
import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
import org.apache.openmeetings.web.common.PagedEntityListPanel;
import org.apache.openmeetings.web.data.DataViewContainer;
@@ -79,9 +80,10 @@ public class LangPanel extends AdminPane
Map.Entry<Long, Locale> language;
@Override
- public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
+ public BasePanel onMenuPanelLoad(IPartialPageRequestHandler handler) {
super.onMenuPanelLoad(handler);
handler.appendJavaScript("labelsInit();");
+ return this;
}
public LangPanel(String id) {
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java Thu Aug 25 03:07:48 2016
@@ -22,6 +22,7 @@ import org.apache.openmeetings.db.dao.se
import org.apache.openmeetings.db.entity.server.LdapConfig;
import org.apache.openmeetings.web.admin.AdminPanel;
import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.BasePanel;
import org.apache.openmeetings.web.common.PagedEntityListPanel;
import org.apache.openmeetings.web.data.DataViewContainer;
import org.apache.openmeetings.web.data.OmOrderByBorder;
@@ -46,9 +47,10 @@ public class LdapsPanel extends AdminPan
private LdapForm form;
@Override
- public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
+ public BasePanel onMenuPanelLoad(IPartialPageRequestHandler handler) {
super.onMenuPanelLoad(handler);
handler.appendJavaScript("omLdapPanelInit();");
+ return this;
}
public LdapsPanel(String id) {
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java Thu Aug 25 03:07:48 2016
@@ -24,6 +24,7 @@ import org.apache.openmeetings.db.dao.ro
import org.apache.openmeetings.db.entity.room.Room;
import org.apache.openmeetings.web.admin.AdminPanel;
import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.BasePanel;
import org.apache.openmeetings.web.common.PagedEntityListPanel;
import org.apache.openmeetings.web.data.DataViewContainer;
import org.apache.openmeetings.web.data.OmOrderByBorder;
@@ -46,9 +47,10 @@ public class RoomsPanel extends AdminPan
private RoomForm form;
@Override
- public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
+ public BasePanel onMenuPanelLoad(IPartialPageRequestHandler handler) {
super.onMenuPanelLoad(handler);
handler.appendJavaScript("omRoomPanelInit();");
+ return this;
}
public RoomsPanel(String id) {
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java Thu Aug 25 03:07:48 2016
@@ -22,6 +22,7 @@ import org.apache.openmeetings.db.dao.se
import org.apache.openmeetings.db.entity.server.Server;
import org.apache.openmeetings.web.admin.AdminPanel;
import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.BasePanel;
import org.apache.openmeetings.web.common.PagedEntityListPanel;
import org.apache.openmeetings.web.data.DataViewContainer;
import org.apache.openmeetings.web.data.OmOrderByBorder;
@@ -46,9 +47,10 @@ public class ServersPanel extends AdminP
private ServerForm form;
@Override
- public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
+ public BasePanel onMenuPanelLoad(IPartialPageRequestHandler handler) {
super.onMenuPanelLoad(handler);
handler.appendJavaScript("omServerPanelInit();");
+ return this;
}
public ServersPanel(String id) {
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java Thu Aug 25 03:07:48 2016
@@ -26,6 +26,7 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.web.admin.AdminPanel;
import org.apache.openmeetings.web.admin.SearchableDataView;
import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.BasePanel;
import org.apache.openmeetings.web.common.PagedEntityListPanel;
import org.apache.openmeetings.web.data.DataViewContainer;
import org.apache.openmeetings.web.data.OmOrderByBorder;
@@ -55,9 +56,10 @@ public class UsersPanel extends AdminPan
};
@Override
- public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
+ public BasePanel onMenuPanelLoad(IPartialPageRequestHandler handler) {
super.onMenuPanelLoad(handler);
handler.appendJavaScript("omUserPanelInit();");
+ return this;
}
private UserForm form;
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java Thu Aug 25 03:07:48 2016
@@ -117,7 +117,7 @@ public class WebSession extends Abstract
removeOnlineUser(getClientByKeys(getUserId(), get().getId()));
super.invalidate();
userId = null;
- rights = new HashSet<User.Right>();
+ rights = Collections.unmodifiableSet(Collections.<Right>emptySet());
SID = null;
ISO8601FORMAT = null;
sdf = null;
@@ -184,15 +184,18 @@ public class WebSession extends Abstract
}
i = getBean(InvitationDao.class).getByHash(invitation.toString(), false, false);
if (i.isAllowEntry()) {
- setUser(i.getInvitee(), true);
+ Set<Right> rights = new HashSet<>();
//TODO markUsed
if (i.getRoom() != null) {
+ rights.add(Right.Room);
roomId = i.getRoom().getId();
} else if (i.getAppointment() != null && i.getAppointment().getRoom() != null) {
+ rights.add(Right.Room);
roomId = i.getAppointment().getRoom().getId();
} else if (i.getRecording() != null) {
recordingId = i.getRecording().getId();
}
+ setUser(i.getInvitee(), rights);
}
}
} catch (Exception e) {
@@ -240,7 +243,7 @@ public class WebSession extends Abstract
soapDao.update(soapLogin);
}
sessionDao.updateUser(SID, user.getId());
- setUser(user, true);
+ setUser(user, null);
roomId = soapLogin.getRoomId();
recordingId = soapLogin.getRecordingId();
return true;
@@ -250,7 +253,7 @@ public class WebSession extends Abstract
return false;
}
- private void setUser(User u, boolean emptyRights) {
+ private void setUser(User u, Set<Right> rights) {
String _sid = SID;
Long _recordingId = recordingId;
Long _roomId = roomId;
@@ -269,10 +272,10 @@ public class WebSession extends Abstract
i = _i;
}
userId = u.getId();
- if (emptyRights) {
- rights = Collections.unmodifiableSet(Collections.<Right>emptySet());
+ if (rights == null || rights.isEmpty()) {
+ this.rights = Collections.unmodifiableSet(u.getRights());
} else {
- rights = Collections.unmodifiableSet(u.getRights());
+ this.rights = Collections.unmodifiableSet(rights);
}
languageId = u.getLanguageId();
externalType = u.getExternalType();
@@ -318,7 +321,7 @@ public class WebSession extends Abstract
if (u == null) {
return false;
}
- setUser(u, false);
+ setUser(u, null);
return true;
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/BasePanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/BasePanel.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/BasePanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/BasePanel.java Thu Aug 25 03:07:48 2016
@@ -21,7 +21,7 @@ package org.apache.openmeetings.web.comm
import org.apache.openmeetings.db.util.FormatHelper;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.menu.MenuPanel;
-import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.web.pages.BasePage;
import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
@@ -39,23 +39,28 @@ public abstract class BasePanel extends
setOutputMarkupId(true);
}
- public MainPage getMainPage() {
- return (MainPage)super.getPage();
+ public BasePage getBasePage() {
+ return (BasePage)getPage();
}
-
+
+ public MainPanel getMainPanel() {
+ return findParent(MainPanel.class);
+ }
+
protected boolean isRtl() { //TODO unify, remove copy/paste
return FormatHelper.isRtlLanguage(WebSession.get().getLocale().toLanguageTag());
}
-
+
/**
* Overwrite this method to execute Java code after Panel is loaded by the
* {@link MenuPanel}
*
* @param target
*/
- public void onMenuPanelLoad(IPartialPageRequestHandler handler) {
- handler.add(getMainPage().getHeader().setVisible(true), getMainPage().getMenu().setVisible(true)
- , getMainPage().getTopLinks().setVisible(true));
+ public BasePanel onMenuPanelLoad(IPartialPageRequestHandler handler) {
+ handler.add(getBasePage().getHeader().setVisible(true), getMainPanel().getMenu().setVisible(true)
+ , getMainPanel().getTopLinks().setVisible(true));
+ return this;
}
/**
Added: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html?rev=1757594&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html (added)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.html Thu Aug 25 03:07:48 2016
@@ -0,0 +1,59 @@
+<?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:head>
+ <script type="text/javascript">
+ function showBusyIndicator() {
+ $('#busy_indicator').show();
+ }
+ function hideBusyIndicator() {
+ $('#busy_indicator').hide();
+ }
+ </script>
+</wicket:head>
+<wicket:panel>
+ <script type="text/javascript">
+ $(function() {
+ Wicket.Event.subscribe('/ajax/call/failure', hideBusyIndicator);
+ Wicket.Event.subscribe('/ajax/call/before', showBusyIndicator);
+ Wicket.Event.subscribe('/ajax/call/success', hideBusyIndicator);
+ Wicket.Event.subscribe('/ajax/call/complete', hideBusyIndicator);
+ });
+ </script>
+ <div wicket:id="topControls">
+ <div wicket:id="topLinks"><span
+ id="contactsAndMessages"><a wicket:id="messages"><wicket:message key="1188"/></a></span><span
+ id="profile"><a wicket:id="profile"><wicket:message key="5"/></a></span><span
+ id="logout"><a wicket:id="logout" href="#"><wicket:message key="310"/></a></span><span
+ id="reportBug"><a target="_blank" href="https://issues.apache.org/jira/browse/OPENMEETINGS"><wicket:message key="284"/></a></span><span><a
+ wicket:id="about"><wicket:message key="1549"/></a></span>
+ </div>
+ <div id="busy_indicator" class="ui-widget-header"><span><wicket:message key="1554"/></span></div>
+ <div wicket:id="menu"></div>
+ </div>
+ <div wicket:id="dev" id="devMenu"/>
+ <div wicket:id="contents"><div wicket:id="child"></div></div>
+ <div wicket:id="chatPanel"></div>
+ <div wicket:id="aboutDialog"></div>
+ <div wicket:id="userInfoDialog"></div>
+ <div wicket:id="newMessageDialog"></div>
+</wicket:panel>
+</html>
Added: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java?rev=1757594&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java (added)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java Thu Aug 25 03:07:48 2016
@@ -0,0 +1,301 @@
+/*
+ * 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.common;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.addOnlineUser;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.Application.removeOnlineUser;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getNamedFunction;
+import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getParam;
+import static org.apache.openmeetings.web.util.OmUrlFragment.CHILD_ID;
+import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_EDIT;
+import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
+import static org.apache.openmeetings.web.util.OmUrlFragment.getPanel;
+import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.basic.NavigationDao;
+import org.apache.openmeetings.db.entity.basic.Naviglobal;
+import org.apache.openmeetings.db.entity.basic.Navimain;
+import org.apache.openmeetings.db.entity.user.PrivateMessage;
+import org.apache.openmeetings.db.util.AuthLevelUtil;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.Client;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.common.menu.MainMenuItem;
+import org.apache.openmeetings.web.common.menu.MenuItem;
+import org.apache.openmeetings.web.common.menu.MenuPanel;
+import org.apache.openmeetings.web.room.RoomPanel;
+import org.apache.openmeetings.web.room.menu.RoomMenuPanel;
+import org.apache.openmeetings.web.user.AboutDialog;
+import org.apache.openmeetings.web.user.ChatPanel;
+import org.apache.openmeetings.web.user.MessageDialog;
+import org.apache.openmeetings.web.user.UserInfoDialog;
+import org.apache.openmeetings.web.util.ContactsHelper;
+import org.apache.openmeetings.web.util.OmUrlFragment;
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.devutils.debugbar.DebugBar;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.panel.EmptyPanel;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.protocol.ws.api.WebSocketBehavior;
+import org.apache.wicket.protocol.ws.api.message.AbortedMessage;
+import org.apache.wicket.protocol.ws.api.message.AbstractClientMessage;
+import org.apache.wicket.protocol.ws.api.message.ClosedMessage;
+import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.wicketstuff.urlfragment.UrlFragment;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem;
+
+public class MainPanel extends Panel {
+ private static final long serialVersionUID = 1L;
+ private static final Logger log = Red5LoggerFactory.getLogger(MainPanel.class, webAppRootKey);
+ public final static String PARAM_USER_ID = "userId";
+ private Client client;
+ private final MenuPanel menu;
+ private final WebMarkupContainer topControls = new WebMarkupContainer("topControls");
+ private final WebMarkupContainer topLinks = new WebMarkupContainer("topLinks");
+ private final MarkupContainer contents;
+ private final ChatPanel chat;
+ private final MessageDialog newMessage;
+ private final UserInfoDialog userInfo;
+
+ public MainPanel(String id) {
+ this(id, new WebMarkupContainer(CHILD_ID));
+ }
+
+ public MainPanel(String id, WebMarkupContainer panel) {
+ super(id);
+ client = new Client(getSession().getId(), getUserId());
+ add(topControls.setOutputMarkupPlaceholderTag(true).setMarkupId("topControls"));
+ menu = new MenuPanel("menu", getMainMenu());
+ contents = new WebMarkupContainer("contents");
+ add(contents.add(panel).setOutputMarkupId(true).setMarkupId("contents"));
+ topControls.add(menu.setVisible(false), topLinks.setVisible(false).setOutputMarkupPlaceholderTag(true).setMarkupId("topLinks"));
+ topLinks.add(new AjaxLink<Void>("messages") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ updateContents(PROFILE_MESSAGES, target);
+ }
+ });
+ topLinks.add(new ConfirmableAjaxBorder("logout", getString("310"), getString("634")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+ getSession().invalidate();
+ setResponsePage(Application.get().getSignInPageClass());
+ }
+ });
+ topLinks.add(new AjaxLink<Void>("profile") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ updateContents(PROFILE_EDIT, target);
+ }
+ });
+ final AboutDialog about = new AboutDialog("aboutDialog");
+ topLinks.add(new AjaxLink<Void>("about") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ about.open(target);
+ }
+ });
+ if (getApplication().getDebugSettings().isDevelopmentUtilitiesEnabled()) {
+ add(new DebugBar("dev").setOutputMarkupId(true));
+ } else {
+ add(new EmptyPanel("dev").setVisible(false));
+ }
+ add(about, chat = new ChatPanel("chatPanel"));
+ add(newMessage = new MessageDialog("newMessageDialog", new CompoundPropertyModel<PrivateMessage>(new PrivateMessage())) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
+ BasePanel bp = getCurrentPanel();
+ if (send.equals(button) && bp != null) {
+ bp.onNewMessageClose(handler);
+ }
+ }
+ });
+ add(userInfo = new UserInfoDialog("userInfoDialog", newMessage));
+ add(new AbstractDefaultAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void respond(AjaxRequestTarget target) {
+ userInfo.open(target, getParam(getComponent(), PARAM_USER_ID).toLong());
+ }
+
+ @Override
+ public void renderHead(Component component, IHeaderResponse response) {
+ super.renderHead(component, response);
+ response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forScript(getNamedFunction("showUserInfo", this, explicit(PARAM_USER_ID)), "showUserInfo")));
+ }
+ });
+ add(new AbstractDefaultAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void respond(AjaxRequestTarget target) {
+ ContactsHelper.addUserToContactList(getParam(getComponent(), PARAM_USER_ID).toLong());
+ }
+
+ @Override
+ public void renderHead(Component component, IHeaderResponse response) {
+ super.renderHead(component, response);
+ response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forScript(getNamedFunction("addContact", this, explicit(PARAM_USER_ID)), "addContact")));
+ }
+ });
+ add(new AbstractDefaultAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void respond(AjaxRequestTarget target) {
+ newMessage.reset(true).open(target, getParam(getComponent(), PARAM_USER_ID).toOptionalLong());
+ }
+
+ @Override
+ public void renderHead(Component component, IHeaderResponse response) {
+ super.renderHead(component, response);
+ response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forScript(getNamedFunction("privateMessage", this, explicit(PARAM_USER_ID)), "privateMessage")));
+ }
+ });
+ add(new WebSocketBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onConnect(ConnectedMessage message) {
+ super.onConnect(message);
+ addOnlineUser(client.setPageId(message.getKey()));
+ log.debug("WebSocketBehavior::onConnect [uid: {}, session: {}, key: {}]", client.getUid(), message.getSessionId(), message.getKey());
+ }
+
+ @Override
+ protected void onAbort(AbortedMessage message) {
+ super.onAbort(message);
+ closeHandler(message);
+ }
+
+ @Override
+ protected void onClose(ClosedMessage message) {
+ super.onClose(message);
+ closeHandler(message);
+ }
+
+ private void closeHandler(AbstractClientMessage message) {
+ if (MainPanel.this.getCurrentPanel() instanceof RoomPanel) {
+ RoomPanel rp = (RoomPanel)MainPanel.this.getCurrentPanel();
+ RoomMenuPanel.roomExit(rp);
+ }
+ removeOnlineUser(client);
+ log.debug("WebSocketBehavior::closeHandler [uid: {}, session: {}, key: {}]", client.getUid(), message.getSessionId(), message.getKey());
+ }
+ });
+ }
+
+ private List<IMenuItem> getMainMenu() {
+ List<IMenuItem> menu = new ArrayList<>();
+ for (Naviglobal gl : getBean(NavigationDao.class).getMainMenu(AuthLevelUtil.hasAdminLevel(WebSession.getRights()))) {
+ List<IMenuItem> l = new ArrayList<>();
+ for (Navimain nm : gl.getMainnavi()) {
+ l.add(new MainMenuItem(nm) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void onClick(AjaxRequestTarget target) {
+ onClick(MainPanel.this, target);
+ }
+ });
+ }
+ menu.add(new MenuItem(Application.getString(gl.getLabelId()), l));
+ }
+ return menu;
+ }
+
+ public void updateContents(OmUrlFragment f, IPartialPageRequestHandler handler) {
+ updateContents(f, handler, true);
+ }
+
+ private BasePanel getCurrentPanel() {
+ Component prev = contents.get(CHILD_ID);
+ if (prev != null && prev instanceof BasePanel) {
+ return (BasePanel)prev;
+ }
+ return null;
+ }
+
+ public void updateContents(OmUrlFragment f, IPartialPageRequestHandler handler, boolean updateFragment) {
+ BasePanel panel = getPanel(f.getArea(), f.getType());
+ if (panel != null) {
+ BasePanel prev = getCurrentPanel();
+ if (prev != null) {
+ prev.cleanup(handler);
+ }
+ handler.add(contents.replace(panel));
+ if (updateFragment) {
+ UrlFragment uf = new UrlFragment(handler);
+ uf.set(f.getArea().name(), f.getType());
+ }
+ panel.onMenuPanelLoad(handler);
+ }
+ }
+
+ public MenuPanel getMenu() {
+ return menu;
+ }
+
+ public WebMarkupContainer getTopLinks() {
+ return topLinks;
+ }
+
+ public WebMarkupContainer getTopControls() {
+ return topControls;
+ }
+
+ public ChatPanel getChat() {
+ return chat;
+ }
+
+ public Client getClient() {
+ return client;
+ }
+}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MainMenuItem.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MainMenuItem.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MainMenuItem.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MainMenuItem.java Thu Aug 25 03:07:48 2016
@@ -20,7 +20,7 @@ package org.apache.openmeetings.web.comm
import org.apache.openmeetings.db.entity.basic.Navimain;
import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.web.common.MainPanel;
import org.apache.openmeetings.web.util.OmUrlFragment;
import org.apache.openmeetings.web.util.OmUrlFragment.MenuActions;
import org.apache.openmeetings.web.util.OmUrlFragment.MenuParams;
@@ -37,7 +37,7 @@ public class MainMenuItem extends MenuIt
params = m.getParams() != null ? MenuParams.valueOf(m.getParams()) : MenuParams.publicTabButton;
}
- public void onClick(MainPage page, AjaxRequestTarget target) {
- page.updateContents(new OmUrlFragment(action, params), target);
+ public void onClick(MainPanel main, AjaxRequestTarget target) {
+ main.updateContents(new OmUrlFragment(action, params), target);
}
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/AccessDeniedPage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/AccessDeniedPage.java?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/AccessDeniedPage.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/AccessDeniedPage.java Thu Aug 25 03:07:48 2016
@@ -46,7 +46,7 @@ public class AccessDeniedPage extends Ba
@Override
public boolean isVisible() {
- return !WebSession.get().isSignedIn();
+ return WebSession.get().isSignedIn();
}
@Override
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html?rev=1757594&r1=1757593&r2=1757594&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html Thu Aug 25 03:07:48 2016
@@ -27,7 +27,7 @@
</div>
<div wicket:id="i-pass"></div>
</div>
- <div wicket:id="panel-swf" style="width: 100%; height: 100%;"></div>
+ <div wicket:id="panel-main" style="width: 100%; height: 100%;"></div>
<div wicket:id="access-denied"></div>
</wicket:extend>
</html>