You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2012/09/14 19:43:35 UTC

svn commit: r1384861 - in /incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web: app/WebSession.java components/MenuPanel.java pages/MainPage.java pages/auth/SignInPage.java

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());
 			}
 		}
 	}