Author: solomax
Date: Tue Aug 23 03:36:31 2016
New Revision: 1757299

URL: http://svn.apache.org/viewvc?rev=1757299&view=rev
Log:
[OPENMEETINGS-1138] hashes should work as expected

Modified:
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
    
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/app/Application.properties.xml
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
    
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/app/Application.properties.xml
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
 Tue Aug 23 03:36:31 2016
@@ -20,7 +20,7 @@ package org.apache.openmeetings.web.app;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.wicketApplicationName;
-import static org.apache.openmeetings.web.app.WebSession.INVITATION_HASH;
+import static org.apache.openmeetings.web.pages.HashPage.INVITATION_HASH;
 import static 
org.apache.openmeetings.web.user.rooms.RoomEnterBehavior.getRoomUrlFragment;
 import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
 import static org.red5.logging.Red5LoggerFactory.getLogger;
@@ -143,12 +143,13 @@ public class Application extends Authent
                getRootRequestMapperAsCompound().add(new 
NoVersionMapper(getHomePage()));
                getRootRequestMapperAsCompound().add(new 
NoVersionMapper("notinited", NotInitedPage.class));
                getRootRequestMapperAsCompound().add(new NoVersionMapper("swf", 
HashPage.class));
-               getRootRequestMapperAsCompound().add(new 
NoVersionMapper("recording/${hash}", HashPage.class));
-               getRootRequestMapperAsCompound().add(new 
NoVersionMapper("hash", HashPage.class));
+               //getRootRequestMapperAsCompound().add(new 
NoVersionMapper("/hash", HashPage.class));
+               getRootRequestMapperAsCompound().add(new 
NoVersionMapper("/recording/${hash}", HashPage.class));
                getRootRequestMapperAsCompound().add(new 
NoVersionMapper("signin", getSignInPageClass()));
                mountPage("install", InstallWizardPage.class);
                mountPage("activate", ActivatePage.class);
                mountPage("reset", ResetPage.class);
+               mountPage("/hash", HashPage.class);
                mountResource("/recordings/avi/${id}", new 
AviRecordingResourceReference());
                mountResource("/recordings/flv/${id}", new 
FlvRecordingResourceReference());
                mountResource("/recordings/mp4/${id}", new 
Mp4RecordingResourceReference());

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
 Tue Aug 23 03:36:31 2016
@@ -1921,4 +1921,5 @@
        <entry key="appointment.tab.general">General</entry>
        <entry key="appointment.tab.advanced">Advanced</entry>
        <entry key="button.label.share">Share</entry>
+       <entry key="invalid.hash">Invalid hash</entry>
 </properties>

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 Tue Aug 23 03:36:31 2016
@@ -75,7 +75,6 @@ import org.apache.wicket.authentication.
 import 
org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession;
 import org.apache.wicket.authroles.authorization.strategies.role.Roles;
 import org.apache.wicket.request.Request;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.string.Strings;
 import org.wicketstuff.dashboard.Dashboard;
@@ -90,8 +89,6 @@ public class WebSession extends Abstract
        public static final List<String> AVAILABLE_TIMEZONES = 
Arrays.asList(TimeZone.getAvailableIDs());
        public static final Set<String> AVAILABLE_TIMEZONE_SET = new 
LinkedHashSet<String>(AVAILABLE_TIMEZONES);
        public static final String WICKET_ROOM_ID = "wicketroomid";
-       static final String SECURE_HASH = "secureHash";
-       static final String INVITATION_HASH = "invitationHash";
        private Long userId = null;
        private Set<Right> rights = new HashSet<User.Right>(); //TODO renew 
somehow on user edit !!!!
        private long languageId = -1; //TODO renew somehow on user edit !!!!
@@ -169,27 +166,25 @@ public class WebSession extends Abstract
                return userId != null && userId.longValue() > 0;
        }
 
