Author: solomax
Date: Fri Sep 14 17:43:33 2012
New Revision: 1384861

URL: http://svn.apache.org/viewvc?rev=1384861&view=rev
Log:
Wicket: area bookmarking works as expected

Modified:
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/MenuPanel.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
    
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java?rev=1384861&r1=1384860&r2=1384861&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
 Fri Sep 14 17:43:33 2012
@@ -35,6 +35,7 @@ public class WebSession extends Abstract
        private long userId = -1;
        private long userLevel = -1;
        private String SID = null;
+       private String area = null;
        
        public WebSession(Request request) {
                super(request);
@@ -116,4 +117,12 @@ public class WebSession extends Abstract
        public static long getUserLevel() {
                return get().userLevel;
        }
+
+       public String getArea() {
+               return area;
+       }
+
+       public void setArea(String area) {
+               this.area = area;
+       }
 }

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/MenuPanel.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/MenuPanel.java?rev=1384861&r1=1384860&r2=1384861&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/MenuPanel.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/MenuPanel.java
 Fri Sep 14 17:43:33 2012
@@ -23,22 +23,26 @@ import org.apache.openmeetings.persisten
 import org.apache.openmeetings.persistence.beans.basic.Navimain;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
-import org.apache.openmeetings.web.components.admin.labels.LangPanel;
 import 
org.apache.openmeetings.web.components.admin.configurations.ConfigsPanel;
 import org.apache.openmeetings.web.components.admin.groups.GroupsPanel;
+import org.apache.openmeetings.web.components.admin.labels.LangPanel;
 import org.apache.openmeetings.web.components.admin.ldaps.LdapsPanel;
 import org.apache.openmeetings.web.components.admin.rooms.RoomsPanel;
 import org.apache.openmeetings.web.components.admin.servers.ServersPanel;
 import org.apache.openmeetings.web.components.admin.users.UsersPanel;
 import org.apache.openmeetings.web.components.user.calendar.CalendarPanel;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.core.util.string.JavaScriptUtils;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 public class MenuPanel extends BasePanel {
        private static final long serialVersionUID = 6626039612808753514L;
@@ -62,7 +66,7 @@ public class MenuPanel extends BasePanel
                , adminModuleServers
        }
 
-       public MenuPanel(String id, final MarkupContainer contents, 
PageParameters pp) {
+       public MenuPanel(String id, final MarkupContainer contents) {
                super(id);
                setMarkupId(id);
                
@@ -84,6 +88,7 @@ public class MenuPanel extends BasePanel
                                                final String name = 
m.getLabel().getValue();
                                                final String desc = 
m.getTooltip().getValue();
                                                final MenuActions action = 
MenuActions.valueOf(m.getAction());
+                                               final String hash = 
getHash(action);
                                                item.add(new 
AjaxLink<Void>("link") {
                                                        private static final 
long serialVersionUID = 5632618935550133709L;
                                                        {
@@ -92,13 +97,11 @@ public class MenuPanel extends BasePanel
                                                        }
                                                        
                                                        public void 
onClick(AjaxRequestTarget target) {
-                                                               String hash = 
"#";
                                                                switch(action) {
                                                                        case 
dashboardModuleStartScreen:
                                                                                
break;
                                                                        case 
dashboardModuleCalendar:
                                                                                
target.add(contents.replace(new CalendarPanel("child")));
-                                                                               
hash = "#calendar";
                                                                                
break;
                                                                        case 
recordModule:
                                                                                
break;
@@ -113,44 +116,100 @@ public class MenuPanel extends BasePanel
                                                                                
break;
                                                                        case 
adminModuleUser:
                                                                                
target.add(contents.replace(new UsersPanel("child")));
-                                                                               
hash = "#admin/users";
                                                                                
break;
                                                                        case 
adminModuleConnections:
                                                                                
break;
                                                                        case 
adminModuleOrg:
                                                                                
target.add(contents.replace(new GroupsPanel("child")));
-                                                                               
hash = "#admin/groups";
                                                                                
break;
                                                                        case 
adminModuleRoom:
                                                                                
target.add(contents.replace(new RoomsPanel("child")));
-                                                                               
hash = "#admin/rooms";
                                                                                
break;
                                                                        case 
adminModuleConfiguration:
                                                                                
target.add(contents.replace(new ConfigsPanel("child")));
-                                                                               
hash = "#admin/configs";
                                                                                
break;
                                                                        case 
adminModuleLanguages:
                                                                                
target.add(contents.replace(new LangPanel("child")));
-                                                                               
hash = "#admin/lang";
                                                                                
break;
                                                                        case 
adminModuleLDAP:
                                                                                
target.add(contents.replace(new LdapsPanel("child")));
-                                                                               
hash = "#admin/ldaps";
                                                                                
break;
                                                                        case 
adminModuleBackup:
                                                                                
break;
                                                                        case 
adminModuleServers:
                                                                                
target.add(contents.replace(new ServersPanel("child")));
-                                                                               
hash = "#admin/servers";
                                                                                
break;
                                                                }
-                                                               
target.appendJavaScript("window.location.hash = '" + 
JavaScriptUtils.escapeQuotes(hash) + "';");
+                                                               
target.appendJavaScript("location.hash = '" + 
JavaScriptUtils.escapeQuotes(hash) + "';");
                                                        };
-                                               });
+                                               
}.add(AttributeModifier.replace("href", hash)));
                                        }
                                }.setReuseItems(true));
                        }
                }.setReuseItems(true));
