Author: solomax
Date: Tue May 14 11:23:17 2013
New Revision: 1482302
URL: http://svn.apache.org/r1482302
Log:
[OPENMEETINGS-626] "hand-made" url fragment processing is replaced with
wicketstuff library
Added:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UrlFragment.java
Modified:
openmeetings/trunk/singlewebapp/ivy.xml
openmeetings/trunk/singlewebapp/ivysettings.xml
openmeetings/trunk/singlewebapp/ivysettings.xsd
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/BasePanel.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/MenuPanel.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/StartWidgetView.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/WelcomeWidgetView.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/rooms/RoomsSelectorPanel.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/BasePage.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java
Modified: openmeetings/trunk/singlewebapp/ivy.xml
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/ivy.xml?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/ivy.xml (original)
+++ openmeetings/trunk/singlewebapp/ivy.xml Tue May 14 11:23:17 2013
@@ -273,6 +273,9 @@
<include type="jar" />
</dependency>
-->
+ <dependency org="org.wicketstuff"
name="wicketstuff-urlfragment" rev="6.0-SNAPSHOT" conf="openmeetings->*"
transitive="false">
+ <include type="jar" />
+ </dependency>
<!-- iCal4j seems to need this JAR -->
<dependency org="edu.emory.mathcs"
name="backport-util-concurrent" rev="3.1" conf="openmeetings->*"/>
Modified: openmeetings/trunk/singlewebapp/ivysettings.xml
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/ivysettings.xml?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/ivysettings.xml (original)
+++ openmeetings/trunk/singlewebapp/ivysettings.xml Tue May 14 11:23:17 2013
@@ -34,6 +34,9 @@
<url name="smslib" m2compatible="true">
<artifact
pattern="http://smslib.org/maven2/v3/[organisation]/[artifact]/[revision]/[artifact]-[revision].[ext]"
/>
</url>
+ <url name="urlfragment" m2compatible="false"
checksums=""> <!-- FIXME need to be removed in favor of wicketstuff -->
+ <artifact
pattern="https://github.com/Horsed/WicketUrlFragment/raw/master/[artifact]-[revision].[ext]"
/>
+ </url>
</chain>
</resolvers>
<triggers>
Modified: openmeetings/trunk/singlewebapp/ivysettings.xsd
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/ivysettings.xsd?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/ivysettings.xsd (original)
+++ openmeetings/trunk/singlewebapp/ivysettings.xsd Tue May 14 11:23:17 2013
@@ -36,14 +36,14 @@
<xs:element name="resolvers">
<xs:complexType>
<xs:sequence>
- <xs:element ref="chain"/>
+ <xs:element ref="chain" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="chain">
<xs:complexType>
<xs:sequence>
- <xs:element maxOccurs="unbounded" ref="ibiblio"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="ibiblio"/>
<xs:element maxOccurs="unbounded" ref="url"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:NCName"/>
@@ -63,6 +63,7 @@
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:NCName"/>
<xs:attribute name="m2compatible" use="optional" type="xs:NCName"/>
+ <xs:attribute name="checksums" use="optional" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="artifact">
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/WebSession.java
Tue May 14 11:23:17 2013
@@ -44,6 +44,7 @@ import org.apache.openmeetings.web.compo
import
org.apache.openmeetings.web.components.user.dashboard.RssWidgetDescriptor;
import
org.apache.openmeetings.web.components.user.dashboard.StartWidgetDescriptor;
import
org.apache.openmeetings.web.components.user.dashboard.WelcomeWidgetDescriptor;
+import org.apache.openmeetings.web.util.UrlFragment;
import
org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession;
import org.apache.wicket.authroles.authorization.strategies.role.Roles;
import org.apache.wicket.request.Request;
@@ -59,7 +60,7 @@ public class WebSession extends Abstract
private long userId = -1;
private long userLevel = -1;
private String SID = null;
- private String area = null;
+ private UrlFragment area = null;
private TimeZone tz;
private SimpleDateFormat ISO8601FORMAT = new
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
private Dashboard dashboard;
@@ -158,11 +159,11 @@ public class WebSession extends Abstract
return get().userLevel;
}
- public String getArea() {
+ public UrlFragment getArea() {
return area;
}
- public void setArea(String area) {
+ public void setArea(UrlFragment area) {
this.area = area;
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/BasePanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/BasePanel.java?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/BasePanel.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/BasePanel.java
Tue May 14 11:23:17 2013
@@ -38,5 +38,4 @@ public abstract class BasePanel extends
public void onMenuPanelLoad(AjaxRequestTarget target) {
}
-
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/MenuPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/MenuPanel.java?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/MenuPanel.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/MenuPanel.java
Tue May 14 11:23:17 2013
@@ -23,26 +23,12 @@ 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.backup.BackupPanel;
-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.openmeetings.web.components.user.dashboard.OmDashboardPanel;
-import org.apache.openmeetings.web.components.user.rooms.RoomsSelectorPanel;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
+import org.apache.openmeetings.web.pages.MainPage;
+import org.apache.openmeetings.web.util.UrlFragment;
+import org.apache.openmeetings.web.util.UrlFragment.MenuActions;
+import org.apache.openmeetings.web.util.UrlFragment.MenuParams;
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;
@@ -56,32 +42,7 @@ import org.apache.wicket.markup.html.lis
public class MenuPanel extends BasePanel {
private static final long serialVersionUID = 6626039612808753514L;
- private enum MenuActions {
- dashboardModuleStartScreen
- , dashboardModuleCalendar
- , recordModule
- , conferenceModuleRoomList
- , eventModuleRoomList
- , moderatorModuleUser
- , moderatorModuleRoom
- , adminModuleUser
- , adminModuleConnections
- , adminModuleOrg
- , adminModuleRoom
- , adminModuleConfiguration
- , adminModuleLanguages
- , adminModuleLDAP
- , adminModuleBackup
- , adminModuleServers
- }
-
- public enum MenuParams {
- publicTabButton
- , privateTabButton
- , myTabButton
- }
-
- public MenuPanel(String id, final MarkupContainer contents) {
+ public MenuPanel(String id) {
super(id);
setMarkupId(id);
@@ -104,7 +65,6 @@ public class MenuPanel extends BasePanel
final String desc =
m.getTooltip().getValue();
final MenuActions action =
MenuActions.valueOf(m.getAction());
final MenuParams params =
m.getParams() != null ? MenuParams.valueOf(m.getParams()) :
MenuParams.publicTabButton;
- final String hash =
getHash(action, params);
item.add(new
AjaxLink<Void>("link") {
private static final
long serialVersionUID = 5632618935550133709L;
{
@@ -113,144 +73,12 @@ public class MenuPanel extends BasePanel
}
public void
onClick(AjaxRequestTarget target) {
-
- BasePanel
basePanel = null;
-
- switch(action) {
- case
dashboardModuleCalendar:
-
basePanel = new CalendarPanel("child");
-
break;
- case
recordModule:
-
break;
- case
conferenceModuleRoomList:
-
basePanel = new RoomsSelectorPanel("child", params);
-
break;
- case
eventModuleRoomList:
-
break;
- case
moderatorModuleUser:
-
break;
- case
moderatorModuleRoom:
-
break;
- case
adminModuleUser:
-
basePanel = new UsersPanel("child");
-
break;
- case
adminModuleConnections:
-
break;
- case
adminModuleOrg:
-
basePanel = new GroupsPanel("child");
-
break;
- case
adminModuleRoom:
-
basePanel = new RoomsPanel("child");
-
break;
- case
adminModuleConfiguration:
-
basePanel = new ConfigsPanel("child");
-
break;
- case
adminModuleLanguages:
-
basePanel = new LangPanel("child");
-
break;
- case
adminModuleLDAP:
-
basePanel = new LdapsPanel("child");
-
break;
- case
adminModuleBackup:
-
basePanel = new BackupPanel("child");
-
break;
- case
adminModuleServers:
-
basePanel = new ServersPanel("child");
-
break;
- case
dashboardModuleStartScreen:
- default:
-
basePanel = new OmDashboardPanel("child");
-
break;
- }
-
- if (basePanel
!= null) {
-
target.add(contents.replace(basePanel));
-
basePanel.onMenuPanelLoad(target);
- }
-
-
target.appendJavaScript("location.hash = '" +
JavaScriptUtils.escapeQuotes(hash) + "';");
- };
-
}.add(AttributeModifier.replace("href", hash)));
+
((MainPage)getPage()).updateContents(new UrlFragment(action, params), target);
+ }
+ });
}
}.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, MenuParams params) {
- String hash = "#";
- switch(action) {
- case dashboardModuleStartScreen:
- break;
- case dashboardModuleCalendar:
- hash = "#calendar";
- break;
- case recordModule:
- break;
- case conferenceModuleRoomList:
- String zone = "public";
- switch (params) {
- case myTabButton:
- zone = "my";
- break;
- case privateTabButton:
- zone = "group";
- break;
- case publicTabButton:
- default:
- break;
- }
- hash = "#rooms/" + zone;
- 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:
- hash = "#admin/backup";
- break;
- case adminModuleServers:
- hash = "#admin/servers";
- break;
- }
- return hash;
}
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/StartWidgetView.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/StartWidgetView.java?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/StartWidgetView.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/StartWidgetView.java
Tue May 14 11:23:17 2013
@@ -18,9 +18,9 @@
*/
package org.apache.openmeetings.web.components.user.dashboard;
-import org.apache.openmeetings.web.components.user.calendar.CalendarPanel;
+import static org.apache.openmeetings.web.util.UrlFragment.CALENDAR;
+
import org.apache.openmeetings.web.pages.MainPage;
-import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.form.Button;
@@ -39,8 +39,7 @@ public class StartWidgetView extends Wid
@Override
protected void onEvent(AjaxRequestTarget target) {
- MarkupContainer contents =
((MainPage)getPage()).getContents();
- target.add(contents.replace(new
CalendarPanel("child")));
+ ((MainPage)getPage()).updateContents(CALENDAR,
target);
}
}));
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/WelcomeWidgetView.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/WelcomeWidgetView.java?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/WelcomeWidgetView.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/dashboard/WelcomeWidgetView.java
Tue May 14 11:23:17 2013
@@ -20,14 +20,13 @@ package org.apache.openmeetings.web.comp
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static
org.apache.openmeetings.web.components.user.profile.SettingsPanel.EDIT_PROFILE_TAB_ID;
-import static
org.apache.openmeetings.web.components.user.profile.SettingsPanel.MESSAGES_TAB_ID;
+import static org.apache.openmeetings.web.util.UrlFragment.PROFILE_EDIT;
+import static org.apache.openmeetings.web.util.UrlFragment.PROFILE_MESSAGES;
import org.apache.openmeetings.data.user.dao.PrivateMessagesDao;
import org.apache.openmeetings.data.user.dao.UsersDao;
import org.apache.openmeetings.persistence.beans.user.User;
import org.apache.openmeetings.web.components.UploadableProfileImagePanel;
-import org.apache.openmeetings.web.components.user.profile.SettingsPanel;
import org.apache.openmeetings.web.pages.MainPage;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
@@ -54,7 +53,7 @@ public class WelcomeWidgetView extends W
@Override
public void onClick(AjaxRequestTarget target) {
-
target.add(((MainPage)getPage()).getContents().replace(new
SettingsPanel("child", MESSAGES_TAB_ID)));
+
((MainPage)getPage()).updateContents(PROFILE_MESSAGES, target);
}
}.add(new Label("unread", Model.of("" +
getBean(PrivateMessagesDao.class)
.getNumberMessages(getUserId(), 0L, false)))));
@@ -63,7 +62,7 @@ public class WelcomeWidgetView extends W
@Override
public void onClick(AjaxRequestTarget target) {
-
target.add(((MainPage)getPage()).getContents().replace(new
SettingsPanel("child", EDIT_PROFILE_TAB_ID)));
+
((MainPage)getPage()).updateContents(PROFILE_EDIT, target);
}
});
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/rooms/RoomsSelectorPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/rooms/RoomsSelectorPanel.java?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/rooms/RoomsSelectorPanel.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/components/user/rooms/RoomsSelectorPanel.java
Tue May 14 11:23:17 2013
@@ -21,8 +21,8 @@ package org.apache.openmeetings.web.comp
import org.apache.openmeetings.data.conference.dao.RoomDao;
import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.app.WebSession;
-import org.apache.openmeetings.web.components.MenuPanel.MenuParams;
import org.apache.openmeetings.web.components.UserPanel;
+import org.apache.openmeetings.web.util.UrlFragment.MenuParams;
import org.apache.wicket.markup.html.basic.Label;
public class RoomsSelectorPanel extends UserPanel {
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/BasePage.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/BasePage.java?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/BasePage.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/BasePage.java
Tue May 14 11:23:17 2013
@@ -18,22 +18,33 @@
*/
package org.apache.openmeetings.web.pages;
+import java.util.HashMap;
+import java.util.Map;
+
import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
import org.apache.openmeetings.persistence.beans.lang.FieldLanguage;
import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.components.HeaderPanel;
+import org.apache.openmeetings.web.util.UrlFragment;
+import org.apache.openmeetings.web.util.UrlFragment.AreaKeys;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
-import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.util.string.StringValue;
+import org.wicketstuff.urlfragment.AsyncUrlFragmentAwarePage;
-public abstract class BasePage extends WebPage {
+public abstract class BasePage extends AsyncUrlFragmentAwarePage {
private static final long serialVersionUID = -6237917782433412496L;
+ private final Map<String, String> options;
public BasePage() {
+ options = new HashMap<String, String>();
+ options.put("fragmentIdentifierSuffix", "");
+ options.put("keyValueDelimiter", "/");
String appName =
Application.getBean(ConfigurationDao.class).getAppName();
FieldLanguage lang = WebSession.getLanguageObj();
@@ -46,6 +57,21 @@ public abstract class BasePage extends W
add(new HeaderPanel("header", appName));
}
+ protected UrlFragment getUrlFragment(IRequestParameters params) {
+ for (AreaKeys key : AreaKeys.values()) {
+ StringValue type = params.getParameterValue(key.name());
+ if (!type.isEmpty()) {
+ return new UrlFragment(key, type.toString());
+ }
+ }
+ return null;
+ }
+
+ @Override
+ protected Map<String, String> getOptions() {
+ return options;
+ }
+
@Override
public void renderHead(IHeaderResponse response) {
response.render(JavaScriptHeaderItem.forReference(Application.get()
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.java
Tue May 14 11:23:17 2013
@@ -19,17 +19,22 @@
package org.apache.openmeetings.web.pages;
import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
-import static
org.apache.openmeetings.web.components.user.profile.SettingsPanel.MESSAGES_TAB_ID;
-import static
org.apache.openmeetings.web.components.user.profile.SettingsPanel.PROFILE_TAB_ID;
+import static org.apache.openmeetings.web.util.UrlFragment.CHILD_ID;
+import static org.apache.openmeetings.web.util.UrlFragment.DASHBOARD;
+import static org.apache.openmeetings.web.util.UrlFragment.PROFILE_EDIT;
+import static org.apache.openmeetings.web.util.UrlFragment.PROFILE_MESSAGES;
+import static org.apache.openmeetings.web.util.UrlFragment.getPanel;
import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.components.BasePanel;
import org.apache.openmeetings.web.components.ConfirmableAjaxLink;
import org.apache.openmeetings.web.components.MenuPanel;
import org.apache.openmeetings.web.components.user.AboutDialog;
import org.apache.openmeetings.web.components.user.ChatPanel;
-import org.apache.openmeetings.web.components.user.dashboard.OmDashboardPanel;
-import org.apache.openmeetings.web.components.user.profile.SettingsPanel;
+import org.apache.openmeetings.web.util.UrlFragment;
import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import
org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
@@ -38,8 +43,11 @@ import org.apache.wicket.markup.html.lin
import org.apache.wicket.protocol.ws.api.WebSocketBehavior;
import org.apache.wicket.protocol.ws.api.message.ClosedMessage;
import org.apache.wicket.protocol.ws.api.message.ConnectedMessage;
+import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.util.time.Duration;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
+import org.wicketstuff.urlfragment.UrlParametersReceivingBehavior;
@AuthorizeInstantiation("USER")
public class MainPage extends BasePage {
@@ -50,17 +58,15 @@ public class MainPage extends BasePage {
public MainPage() {
contents = new WebMarkupContainer("contents");
- //FIXME need to be generalized with MenuPanel
- contents.add(new
OmDashboardPanel("child")).setOutputMarkupId(true).setMarkupId("contents");
- add(contents);
- menu = new MenuPanel("menu", contents);
+ add(contents.add(new
WebMarkupContainer(CHILD_ID)).setOutputMarkupId(true).setMarkupId("contents"));
+ menu = new MenuPanel("menu");
add(menu);
add(new AjaxLink<Void>("messages") {
private static final long serialVersionUID =
4065339709905366840L;
@Override
public void onClick(AjaxRequestTarget target) {
- target.add(contents.replace(new
SettingsPanel("child", MESSAGES_TAB_ID)));
+ updateContents(PROFILE_EDIT, target);
}
});
add(new ConfirmableAjaxLink("logout", 634L) {
@@ -77,7 +83,7 @@ public class MainPage extends BasePage {
@Override
public void onClick(AjaxRequestTarget target) {
- target.add(contents.replace(new
SettingsPanel("child", PROFILE_TAB_ID)));
+ updateContents(PROFILE_MESSAGES, target);
}
});
final AboutDialog about = new AboutDialog("aboutDialog");
@@ -108,9 +114,34 @@ public class MainPage extends BasePage {
log.debug("WebSocketBehavior::onClose");
}
});
+ //load preselected content
+ add(new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
+ private static final long serialVersionUID =
-1551197896975384329L;
+
+ @Override
+ protected void onTimer(AjaxRequestTarget target) {
+ UrlFragment area = WebSession.get().getArea();
+ updateContents(area == null ? DASHBOARD : area,
target);
+ stop(target);
+ }
+ });
+ }
+
+ public void updateContents(UrlFragment f, AjaxRequestTarget target) {
+ BasePanel panel = getPanel(f.getArea(), f.getType());
+ if (panel != null) {
+ target.add(contents.replace(panel));
+ //FIXME need to be uncommented later
UrlParametersReceivingBehavior.setFragment(target, f.getArea().name(),
f.getType());
+
UrlParametersReceivingBehavior.setFragmentParameter(target, f.getArea().name(),
f.getType());
+ panel.onMenuPanelLoad(target);
+ }
}
- public MarkupContainer getContents() {
- return contents;
+ @Override
+ protected void onParameterArrival(IRequestParameters params,
AjaxRequestTarget target) {
+ UrlFragment uf = getUrlFragment(params);
+ if (uf != null) {
+ updateContents(uf, target);
+ }
}
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.html?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.html
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.html
Tue May 14 11:23:17 2013
@@ -45,7 +45,6 @@
</tr>
</table>
<span wicket:id="feedback"></span>
- <input wicket:id="area" type="hidden" value="" />
<input type="submit" wicket:id="submit" style="position:
absolute; top: -9999px; width: 1px; height: 1px;"/>
</form>
</wicket:panel>
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInDialog.java
Tue May 14 11:23:17 2013
@@ -40,7 +40,6 @@ import org.apache.wicket.markup.html.for
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.HiddenField;
import org.apache.wicket.markup.html.form.PasswordTextField;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.form.StatelessForm;
@@ -59,7 +58,6 @@ public class SignInDialog extends Abstra
private DialogButton registerBtn = new
DialogButton(WebSession.getString(123));
private String password;
private String login;
- private String area = "";
private boolean rememberMe = false;
private RegisterDialog r;
private ForgetPasswordDialog f;
@@ -149,7 +147,6 @@ public class SignInDialog extends Abstra
ldapConfigFileName = domain.getConfigFileName() == null ? "" :
domain.getConfigFileName();
OmAuthenticationStrategy strategy = getAuthenticationStrategy();
if (WebSession.get().signIn(login, password,
ldapConfigFileName)) {
- WebSession.get().setArea(area);
setResponsePage(Application.get().getHomePage());
if (rememberMe) {
strategy.save(login, password,
ldapConfigFileName);
@@ -198,9 +195,6 @@ public class SignInDialog extends Abstra
.add(new DropDownChoice<LdapConfig>("domain",
new PropertyModel<LdapConfig>(SignInDialog.this, "domain")
, ldaps, new
ChoiceRenderer<LdapConfig>("name", "ldapConfigId"))).setVisible(ldaps.size() >
1));
add(new CheckBox("rememberMe", new
PropertyModel<Boolean>(SignInDialog.this,
"rememberMe")).setOutputMarkupId(true));
- add(new HiddenField<String>("area", new
PropertyModel<String>(SignInDialog.this, "area"))
- .setMarkupId("area")
- .setOutputMarkupId(true));
add(new AjaxButton("submit") { //FAKE button so
"submit-on-enter" works as expected
private static final long serialVersionUID =
-3612671587183668912L;
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java?rev=1482302&r1=1482301&r2=1482302&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.java
Tue May 14 11:23:17 2013
@@ -22,9 +22,12 @@ import static org.apache.openmeetings.pe
import static org.apache.openmeetings.web.app.Application.getBean;
import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
+import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.pages.BasePage;
+import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.request.IRequestParameters;
import org.apache.wicket.request.mapper.parameter.PageParameters;
public class SignInPage extends BasePage {
@@ -56,4 +59,9 @@ public class SignInPage extends BasePage
//TODO need to be removed if autoOen will be enabled
response.render(OnDomReadyHeaderItem.forScript("$('#" +
d.getMarkupId() + "').dialog('open');"));
}
+
+ @Override
+ protected void onParameterArrival(IRequestParameters params,
AjaxRequestTarget arg1) {
+ WebSession.get().setArea(getUrlFragment(params));
+ }
}
Added:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UrlFragment.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UrlFragment.java?rev=1482302&view=auto
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UrlFragment.java
(added)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/util/UrlFragment.java
Tue May 14 11:23:17 2013
@@ -0,0 +1,249 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") + you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.util;
+
+import static
org.apache.openmeetings.web.components.user.profile.SettingsPanel.EDIT_PROFILE_TAB_ID;
+import static
org.apache.openmeetings.web.components.user.profile.SettingsPanel.MESSAGES_TAB_ID;
+
+import java.io.Serializable;
+
+import org.apache.openmeetings.web.components.BasePanel;
+import org.apache.openmeetings.web.components.admin.backup.BackupPanel;
+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.openmeetings.web.components.user.dashboard.OmDashboardPanel;
+import org.apache.openmeetings.web.components.user.profile.SettingsPanel;
+import org.apache.openmeetings.web.components.user.rooms.RoomsSelectorPanel;
+
+public class UrlFragment implements Serializable {
+ private static final long serialVersionUID = 7382435810352033914L;
+ private AreaKeys area = AreaKeys.user;
+ private String type = "";
+ public static final String CHILD_ID = "child";
+ public static final String TYPE_CALENDAR = "calendar";
+ public static final String TYPE_MESSAGES = "messages";
+ public static final String TYPE_EDIT = "edit";
+ public static final String TYPE_RECORDINGS = "record";
+ public static final String TYPE_MY = "my";
+ public static final String TYPE_GROUP = "group";
+ public static final String TYPE_PUBLIC = "public";
+ public static final String TYPE_USER = "user";
+ public static final String TYPE_CONNECTION = "connection";
+ public static final String TYPE_ROOM = "room";
+ public static final String TYPE_CONFIG = "config";
+ public static final String TYPE_LANG = "lang";
+ public static final String TYPE_LDAP = "ldap";
+ public static final String TYPE_BACKUP = "backup";
+ public static final String TYPE_SERVER = "server";
+ public static final UrlFragment DASHBOARD = new
UrlFragment(AreaKeys.user, "");
+ public static final UrlFragment PROFILE_EDIT = new
UrlFragment(AreaKeys.profile, TYPE_EDIT);
+ public static final UrlFragment PROFILE_MESSAGES = new
UrlFragment(AreaKeys.profile, TYPE_MESSAGES);
+ public static final UrlFragment CALENDAR = new
UrlFragment(AreaKeys.user, TYPE_CALENDAR);
+
+ public enum AreaKeys {
+ user
+ , admin
+ , profile
+ , room
+ , rooms
+ }
+
+ public enum MenuActions {
+ dashboardModuleStartScreen
+ , dashboardModuleCalendar
+ , recordModule
+ , conferenceModuleRoomList
+ , eventModuleRoomList
+ , moderatorModuleUser
+ , moderatorModuleRoom
+ , adminModuleUser
+ , adminModuleConnections
+ , adminModuleOrg
+ , adminModuleRoom
+ , adminModuleConfiguration
+ , adminModuleLanguages
+ , adminModuleLDAP
+ , adminModuleBackup
+ , adminModuleServers
+ }
+
+ public enum MenuParams {
+ publicTabButton
+ , privateTabButton
+ , myTabButton
+ }
+
+ public UrlFragment(AreaKeys area, String type) {
+ this.setArea(area);
+ this.setType(type);
+ }
+
+ public UrlFragment(MenuActions action) {
+ this(action, MenuParams.myTabButton);
+ }
+
+ public UrlFragment(MenuActions action, MenuParams params) {
+ switch(action) {
+ case dashboardModuleStartScreen:
+ break;
+ case dashboardModuleCalendar:
+ setArea(AreaKeys.user);
+ setType(TYPE_CALENDAR);
+ break;
+ case recordModule:
+ setArea(AreaKeys.user);
+ setType(TYPE_RECORDINGS);
+ break;
+ case conferenceModuleRoomList:
+ setArea(AreaKeys.rooms);
+ switch (params) {
+ case myTabButton:
+ setType(TYPE_MY);
+ break;
+ case privateTabButton:
+ setType(TYPE_GROUP);
+ break;
+ case publicTabButton:
+ setType(TYPE_PUBLIC);
+ break;
+ }
+ break;
+ case eventModuleRoomList:
+ break;
+ case moderatorModuleUser:
+ break;
+ case moderatorModuleRoom:
+ break;
+ case adminModuleUser:
+ setArea(AreaKeys.admin);
+ setType(TYPE_USER);
+ break;
+ case adminModuleConnections:
+ setArea(AreaKeys.admin);
+ setType(TYPE_CONNECTION);
+ break;
+ case adminModuleOrg:
+ setArea(AreaKeys.admin);
+ setType(TYPE_GROUP);
+ break;
+ case adminModuleRoom:
+ setArea(AreaKeys.admin);
+ setType(TYPE_ROOM);
+ break;
+ case adminModuleConfiguration:
+ setArea(AreaKeys.admin);
+ setType(TYPE_CONFIG);
+ break;
+ case adminModuleLanguages:
+ setArea(AreaKeys.admin);
+ setType(TYPE_LANG);
+ break;
+ case adminModuleLDAP:
+ setArea(AreaKeys.admin);
+ setType(TYPE_LDAP);
+ break;
+ case adminModuleBackup:
+ setArea(AreaKeys.admin);
+ setType(TYPE_BACKUP);
+ break;
+ case adminModuleServers:
+ setArea(AreaKeys.admin);
+ setType(TYPE_SERVER);
+ break;
+ }
+ }
+
+ public AreaKeys getArea() {
+ return area;
+ }
+
+ public void setArea(AreaKeys area) {
+ this.area = area;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public static BasePanel getPanel(AreaKeys area, String type) {
+ BasePanel basePanel = null;
+ switch(area) {
+ case admin:
+ if (TYPE_USER.equals(type)) {
+ basePanel = new UsersPanel(CHILD_ID);
+ } else if (TYPE_CONNECTION.equals(type)) {
+ } else if (TYPE_GROUP.equals(type)) {
+ basePanel = new GroupsPanel(CHILD_ID);
+ } else if (TYPE_ROOM.equals(type)) {
+ basePanel = new RoomsPanel(CHILD_ID);
+ } else if (TYPE_CONFIG.equals(type)) {
+ basePanel = new ConfigsPanel(CHILD_ID);
+ } else if (TYPE_LANG.equals(type)) {
+ basePanel = new LangPanel(CHILD_ID);
+ } else if (TYPE_LDAP.equals(type)) {
+ basePanel = new LdapsPanel(CHILD_ID);
+ } else if (TYPE_BACKUP.equals(type)) {
+ basePanel = new BackupPanel(CHILD_ID);
+ } else if (TYPE_SERVER.equals(type)) {
+ basePanel = new ServersPanel(CHILD_ID);
+ }
+ break;
+ case profile:
+ if (TYPE_MESSAGES.equals(type)) {
+ basePanel = new SettingsPanel(CHILD_ID,
MESSAGES_TAB_ID);
+ } else if (TYPE_EDIT.equals(type)) {
+ basePanel = new SettingsPanel(CHILD_ID,
EDIT_PROFILE_TAB_ID);
+ }
+ break;
+ case room:
+ break;
+ case rooms:
+ MenuParams params = MenuParams.publicTabButton;
+ if (TYPE_GROUP.equals(type)) {
+ params = MenuParams.privateTabButton;
+ } else if (TYPE_MY.equals(type)) {
+ params = MenuParams.myTabButton;
+ }
+ basePanel = new RoomsSelectorPanel(CHILD_ID,
params);
+ break;
+ case user:
+ if (TYPE_CALENDAR.equals(type)) {
+ basePanel = new CalendarPanel(CHILD_ID);
+ } else if (TYPE_RECORDINGS.equals(type)) {
+ //
+ } else {
+ basePanel = new
OmDashboardPanel(CHILD_ID);
+ }
+ break;
+ default:
+ break;
+ }
+ return basePanel;
+ }
+}