-       public void checkHashes(PageParameters params) {
-               StringValue secureHash = params.get(SECURE_HASH);
-               StringValue invitationHash = params.get(INVITATION_HASH);
+       public void checkHashes(StringValue secure, StringValue invitation) {
                try {
-                       if (!secureHash.isEmpty()) {
+                       if (!secure.isEmpty()) {
                                if (isSignedIn()) {
                                        invalidate();
                                }
-                               if (signIn(secureHash.toString(), false)) {
+                               if (signIn(secure.toString(), false)) {
                                        //TODO markUsed
                                } else {
                                        //TODO redirect to error
                                }
                        }
-                       if (!invitationHash.isEmpty()) {
+                       if (!invitation.isEmpty()) {
                                if (isSignedIn()) {
                                        invalidate();
                                }
-                               i = 
getBean(InvitationDao.class).getByHash(invitationHash.toString(), false, false);
+                               i = 
getBean(InvitationDao.class).getByHash(invitation.toString(), false, false);
                                if (i.isAllowEntry()) {
-                                       setUser(i.getInvitee());
+                                       setUser(i.getInvitee(), true);
                                        //TODO markUsed
                                        if (i.getRoom() != null) {
                                                roomId = i.getRoom().getId();
@@ -245,7 +240,7 @@ public class WebSession extends Abstract
                                                soapDao.update(soapLogin);
                                        }
                                        sessionDao.updateUser(SID, 
user.getId());
-                                       setUser(user);
+                                       setUser(user, true);
                                        roomId = soapLogin.getRoomId();
                                        recordingId = 
soapLogin.getRecordingId();
                                        return true;
@@ -255,9 +250,11 @@ public class WebSession extends Abstract
                return false;
        }
 
-       private void setUser(User u) {
+       private void setUser(User u, boolean emptyRights) {
                String _sid = SID;
                Long _recordingId = recordingId;
+               Long _roomId = roomId;
+               Invitation _i = i;
                replaceSession(); // required to prevent session fixation
                if (_sid != null) {
                        SID = _sid;
@@ -265,8 +262,18 @@ public class WebSession extends Abstract
                if (_recordingId != null) {
                        recordingId = _recordingId;
                }
+               if (_roomId != null) {
+                       roomId = _roomId;
+               }
+               if (i != null) {
+                       i = _i;
+               }
                userId = u.getId();
-               rights = Collections.unmodifiableSet(u.getRights());
+               if (emptyRights) {
+                       rights = 
Collections.unmodifiableSet(Collections.<Right>emptySet());
+               } else {
+                       rights = Collections.unmodifiableSet(u.getRights());
+               }
                languageId = u.getLanguageId();
                externalType = u.getExternalType();
                tz = getBean(TimezoneUtil.class).getTimeZone(u);
@@ -311,7 +318,7 @@ public class WebSession extends Abstract
                if (u == null) {
                        return false;
                }
-               setUser(u);
+               setUser(u, false);
                return true;
        }
        
@@ -372,6 +379,10 @@ public class WebSession extends Abstract
                return get().recordingId;
        }
 
+       public Long getRoomId() {
+               return get().roomId;
+       }
+
        public Invitation getInvitation() {
                return i;
        }

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html
 Tue Aug 23 03:36:31 2016
@@ -20,11 +20,15 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:extend>
-       <div class="page recording">
-               <div wicket:id="info"></div>
-               <div wicket:id="player"></div>
+       <div wicket:id="panel-recording">
+               <div class="page recording">
+                       <div wicket:id="info"></div>
+                       <div wicket:id="player"></div>
+               </div>
+               <div wicket:id="i-pass"></div>
        </div>
-       <div wicket:id="i-pass"></div>
+       <div wicket:id="panel-swf" style="width: 100%; height: 100%;"></div>
+       <div wicket:id="access-denied"></div>
 </wicket:extend>
 </html>
 

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
 Tue Aug 23 03:36:31 2016
@@ -19,50 +19,132 @@
 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 org.apache.openmeetings.db.dao.record.RecordingDao;
 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.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.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.panel.EmptyPanel;
 import org.apache.wicket.request.IRequestParameters;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.StringValue;
 
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+
 public class HashPage extends BaseInitedPage implements IUpdatable {
        private static final long serialVersionUID = 1L;
+       public static final String SECURE_HASH = "secureHash";
+       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;;
 
        public HashPage(PageParameters p) {
-               WebSession ws = WebSession.get();
-               StringValue hash = p.get("hash");
-               Recording r = null;
-               if (!hash.isEmpty()) {
-                       ws.signIn(hash.toString(), true);
+               StringValue secure = p.get(SECURE_HASH);
+               if (secure.isEmpty()) {
+                       secure = p.get(HASH);
                }
-               Invitation i = ws.getInvitation();
-               if (i != null && !i.isPasswordProtected()) {
-                       r = i.getRecording();
-               } else if (i == null) {
+               StringValue invitation = p.get(INVITATION_HASH);
+
+               WebSession ws = WebSession.get();
+               ws.checkHashes(secure, invitation);
+
+               recContainer.setVisible(false);
+               add(new EmptyPanel("panel-swf").setVisible(false));
+               if (!invitation.isEmpty()) {
+                       Invitation i = ws.getInvitation();
+                       if (i == null) {
+                               errorKey = "535";
+                       } else if (!i.isAllowEntry()) {
+                               errorKey = Valid.OneTime == i.getValid() ? 
"534" : "1271";
+                       } else {
+                               Recording rec = i.getRecording();
+                               if (rec != null) {
+                                       vi.setVisible(!i.isPasswordProtected());
+                                       vp.setVisible(!i.isPasswordProtected());
+                                       if (!i.isPasswordProtected()) {
+                                               vi.update(null, rec);
+                                               vp.update(null, rec);
+                                       }
+                                       recContainer.setVisible(true);
+                               }
+                               Room r = i.getRoom();
+                               if (r != null) {
+                                       replace(new SwfPanel("panel-swf", new 
PageParameters(p).add(WICKET_ROOM_ID, r.getId())));
+                               }
+                               error = false;
+                       }
+               } else if (!secure.isEmpty()) {
                        Long recId = getRecordingId();
-                       if (recId != null) {
-                               r = getBean(RecordingDao.class).get(recId);
+                       if (recId == null && ws.getRoomId() == null) {
+                               errorKey = "1599";
+                       } else if (recId != null) {
+                               recContainer.setVisible(true);
+                               Recording rec = 
getBean(RecordingDao.class).get(recId);
+                               vi.update(null, rec);
+                               vp.update(null, rec);
+                               error = false;
+                       } else {
+                               replace(new SwfPanel("panel-swf", new 
PageParameters(p).add(WICKET_ROOM_ID, ws.getRoomId())));
+                               error = false;
                        }
                }
-               add(vi.setShowShare(false).update(null, 
r).setOutputMarkupPlaceholderTag(true).setVisible(r != null)
-                       , vp.update(null, 
r).setOutputMarkupPlaceholderTag(true).setVisible(r != null)
-                       , new InvitationPasswordDialog("i-pass", this));
+               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));
+                       error = false;
+               }
+               add(recContainer
+                       
.add(vi.setShowShare(false).setOutputMarkupPlaceholderTag(true)
+                               , vp.setOutputMarkupPlaceholderTag(true)
+                               , new InvitationPasswordDialog("i-pass", 
this)));
+       }
+
+       @Override
+       protected void onInitialize() {
+               super.onInitialize();
+               add(new MessageDialog("access-denied", 
getString("invalid.hash"), getString(errorKey), DialogButtons.OK, 
DialogIcon.ERROR) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onConfigure(JQueryBehavior behavior) {
+                               super.onConfigure(behavior);
+                               behavior.setOption("autoOpen", error);
+                               behavior.setOption("resizable", false);
+                       }
+
+                       @Override
+                       public void onClose(IPartialPageRequestHandler handler, 
DialogButton button) {
+                               // no-op
+                       }
+               });
        }
 
        @Override
        protected void onParameterArrival(IRequestParameters requestParameters, 
AjaxRequestTarget target) {
        }
-       
+
        @Override
        public void update(AjaxRequestTarget target) {
                Invitation i = WebSession.get().getInvitation();

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 Tue Aug 23 03:36:31 2016
@@ -23,6 +23,8 @@ import static org.apache.openmeetings.we
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static 
org.apache.openmeetings.web.pages.auth.SignInPage.allowOAuthLogin;
 import static org.apache.openmeetings.web.pages.auth.SignInPage.allowRegister;
+import static org.apache.openmeetings.web.room.SwfPanel.SWF;
+import static org.apache.openmeetings.web.room.SwfPanel.SWF_TYPE_NETWORK;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -39,7 +41,6 @@ import org.apache.openmeetings.web.app.A
 import org.apache.openmeetings.web.app.OmAuthenticationStrategy;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.pages.HashPage;
-import org.apache.openmeetings.web.room.SwfPanel;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.RestartResponseException;
 import org.apache.wicket.ajax.AjaxClientInfoBehavior;
@@ -245,7 +246,7 @@ public class SignInDialog extends Abstra
 
                                @Override
                                public void onClick() {
-                                       setResponsePage(HashPage.class, new 
PageParameters().add("swf", SwfPanel.SWF_TYPE_NETWORK));
+                                       setResponsePage(HashPage.class, new 
PageParameters().add(SWF, SWF_TYPE_NETWORK));
                                }
                        });
                        add(new WebMarkupContainer("oauthContainer").add(

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
 Tue Aug 23 03:36:31 2016
@@ -19,9 +19,28 @@
   
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
+<wicket:head>
+       <meta http-equiv="cache-control" content="no-cache">
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+       <style type="text/css">
+               html,body { /* http://www.quirksmode.org/css/100percheight.html 
*/
+                       height: 100%;
+                       /* prevent scrollbars */
+                       margin: 0;
+                       padding: 0;
+                       border: 0 none;
+                       overflow: hidden;
+               }
+               body {
+                       background-color: #ffffff;
+               }
+               img {
+                       border: 0 none;
+               }
+       </style>
+</wicket:head>
 <wicket:panel>
-       <div id="swfloading"
-               style="z-index: 666666; position: absolute; top: 50%; left: 
50%;">
+       <div id="swfloading" style="z-index: 666666; position: absolute; top: 
50%; left: 50%;">
                <img src="images/ajax-loader.gif" />
        </div>
        <noscript>Please enable JavaScript in order to use this 
application.</noscript>
@@ -31,4 +50,4 @@
        <div wicket:id="vote"></div>
        <div wicket:id="pollResults"></div>
 </wicket:panel>
-</html>
\ No newline at end of file
+</html>

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
 Tue Aug 23 03:36:31 2016
@@ -74,8 +74,10 @@ import org.slf4j.Logger;
 public class SwfPanel extends BasePanel {
        private static final long serialVersionUID = 1L;
        private static final Logger log = 
Red5LoggerFactory.getLogger(SwfPanel.class, webAppRootKey);
+       public static final String SWF = "swf";
        public static final String PARAM_PUBLIC_SID = "publicSid";
        public static final String SWF_TYPE_NETWORK = "network";
+       public static final String SWF_TYPE_SETTINGS = "settings";
        private final InvitationDialog invite;
        private final CreatePollDialog createPoll;
        private final VoteDialog vote;
@@ -249,7 +251,7 @@ public class SwfPanel extends BasePanel
        }
 
        private String getFlashFile(PageParameters pp) {
-               StringValue type = pp.get("swf");
+               StringValue type = pp.get(SWF);
                String fmt = "main%s.swf11.swf";
                if (SWF_TYPE_NETWORK.equals(type.toString())) {
                        fmt = "networktesting%s.swf10.swf";

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
 Tue Aug 23 03:36:31 2016
@@ -21,6 +21,8 @@ package org.apache.openmeetings.web.user
 import static 
org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+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.util.OmUrlFragment.PROFILE_EDIT;
 import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
 
@@ -30,7 +32,6 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.web.common.UploadableProfileImagePanel;
 import org.apache.openmeetings.web.pages.HashPage;
 import org.apache.openmeetings.web.pages.MainPage;
-import org.apache.openmeetings.web.room.SwfPanel;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.markup.html.basic.Label;
@@ -73,7 +74,7 @@ public class WelcomeWidgetView extends W
 
                        @Override
                        public void onClick() {
-                               setResponsePage(HashPage.class, new 
PageParameters().add("swf", SwfPanel.SWF_TYPE_NETWORK));
+                               setResponsePage(HashPage.class, new 
PageParameters().add(SWF, SWF_TYPE_NETWORK));
                        }
                });
        }

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=1757299&r1=1757298&r2=1757299&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
 Tue Aug 23 03:36:31 2016
@@ -20,7 +20,7 @@ package org.apache.openmeetings.web.app;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.wicketApplicationName;
-import static org.apache.openmeetings.web.app.WebSession.INVITATION_HASH;
+import static org.apache.openmeetings.web.pages.HashPage.INVITATION_HASH;
 import static 
org.apache.openmeetings.web.user.rooms.RoomEnterBehavior.getRoomUrlFragment;
 import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
 import static org.red5.logging.Red5LoggerFactory.getLogger;
@@ -141,12 +141,13 @@ public class Application extends Authent
                getRootRequestMapperAsCompound().add(new 
NoVersionMapper(getHomePage()));
                getRootRequestMapperAsCompound().add(new 
NoVersionMapper("notinited", NotInitedPage.class));
                getRootRequestMapperAsCompound().add(new NoVersionMapper("swf", 
HashPage.class));
-               getRootRequestMapperAsCompound().add(new 
NoVersionMapper("recording/${hash}", HashPage.class));
-               getRootRequestMapperAsCompound().add(new 
NoVersionMapper("hash", HashPage.class));
+               //getRootRequestMapperAsCompound().add(new 
NoVersionMapper("/hash", HashPage.class));
+               getRootRequestMapperAsCompound().add(new 
NoVersionMapper("/recording/${hash}", HashPage.class));
                getRootRequestMapperAsCompound().add(new 
NoVersionMapper("signin", getSignInPageClass()));
                mountPage("install", InstallWizardPage.class);
                mountPage("activate", ActivatePage.class);
                mountPage("reset", ResetPage.class);
+               mountPage("/hash", HashPage.class);
                mountResource("/recordings/avi/${id}", new 
AviRecordingResourceReference());
                mountResource("/recordings/flv/${id}", new 
FlvRecordingResourceReference());
                mountResource("/recordings/mp4/${id}", new 
Mp4RecordingResourceReference());

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
 Tue Aug 23 03:36:31 2016
@@ -1921,4 +1921,5 @@
        <entry key="appointment.tab.general">General</entry>
        <entry key="appointment.tab.advanced">Advanced</entry>
        <entry key="button.label.share">Share</entry>
+       <entry key="invalid.hash">Invalid hash</entry>
 </properties>

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
 Tue Aug 23 03:36:31 2016
@@ -75,7 +75,6 @@ import org.apache.wicket.authentication.
 import 
org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession;
 import org.apache.wicket.authroles.authorization.strategies.role.Roles;
 import org.apache.wicket.request.Request;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.string.Strings;
 import org.wicketstuff.dashboard.Dashboard;
@@ -90,8 +89,6 @@ public class WebSession extends Abstract
        public static final List<String> AVAILABLE_TIMEZONES = 
Arrays.asList(TimeZone.getAvailableIDs());
        public static final Set<String> AVAILABLE_TIMEZONE_SET = new 
LinkedHashSet<String>(AVAILABLE_TIMEZONES);
        public static final String WICKET_ROOM_ID = "wicketroomid";
-       static final String SECURE_HASH = "secureHash";
-       static final String INVITATION_HASH = "invitationHash";
        private Long userId = null;
        private Set<Right> rights = new HashSet<User.Right>(); //TODO renew 
somehow on user edit !!!!
        private long languageId = -1; //TODO renew somehow on user edit !!!!
@@ -169,27 +166,25 @@ public class WebSession extends Abstract
                return userId != null && userId.longValue() > 0;
        }
 
-       public void checkHashes(PageParameters params) {
-               StringValue secureHash = params.get(SECURE_HASH);
-               StringValue invitationHash = params.get(INVITATION_HASH);
+       public void checkHashes(StringValue secure, StringValue invitation) {
                try {
-                       if (!secureHash.isEmpty()) {
+                       if (!secure.isEmpty()) {
                                if (isSignedIn()) {
                                        invalidate();
                                }
-                               if (signIn(secureHash.toString(), false)) {
+                               if (signIn(secure.toString(), false)) {
                                        //TODO markUsed
                                } else {
                                        //TODO redirect to error
                                }
                        }
-                       if (!invitationHash.isEmpty()) {
+                       if (!invitation.isEmpty()) {
                                if (isSignedIn()) {
                                        invalidate();
                                }
-                               i = 
getBean(InvitationDao.class).getByHash(invitationHash.toString(), false, false);
+                               i = 
getBean(InvitationDao.class).getByHash(invitation.toString(), false, false);
                                if (i.isAllowEntry()) {
-                                       setUser(i.getInvitee());
+                                       setUser(i.getInvitee(), true);
                                        //TODO markUsed
                                        if (i.getRoom() != null) {
                                                roomId = i.getRoom().getId();
@@ -245,7 +240,7 @@ public class WebSession extends Abstract
                                                soapDao.update(soapLogin);
                                        }
                                        sessionDao.updateUser(SID, 
user.getId());
-                                       setUser(user);
+                                       setUser(user, true);
                                        roomId = soapLogin.getRoomId();
                                        recordingId = 
soapLogin.getRecordingId();
                                        return true;
@@ -255,9 +250,11 @@ public class WebSession extends Abstract
                return false;
        }
 
-       private void setUser(User u) {
+       private void setUser(User u, boolean emptyRights) {
                String _sid = SID;
                Long _recordingId = recordingId;
+               Long _roomId = roomId;
+               Invitation _i = i;
                replaceSession(); // required to prevent session fixation
                if (_sid != null) {
                        SID = _sid;
@@ -265,8 +262,18 @@ public class WebSession extends Abstract
                if (_recordingId != null) {
                        recordingId = _recordingId;
                }
+               if (_roomId != null) {
+                       roomId = _roomId;
+               }
+               if (i != null) {
+                       i = _i;
+               }
                userId = u.getId();
-               rights = Collections.unmodifiableSet(u.getRights());
+               if (emptyRights) {
+                       rights = 
Collections.unmodifiableSet(Collections.<Right>emptySet());
+               } else {
+                       rights = Collections.unmodifiableSet(u.getRights());
+               }
                languageId = u.getLanguageId();
                externalType = u.getExternalType();
                tz = getBean(TimezoneUtil.class).getTimeZone(u);
@@ -311,7 +318,7 @@ public class WebSession extends Abstract
                if (u == null) {
                        return false;
                }
-               setUser(u);
+               setUser(u, false);
                return true;
        }
        
@@ -371,6 +378,10 @@ public class WebSession extends Abstract
                return get().recordingId;
        }
 
+       public Long getRoomId() {
+               return get().roomId;
+       }
+
        public Invitation getInvitation() {
                return i;
        }

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=1757299&r1=1757298&r2=1757299&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
 Tue Aug 23 03:36:31 2016
@@ -20,11 +20,15 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:extend>
-       <div class="page recording">
-               <div wicket:id="info"></div>
-               <div wicket:id="player"></div>
+       <div wicket:id="panel-recording">
+               <div class="page recording">
+                       <div wicket:id="info"></div>
+                       <div wicket:id="player"></div>
+               </div>
+               <div wicket:id="i-pass"></div>
        </div>
-       <div wicket:id="i-pass"></div>
+       <div wicket:id="panel-swf" 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=1757299&r1=1757298&r2=1757299&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
 Tue Aug 23 03:36:31 2016
@@ -19,50 +19,132 @@
 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 org.apache.openmeetings.db.dao.record.RecordingDao;
 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.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.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.panel.EmptyPanel;
 import org.apache.wicket.request.IRequestParameters;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.StringValue;
 
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+
 public class HashPage extends BaseInitedPage implements IUpdatable {
        private static final long serialVersionUID = 1L;
+       public static final String SECURE_HASH = "secureHash";
+       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;;
 
        public HashPage(PageParameters p) {
-               WebSession ws = WebSession.get();
-               StringValue hash = p.get("hash");
-               Recording r = null;
-               if (!hash.isEmpty()) {
-                       ws.signIn(hash.toString(), true);
+               StringValue secure = p.get(SECURE_HASH);
+               if (secure.isEmpty()) {
+                       secure = p.get(HASH);
                }
-               Invitation i = ws.getInvitation();
-               if (i != null && !i.isPasswordProtected()) {
-                       r = i.getRecording();
-               } else if (i == null) {
+               StringValue invitation = p.get(INVITATION_HASH);
+
+               WebSession ws = WebSession.get();
+               ws.checkHashes(secure, invitation);
+
+               recContainer.setVisible(false);
+               add(new EmptyPanel("panel-swf").setVisible(false));
+               if (!invitation.isEmpty()) {
+                       Invitation i = ws.getInvitation();
+                       if (i == null) {
+                               errorKey = "535";
+                       } else if (!i.isAllowEntry()) {
+                               errorKey = Valid.OneTime == i.getValid() ? 
"534" : "1271";
+                       } else {
+                               Recording rec = i.getRecording();
+                               if (rec != null) {
+                                       vi.setVisible(!i.isPasswordProtected());
+                                       vp.setVisible(!i.isPasswordProtected());
+                                       if (!i.isPasswordProtected()) {
+                                               vi.update(null, rec);
+                                               vp.update(null, rec);
+                                       }
+                                       recContainer.setVisible(true);
+                               }
+                               Room r = i.getRoom();
+                               if (r != null) {
+                                       replace(new SwfPanel("panel-swf", new 
PageParameters(p).add(WICKET_ROOM_ID, r.getId())));
+                               }
+                               error = false;
+                       }
+               } else if (!secure.isEmpty()) {
                        Long recId = getRecordingId();
-                       if (recId != null) {
-                               r = getBean(RecordingDao.class).get(recId);
+                       if (recId == null && ws.getRoomId() == null) {
+                               errorKey = "1599";
+                       } else if (recId != null) {
+                               recContainer.setVisible(true);
+                               Recording rec = 
getBean(RecordingDao.class).get(recId);
+                               vi.update(null, rec);
+                               vp.update(null, rec);
+                               error = false;
+                       } else {
+                               replace(new SwfPanel("panel-swf", new 
PageParameters(p).add(WICKET_ROOM_ID, ws.getRoomId())));
+                               error = false;
                        }
                }
-               add(vi.setShowShare(false).update(null, 
r).setOutputMarkupPlaceholderTag(true).setVisible(r != null)
-                       , vp.update(null, 
r).setOutputMarkupPlaceholderTag(true).setVisible(r != null)
-                       , new InvitationPasswordDialog("i-pass", this));
+               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));
+                       error = false;
+               }
+               add(recContainer
+                       
.add(vi.setShowShare(false).setOutputMarkupPlaceholderTag(true)
+                               , vp.setOutputMarkupPlaceholderTag(true)
+                               , new InvitationPasswordDialog("i-pass", 
this)));
+       }
+
+       @Override
+       protected void onInitialize() {
+               super.onInitialize();
+               add(new MessageDialog("access-denied", 
getString("invalid.hash"), getString(errorKey), DialogButtons.OK, 
DialogIcon.ERROR) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onConfigure(JQueryBehavior behavior) {
+                               super.onConfigure(behavior);
+                               behavior.setOption("autoOpen", error);
+                               behavior.setOption("resizable", false);
+                       }
+
+                       @Override
+                       public void onClose(IPartialPageRequestHandler handler, 
DialogButton button) {
+                               // no-op
+                       }
+               });
        }
 
        @Override
        protected void onParameterArrival(IRequestParameters requestParameters, 
AjaxRequestTarget target) {
        }
-       
+
        @Override
        public void update(AjaxRequestTarget target) {
                Invitation i = WebSession.get().getInvitation();

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 Tue Aug 23 03:36:31 2016
@@ -23,6 +23,8 @@ import static org.apache.openmeetings.we
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static 
org.apache.openmeetings.web.pages.auth.SignInPage.allowOAuthLogin;
 import static org.apache.openmeetings.web.pages.auth.SignInPage.allowRegister;
+import static org.apache.openmeetings.web.room.SwfPanel.SWF;
+import static org.apache.openmeetings.web.room.SwfPanel.SWF_TYPE_NETWORK;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -39,7 +41,6 @@ import org.apache.openmeetings.web.app.A
 import org.apache.openmeetings.web.app.OmAuthenticationStrategy;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.pages.HashPage;
-import org.apache.openmeetings.web.room.SwfPanel;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.RestartResponseException;
 import org.apache.wicket.ajax.AjaxClientInfoBehavior;
@@ -245,7 +246,7 @@ public class SignInDialog extends Abstra
 
                                @Override
                                public void onClick() {
-                                       setResponsePage(HashPage.class, new 
PageParameters().add("swf", SwfPanel.SWF_TYPE_NETWORK));
+                                       setResponsePage(HashPage.class, new 
PageParameters().add(SWF, SWF_TYPE_NETWORK));
                                }
                        });
                        add(new WebMarkupContainer("oauthContainer").add(

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
 Tue Aug 23 03:36:31 2016
@@ -19,6 +19,26 @@
   
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
+<wicket:head>
+       <meta http-equiv="cache-control" content="no-cache">
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+       <style type="text/css">
+               html,body { /* http://www.quirksmode.org/css/100percheight.html 
*/
+                       height: 100%;
+                       /* prevent scrollbars */
+                       margin: 0;
+                       padding: 0;
+                       border: 0 none;
+                       overflow: hidden;
+               }
+               body {
+                       background-color: #ffffff;
+               }
+               img {
+                       border: 0 none;
+               }
+       </style>
+</wicket:head>
 <wicket:panel>
        <div id="swfloading" style="z-index: 666666; position: absolute; top: 
50%; left: 50%;">
                <img src="images/ajax-loader.gif" />

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
 Tue Aug 23 03:36:31 2016
@@ -59,9 +59,11 @@ import org.slf4j.Logger;
 public class SwfPanel extends BasePanel {
        private static final long serialVersionUID = 1L;
        private static final Logger log = 
Red5LoggerFactory.getLogger(SwfPanel.class, webAppRootKey);
+       public static final String SWF = "swf";
        public static final String PARAM_PUBLIC_SID = "publicSid";
        public static final String PARAM_URL = "url";
        public static final String SWF_TYPE_NETWORK = "network";
+       public static final String SWF_TYPE_SETTINGS = "settings";
        private Long roomId = null;
        
        public SwfPanel(String id) {

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
 Tue Aug 23 03:36:31 2016
@@ -21,6 +21,8 @@ package org.apache.openmeetings.web.user
 import static 
org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+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.util.OmUrlFragment.PROFILE_EDIT;
 import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
 
@@ -30,7 +32,6 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.web.common.UploadableProfileImagePanel;
 import org.apache.openmeetings.web.pages.HashPage;
 import org.apache.openmeetings.web.pages.MainPage;
-import org.apache.openmeetings.web.room.SwfPanel;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.markup.html.basic.Label;
@@ -73,7 +74,7 @@ public class WelcomeWidgetView extends W
 
                        @Override
                        public void onClick() {
-                               setResponsePage(HashPage.class, new 
PageParameters().add("swf", SwfPanel.SWF_TYPE_NETWORK));
+                               setResponsePage(HashPage.class, new 
PageParameters().add(SWF, SWF_TYPE_NETWORK));
                        }
                });
        }

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=1757299&r1=1757298&r2=1757299&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
 Tue Aug 23 03:36:31 2016
@@ -20,7 +20,7 @@ package org.apache.openmeetings.web.app;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.wicketApplicationName;
-import static org.apache.openmeetings.web.app.WebSession.INVITATION_HASH;
+import static org.apache.openmeetings.web.pages.HashPage.INVITATION_HASH;
 import static 
org.apache.openmeetings.web.user.rooms.RoomEnterBehavior.getRoomUrlFragment;
 import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
 import static org.red5.logging.Red5LoggerFactory.getLogger;
@@ -141,12 +141,13 @@ public class Application extends Authent
                getRootRequestMapperAsCompound().add(new 
NoVersionMapper(getHomePage()));
                getRootRequestMapperAsCompound().add(new 
NoVersionMapper("notinited", NotInitedPage.class));
                getRootRequestMapperAsCompound().add(new NoVersionMapper("swf", 
HashPage.class));
-               getRootRequestMapperAsCompound().add(new 
NoVersionMapper("recording/${hash}", HashPage.class));
-               getRootRequestMapperAsCompound().add(new 
NoVersionMapper("hash", HashPage.class));
+               //getRootRequestMapperAsCompound().add(new 
NoVersionMapper("/hash", HashPage.class));
+               getRootRequestMapperAsCompound().add(new 
NoVersionMapper("/recording/${hash}", HashPage.class));
                getRootRequestMapperAsCompound().add(new 
NoVersionMapper("signin", getSignInPageClass()));
                mountPage("install", InstallWizardPage.class);
                mountPage("activate", ActivatePage.class);
                mountPage("reset", ResetPage.class);
+               mountPage("/hash", HashPage.class);
                mountResource("/recordings/avi/${id}", new 
AviRecordingResourceReference());
                mountResource("/recordings/flv/${id}", new 
FlvRecordingResourceReference());
                mountResource("/recordings/mp4/${id}", new 
Mp4RecordingResourceReference());

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
 Tue Aug 23 03:36:31 2016
@@ -1921,4 +1921,5 @@
        <entry key="appointment.tab.general">General</entry>
        <entry key="appointment.tab.advanced">Advanced</entry>
        <entry key="button.label.share">Share</entry>
+       <entry key="invalid.hash">Invalid hash</entry>
 </properties>

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=1757299&r1=1757298&r2=1757299&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
 Tue Aug 23 03:36:31 2016
@@ -75,7 +75,6 @@ import org.apache.wicket.authentication.
 import 
org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession;
 import org.apache.wicket.authroles.authorization.strategies.role.Roles;
 import org.apache.wicket.request.Request;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.string.Strings;
 import org.wicketstuff.dashboard.Dashboard;
@@ -90,8 +89,6 @@ public class WebSession extends Abstract
        public static final List<String> AVAILABLE_TIMEZONES = 
Arrays.asList(TimeZone.getAvailableIDs());
        public static final Set<String> AVAILABLE_TIMEZONE_SET = new 
LinkedHashSet<String>(AVAILABLE_TIMEZONES);
        public static final String WICKET_ROOM_ID = "wicketroomid";
-       static final String SECURE_HASH = "secureHash";
-       static final String INVITATION_HASH = "invitationHash";
        private Long userId = null;
        private Set<Right> rights = new HashSet<User.Right>(); //TODO renew 
somehow on user edit !!!!
        private long languageId = -1; //TODO renew somehow on user edit !!!!
@@ -169,27 +166,25 @@ public class WebSession extends Abstract
                return userId != null && userId.longValue() > 0;
        }
 
-       public void checkHashes(PageParameters params) {
-               StringValue secureHash = params.get(SECURE_HASH);
-               StringValue invitationHash = params.get(INVITATION_HASH);
+       public void checkHashes(StringValue secure, StringValue invitation) {
                try {
-                       if (!secureHash.isEmpty()) {
+                       if (!secure.isEmpty()) {
                                if (isSignedIn()) {
                                        invalidate();
                                }
-                               if (signIn(secureHash.toString(), false)) {
+                               if (signIn(secure.toString(), false)) {
                                        //TODO markUsed
                                } else {
                                        //TODO redirect to error
                                }
                        }
-                       if (!invitationHash.isEmpty()) {
+                       if (!invitation.isEmpty()) {
                                if (isSignedIn()) {
                                        invalidate();
                                }
-                               i = 
getBean(InvitationDao.class).getByHash(invitationHash.toString(), false, false);
+                               i = 
getBean(InvitationDao.class).getByHash(invitation.toString(), false, false);
                                if (i.isAllowEntry()) {
-                                       setUser(i.getInvitee());
+                                       setUser(i.getInvitee(), true);
                                        //TODO markUsed
                                        if (i.getRoom() != null) {
                                                roomId = i.getRoom().getId();
@@ -245,7 +240,7 @@ public class WebSession extends Abstract
                                                soapDao.update(soapLogin);
                                        }
                                        sessionDao.updateUser(SID, 
user.getId());
-                                       setUser(user);
+                                       setUser(user, true);
                                        roomId = soapLogin.getRoomId();
                                        recordingId = 
soapLogin.getRecordingId();
                                        return true;
@@ -255,9 +250,11 @@ public class WebSession extends Abstract
                return false;
        }
 
-       private void setUser(User u) {
+       private void setUser(User u, boolean emptyRights) {
                String _sid = SID;
                Long _recordingId = recordingId;
+               Long _roomId = roomId;
+               Invitation _i = i;
                replaceSession(); // required to prevent session fixation
                if (_sid != null) {
                        SID = _sid;
@@ -265,8 +262,18 @@ public class WebSession extends Abstract
                if (_recordingId != null) {
                        recordingId = _recordingId;
                }
+               if (_roomId != null) {
+                       roomId = _roomId;
+               }
+               if (i != null) {
+                       i = _i;
+               }
                userId = u.getId();
-               rights = Collections.unmodifiableSet(u.getRights());
+               if (emptyRights) {
+                       rights = 
Collections.unmodifiableSet(Collections.<Right>emptySet());
+               } else {
+                       rights = Collections.unmodifiableSet(u.getRights());
+               }
                languageId = u.getLanguageId();
                externalType = u.getExternalType();
                tz = getBean(TimezoneUtil.class).getTimeZone(u);
@@ -311,7 +318,7 @@ public class WebSession extends Abstract
                if (u == null) {
                        return false;
                }
-               setUser(u);
+               setUser(u, false);
                return true;
        }
        
@@ -371,6 +378,10 @@ public class WebSession extends Abstract
                return get().recordingId;
        }
 
+       public Long getRoomId() {
+               return get().roomId;
+       }
+
        public Invitation getInvitation() {
                return i;
        }

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=1757299&r1=1757298&r2=1757299&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
 Tue Aug 23 03:36:31 2016
@@ -20,11 +20,15 @@
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
 <wicket:extend>
-       <div class="page recording">
-               <div wicket:id="info"></div>
-               <div wicket:id="player"></div>
+       <div wicket:id="panel-recording">
+               <div class="page recording">
+                       <div wicket:id="info"></div>
+                       <div wicket:id="player"></div>
+               </div>
+               <div wicket:id="i-pass"></div>
        </div>
-       <div wicket:id="i-pass"></div>
+       <div wicket:id="panel-swf" style="width: 100%; height: 100%;"></div>
+       <div wicket:id="access-denied"></div>
 </wicket:extend>
 </html>
 

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
 Tue Aug 23 03:36:31 2016
@@ -19,50 +19,132 @@
 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 org.apache.openmeetings.db.dao.record.RecordingDao;
 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.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.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.panel.EmptyPanel;
 import org.apache.wicket.request.IRequestParameters;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.StringValue;
 
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+
 public class HashPage extends BaseInitedPage implements IUpdatable {
        private static final long serialVersionUID = 1L;
+       public static final String SECURE_HASH = "secureHash";
+       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;;
 
        public HashPage(PageParameters p) {
-               WebSession ws = WebSession.get();
-               StringValue hash = p.get("hash");
-               Recording r = null;
-               if (!hash.isEmpty()) {
-                       ws.signIn(hash.toString(), true);
+               StringValue secure = p.get(SECURE_HASH);
+               if (secure.isEmpty()) {
+                       secure = p.get(HASH);
                }
-               Invitation i = ws.getInvitation();
-               if (i != null && !i.isPasswordProtected()) {
-                       r = i.getRecording();
-               } else if (i == null) {
+               StringValue invitation = p.get(INVITATION_HASH);
+
+               WebSession ws = WebSession.get();
+               ws.checkHashes(secure, invitation);
+
+               recContainer.setVisible(false);
+               add(new EmptyPanel("panel-swf").setVisible(false));
+               if (!invitation.isEmpty()) {
+                       Invitation i = ws.getInvitation();
+                       if (i == null) {
+                               errorKey = "535";
+                       } else if (!i.isAllowEntry()) {
+                               errorKey = Valid.OneTime == i.getValid() ? 
"534" : "1271";
+                       } else {
+                               Recording rec = i.getRecording();
+                               if (rec != null) {
+                                       vi.setVisible(!i.isPasswordProtected());
+                                       vp.setVisible(!i.isPasswordProtected());
+                                       if (!i.isPasswordProtected()) {
+                                               vi.update(null, rec);
+                                               vp.update(null, rec);
+                                       }
+                                       recContainer.setVisible(true);
+                               }
+                               Room r = i.getRoom();
+                               if (r != null) {
+                                       replace(new SwfPanel("panel-swf", new 
PageParameters(p).add(WICKET_ROOM_ID, r.getId())));
+                               }
+                               error = false;
+                       }
+               } else if (!secure.isEmpty()) {
                        Long recId = getRecordingId();
-                       if (recId != null) {
-                               r = getBean(RecordingDao.class).get(recId);
+                       if (recId == null && ws.getRoomId() == null) {
+                               errorKey = "1599";
+                       } else if (recId != null) {
+                               recContainer.setVisible(true);
+                               Recording rec = 
getBean(RecordingDao.class).get(recId);
+                               vi.update(null, rec);
+                               vp.update(null, rec);
+                               error = false;
+                       } else {
+                               replace(new SwfPanel("panel-swf", new 
PageParameters(p).add(WICKET_ROOM_ID, ws.getRoomId())));
+                               error = false;
                        }
                }
-               add(vi.setShowShare(false).update(null, 
r).setOutputMarkupPlaceholderTag(true).setVisible(r != null)
-                       , vp.update(null, 
r).setOutputMarkupPlaceholderTag(true).setVisible(r != null)
-                       , new InvitationPasswordDialog("i-pass", this));
+               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));
+                       error = false;
+               }
+               add(recContainer
+                       
.add(vi.setShowShare(false).setOutputMarkupPlaceholderTag(true)
+                               , vp.setOutputMarkupPlaceholderTag(true)
+                               , new InvitationPasswordDialog("i-pass", 
this)));
+       }
+
+       @Override
+       protected void onInitialize() {
+               super.onInitialize();
+               add(new MessageDialog("access-denied", 
getString("invalid.hash"), getString(errorKey), DialogButtons.OK, 
DialogIcon.ERROR) {
+                       private static final long serialVersionUID = 1L;
+
+                       @Override
+                       public void onConfigure(JQueryBehavior behavior) {
+                               super.onConfigure(behavior);
+                               behavior.setOption("autoOpen", error);
+                               behavior.setOption("resizable", false);
+                       }
+
+                       @Override
+                       public void onClose(IPartialPageRequestHandler handler, 
DialogButton button) {
+                               // no-op
+                       }
+               });
        }
 
        @Override
        protected void onParameterArrival(IRequestParameters requestParameters, 
AjaxRequestTarget target) {
        }
-       
+
        @Override
        public void update(AjaxRequestTarget target) {
                Invitation i = WebSession.get().getInvitation();

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
 Tue Aug 23 03:36:31 2016
@@ -23,6 +23,8 @@ import static org.apache.openmeetings.we
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static 
org.apache.openmeetings.web.pages.auth.SignInPage.allowOAuthLogin;
 import static org.apache.openmeetings.web.pages.auth.SignInPage.allowRegister;
+import static org.apache.openmeetings.web.room.SwfPanel.SWF;
+import static org.apache.openmeetings.web.room.SwfPanel.SWF_TYPE_NETWORK;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -39,7 +41,6 @@ import org.apache.openmeetings.web.app.A
 import org.apache.openmeetings.web.app.OmAuthenticationStrategy;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.pages.HashPage;
-import org.apache.openmeetings.web.room.SwfPanel;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.RestartResponseException;
 import org.apache.wicket.ajax.AjaxClientInfoBehavior;
@@ -245,7 +246,7 @@ public class SignInDialog extends Abstra
 
                                @Override
                                public void onClick() {
-                                       setResponsePage(HashPage.class, new 
PageParameters().add("swf", SwfPanel.SWF_TYPE_NETWORK));
+                                       setResponsePage(HashPage.class, new 
PageParameters().add(SWF, SWF_TYPE_NETWORK));
                                }
                        });
                        add(new WebMarkupContainer("oauthContainer").add(

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
 Tue Aug 23 03:36:31 2016
@@ -19,6 +19,26 @@
   
 -->
 <html xmlns:wicket="http://wicket.apache.org";>
+<wicket:head>
+       <meta http-equiv="cache-control" content="no-cache">
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+       <style type="text/css">
+               html,body { /* http://www.quirksmode.org/css/100percheight.html 
*/
+                       height: 100%;
+                       /* prevent scrollbars */
+                       margin: 0;
+                       padding: 0;
+                       border: 0 none;
+                       overflow: hidden;
+               }
+               body {
+                       background-color: #ffffff;
+               }
+               img {
+                       border: 0 none;
+               }
+       </style>
+</wicket:head>
 <wicket:panel>
        <div id="swfloading" style="z-index: 666666; position: absolute; top: 
50%; left: 50%;">
                <img src="images/ajax-loader.gif" />

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
 Tue Aug 23 03:36:31 2016
@@ -38,6 +38,7 @@ import org.apache.wicket.util.string.Str
 
 public class SwfPanel extends BasePanel {
        private static final long serialVersionUID = 1L;
+       public static final String SWF = "swf";
        public static final String SWF_TYPE_NETWORK = "network";
        public static final String SWF_TYPE_SETTINGS = "settings";
        

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java?rev=1757299&r1=1757298&r2=1757299&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidgetView.java
 Tue Aug 23 03:36:31 2016
@@ -21,6 +21,8 @@ package org.apache.openmeetings.web.user
 import static 
org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+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.util.OmUrlFragment.PROFILE_EDIT;
 import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
 
@@ -30,7 +32,6 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.web.common.UploadableProfileImagePanel;
 import org.apache.openmeetings.web.pages.HashPage;
 import org.apache.openmeetings.web.pages.MainPage;
-import org.apache.openmeetings.web.room.SwfPanel;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.markup.html.basic.Label;
@@ -73,7 +74,7 @@ public class WelcomeWidgetView extends W
 
                        @Override
                        public void onClick() {
-                               setResponsePage(HashPage.class, new 
PageParameters().add("swf", SwfPanel.SWF_TYPE_NETWORK));
+                               setResponsePage(HashPage.class, new 
PageParameters().add(SWF, SWF_TYPE_NETWORK));
                        }
                });
        }


Reply via email to