-       }
 
+               add(new Behavior() {
+                       private static final long serialVersionUID = 
9067610794087880297L;
+
+                       @Override
+                       public void renderHead(Component component, 
IHeaderResponse response) {
+                               String area = WebSession.get().getArea();
+                               if (area != null) { //hash passed from signin
+                                       
response.render(OnDomReadyHeaderItem.forScript("$(\"a[href='" + 
JavaScriptUtils.escapeQuotes(area) + "']\").click();"));
+                                       WebSession.get().setArea(null);
+                               } else {
+                                       
response.render(OnDomReadyHeaderItem.forScript("$(\"a[href='\" + location.hash 
+ \"']\").click();"));
+                               }
+                               super.renderHead(component, response);
+                       }
+               });
+       }
+       
+       private String getHash(MenuActions action) {
+               String hash = "#";
+               switch(action) {
+                       case dashboardModuleStartScreen:
+                               break;
+                       case dashboardModuleCalendar:
+                               hash = "#calendar";
+                               break;
+                       case recordModule:
+                               break;
+                       case conferenceModuleRoomList:
+                               //requires params
+                               break;
+                       case eventModuleRoomList:
+                               break;
+                       case moderatorModuleUser:
+                               break;
+                       case moderatorModuleRoom:
+                               break;
+                       case adminModuleUser:
+                               hash = "#admin/users";
+                               break;
+                       case adminModuleConnections:
+                               break;
+                       case adminModuleOrg:
+                               hash = "#admin/groups";
+                               break;
+                       case adminModuleRoom:
+                               hash = "#admin/rooms";
+                               break;
+                       case adminModuleConfiguration:
+                               hash = "#admin/configs";
+                               break;
+                       case adminModuleLanguages:
+                               hash = "#admin/lang";
+                               break;
+                       case adminModuleLDAP:
+                               hash = "#admin/ldaps";
+                               break;
+                       case adminModuleBackup:
+                               break;
+                       case adminModuleServers:
+                               hash = "#admin/servers";
+                               break;
+               }
+               return hash;
+       }
 }

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java?rev=1384861&r1=1384860&r2=1384861&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
 Fri Sep 14 17:43:33 2012
@@ -27,7 +27,6 @@ import org.apache.wicket.MarkupContainer
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import 
org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
 import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 @AuthorizeInstantiation("USER")
 public class MainPage extends BasePage {
@@ -35,14 +34,10 @@ public class MainPage extends BasePage {
        private final MenuPanel menu;
        
        public MainPage() {
-               this(new PageParameters());
-       }
-       
-       public MainPage(PageParameters pp) {
                MarkupContainer contents = new WebMarkupContainer("contents");
                contents.add(new 
WebMarkupContainer("child")).setOutputMarkupId(true);
                add(contents);
-               menu = new MenuPanel("menu", contents, pp);
+               menu = new MenuPanel("menu", contents);
                add(menu);
                add(new ConfirmableAjaxLink("logout", 
WebSession.getString(634L)) {
                        private static final long serialVersionUID = 
-2994610981053570537L;

Modified: 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java
URL: 
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java?rev=1384861&r1=1384860&r2=1384861&view=diff
==============================================================================
--- 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java
 (original)
+++ 
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java
 Fri Sep 14 17:43:33 2012
@@ -56,13 +56,16 @@ public class SignInPage extends BasePage
                        add(new FeedbackPanel("feedback"));
                        add(new RequiredTextField<String>("login", new 
PropertyModel<String>(this, "login")));
                        add(new PasswordTextField("pass", new 
PropertyModel<String>(this, "password")).setResetPassword(true));
-                       add(new HiddenField<String>("area", new 
PropertyModel<String>(this, "area")));
+                       add(new HiddenField<String>("area", new 
PropertyModel<String>(this, "area"))
+                                       .setMarkupId("area")
+                                       .setOutputMarkupId(true));
                }
                
                @Override
                protected void onSubmit() {
                        if (WebSession.get().signIn(login, password)) {
-                               
setResponsePage(Application.get().getHomePage(), new 
PageParameters().add("area", area));
+                               WebSession.get().setArea(area);
+                               
setResponsePage(Application.get().getHomePage());
                        }
                }
        }


Reply via email to