Author: solomax
Date: Mon Aug 25 14:28:41 2014
New Revision: 1620328
URL: http://svn.apache.org/r1620328
Log:
[OPENMEETINGS-1038] widgets are better controlled using config
Added:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java
- copied, changed from r1620327,
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidget.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java
- copied, changed from r1620300,
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetDescriptor.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.html
- copied unchanged from r1620300,
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.html
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
- copied, changed from r1620300,
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/UserDashboard.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java
- copied, changed from r1620327,
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidget.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java
- copied, changed from r1620300,
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetDescriptor.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.html
- copied unchanged from r1620300,
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.html
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
- copied, changed from r1620300,
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboard.java
Removed:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidget.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetDescriptor.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.html
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidget.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetDescriptor.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.html
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.java
Modified:
openmeetings/branches/3.0.x/ivysettings.xml
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/FormatHelper.java
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FormatHelper.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
Modified: openmeetings/branches/3.0.x/ivysettings.xml
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/ivysettings.xml?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/ivysettings.xml (original)
+++ openmeetings/branches/3.0.x/ivysettings.xml Mon Aug 25 14:28:41 2014
@@ -19,6 +19,7 @@
<chain name="chain">
<ibiblio name="central" m2compatible="true"/>
<ibiblio name="apache-public" m2compatible="true"
root="https://repository.apache.org/content/groups/public" />
+ <ibiblio name="apache-snapshot" m2compatible="true"
root="https://repository.apache.org/content/groups/snapshots" />
<url name="mavencentral">
<artifact
pattern="http://repo1.maven.org/maven2/[organisation]/[artifact]-[revision].[ext]"
/>
</url>
Modified:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application.java
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application.java
(original)
+++
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/Application.java
Mon Aug 25 14:28:41 2014
@@ -40,7 +40,7 @@ import org.apache.openmeetings.web.pages
import org.apache.openmeetings.web.pages.SwfPage;
import org.apache.openmeetings.web.pages.auth.SignInPage;
import org.apache.openmeetings.web.pages.install.InstallWizardPage;
-import org.apache.openmeetings.web.user.dashboard.PrivateRoomsWidgetDescriptor;
+import org.apache.openmeetings.web.user.dashboard.MyRoomsWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.RssWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.StartWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.WelcomeWidgetDescriptor;
@@ -112,7 +112,7 @@ public class Application extends Authent
dashboardContext = new DashboardContext();
dashboardContext.setDashboardPersiter(new
UserDashboardPersister());
WidgetRegistry widgetRegistry =
dashboardContext.getWidgetRegistry();
- widgetRegistry.registerWidget(new
PrivateRoomsWidgetDescriptor());
+ widgetRegistry.registerWidget(new MyRoomsWidgetDescriptor());
widgetRegistry.registerWidget(new WelcomeWidgetDescriptor());
widgetRegistry.registerWidget(new StartWidgetDescriptor());
widgetRegistry.registerWidget(new RssWidgetDescriptor());
Modified:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java
(original)
+++
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java
Mon Aug 25 14:28:41 2014
@@ -33,6 +33,7 @@ import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
@@ -58,11 +59,14 @@ import org.apache.openmeetings.db.util.T
import org.apache.openmeetings.ldap.LdapLoginManagement;
import org.apache.openmeetings.util.OmException;
import org.apache.openmeetings.web.pages.SwfPage;
-import org.apache.openmeetings.web.user.dashboard.PrivateRoomsWidgetDescriptor;
+import org.apache.openmeetings.web.user.dashboard.MyRoomsWidget;
+import org.apache.openmeetings.web.user.dashboard.MyRoomsWidgetDescriptor;
+import org.apache.openmeetings.web.user.dashboard.RssWidget;
import org.apache.openmeetings.web.user.dashboard.RssWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.StartWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.WelcomeWidgetDescriptor;
import org.apache.openmeetings.web.util.OmUrlFragment;
+import org.apache.openmeetings.web.util.UserDashboard;
import org.apache.wicket.RestartResponseAtInterceptPageException;
import org.apache.wicket.authentication.IAuthenticationStrategy;
import
org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession;
@@ -75,13 +79,13 @@ import org.apache.wicket.util.string.Str
import org.apache.wicket.util.string.Strings;
import ro.fortsoft.wicket.dashboard.Dashboard;
-import ro.fortsoft.wicket.dashboard.DefaultDashboard;
import ro.fortsoft.wicket.dashboard.Widget;
import ro.fortsoft.wicket.dashboard.WidgetFactory;
import ro.fortsoft.wicket.dashboard.web.DashboardContext;
public class WebSession extends AbstractAuthenticatedWebSession {
private static final long serialVersionUID = 1123393236459095315L;
+
public static int MILLIS_IN_MINUTE = 60000;
//private static final Map<String, Locale> LNG_TO_LOCALE_MAP = new
HashMap<String, Locale> ();
private long userId = -1;
@@ -94,7 +98,7 @@ public class WebSession extends Abstract
public final static String ISO8601_FORMAT_STRING =
"yyyy-MM-dd'T'HH:mm:ssZ";
private DateFormat ISO8601FORMAT = new
SimpleDateFormat(ISO8601_FORMAT_STRING); //FIXME not thread safe
private DateFormat sdf;
- private Dashboard dashboard;
+ private UserDashboard dashboard;
private Locale browserLocale = null;
private Long recordingId;
private Long loginError = null;
@@ -441,25 +445,59 @@ public class WebSession extends Abstract
private void initDashboard() {
DashboardContext dashboardContext = getDashboardContext();
- dashboard = dashboardContext.getDashboardPersiter().load();
+ dashboard =
(UserDashboard)dashboardContext.getDashboardPersiter().load();
+ boolean existMyRoomWidget = false, existRssWidget = false;
+ ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+ boolean confShowMyRooms = 1 ==
cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_MYROOMS_KEY, Integer.class, "0");
+ boolean confShowRss = 1 ==
cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_RSS_KEY, Integer.class, "0");
+ boolean save = false;
+
+ WidgetFactory widgetFactory =
dashboardContext.getWidgetFactory();
+
if (dashboard == null) {
- dashboard = new DefaultDashboard("default", "Default");
-
- WidgetFactory widgetFactory =
dashboardContext.getWidgetFactory();
+ dashboard = new UserDashboard("default", "Default");
+
dashboard.addWidget(widgetFactory.createWidget(new
WelcomeWidgetDescriptor()));
dashboard.addWidget(widgetFactory.createWidget(new
StartWidgetDescriptor()));
- ConfigurationDao cfgDao =
getBean(ConfigurationDao.class);
- if (1 ==
cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_MYROOMS_KEY, Integer.class, "0")) {
-
dashboard.addWidget(widgetFactory.createWidget(new
PrivateRoomsWidgetDescriptor()));
+ if (confShowMyRooms) {
+
dashboard.addWidget(widgetFactory.createWidget(new MyRoomsWidgetDescriptor()));
}
- if (1 ==
cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_RSS_KEY, Integer.class, "0")) {
+ if (confShowRss) {
dashboard.addWidget(widgetFactory.createWidget(new RssWidgetDescriptor()));
}
- dashboardContext.getDashboardPersiter().save(dashboard);
+ save = true;
} else {
- for (Widget w : dashboard.getWidgets()) {
- w.init();
+ for (Iterator<Widget> iter =
dashboard.getWidgets().iterator(); iter.hasNext();) {
+ Widget w = iter.next();
+ // PrivateRoomWidget is stored in the profile
of user. Now, Show_MyRooms_key is disable.
+ if (w.getClass().equals(MyRoomsWidget.class)) {
+ existMyRoomWidget = true;
+ if (!confShowMyRooms) {
+ iter.remove();
+ }
+ } else if
((w.getClass().equals(RssWidget.class))) {
+ // RssWidget is stored in the profile
of user. Now, Show_RSS_Key is disable.
+ existRssWidget = true;
+ if (!confShowRss) {
+ iter.remove();
+ }
+ } else {
+ w.init();
+ }
+ }
+ // PrivateRoomWidget was deleted from profile and now
it's enabled. It's added again to dashboard.
+ if (!existMyRoomWidget && confShowMyRooms &&
!dashboard.isWidgetMyRoomsDeleted()) {
+
dashboard.addWidget(widgetFactory.createWidget(new MyRoomsWidgetDescriptor()));
+ save = true;
+ }
+ // RssWidget was deleted from profile and now it's
enabled. It's added again to dashboard.
+ if (!existRssWidget && confShowRss &&
!dashboard.isWidgetRssDeleted()) {
+
dashboard.addWidget(widgetFactory.createWidget(new RssWidgetDescriptor()));
+ save = true;
}
}
+ if (save) {
+ dashboardContext.getDashboardPersiter().save(dashboard);
+ }
}
}
Copied:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java
(from r1620327,
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidget.java)
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java?p2=openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java&p1=openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidget.java&r1=1620327&r2=1620328&rev=1620328&view=diff
==============================================================================
---
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidget.java
(original)
+++
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java
Mon Aug 25 14:28:41 2014
@@ -26,10 +26,11 @@ import ro.fortsoft.wicket.dashboard.Widg
import ro.fortsoft.wicket.dashboard.WidgetLocation;
import ro.fortsoft.wicket.dashboard.web.WidgetView;
-public class PrivateRoomsWidget extends AbstractWidget {
- private static final long serialVersionUID = 1769428980617610979L;
+public class MyRoomsWidget extends AbstractWidget {
+ private static final long serialVersionUID = 1L;
+ public static final String WIDGET_ID_MY_ROOMS = "MyRoomsWidget";
- public PrivateRoomsWidget() {
+ public MyRoomsWidget() {
super();
location = new WidgetLocation(0, 1);
init();
@@ -39,9 +40,10 @@ public class PrivateRoomsWidget extends
public void init() {
super.init();
title = WebSession.getString(781L);
+ id = WIDGET_ID_MY_ROOMS;
}
public WidgetView createView(String viewId) {
- return new PrivateRoomsWidgetView(viewId, new
Model<Widget>(this));
+ return new MyRoomsWidgetView(viewId, new Model<Widget>(this));
}
}
Copied:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java
(from r1620300,
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetDescriptor.java)
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java?p2=openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java&p1=openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetDescriptor.java&r1=1620300&r2=1620328&rev=1620328&view=diff
==============================================================================
---
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetDescriptor.java
(original)
+++
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java
Mon Aug 25 14:28:41 2014
@@ -22,8 +22,8 @@ import org.apache.openmeetings.web.app.W
import ro.fortsoft.wicket.dashboard.WidgetDescriptor;
-public class PrivateRoomsWidgetDescriptor implements WidgetDescriptor {
- private static final long serialVersionUID = 389662353299319574L;
+public class MyRoomsWidgetDescriptor implements WidgetDescriptor {
+ private static final long serialVersionUID = 1L;
public String getName() {
return WebSession.getString(781L);
@@ -38,10 +38,10 @@ public class PrivateRoomsWidgetDescripto
}
public String getWidgetClassName() {
- return PrivateRoomsWidget.class.getName();
+ return MyRoomsWidget.class.getName();
}
public String getTypeName() {
- return "om.widget.privaterooms";
+ return "om.widget.myrooms";
}
}
Copied:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
(from r1620300,
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.java)
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java?p2=openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java&p1=openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.java&r1=1620300&r2=1620328&rev=1620328&view=diff
==============================================================================
---
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.java
(original)
+++
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
Mon Aug 25 14:28:41 2014
@@ -26,10 +26,10 @@ import org.apache.wicket.model.Model;
import ro.fortsoft.wicket.dashboard.Widget;
import ro.fortsoft.wicket.dashboard.web.WidgetView;
-public class PrivateRoomsWidgetView extends WidgetView {
- private static final long serialVersionUID = 6950427893821991173L;
+public class MyRoomsWidgetView extends WidgetView {
+ private static final long serialVersionUID = 1L;
- public PrivateRoomsWidgetView(String id, Model<Widget> model) {
+ public MyRoomsWidgetView(String id, Model<Widget> model) {
super(id, model);
add(new RoomsPanel("rooms", getMyRooms()));
Modified:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
(original)
+++
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
Mon Aug 25 14:28:41 2014
@@ -27,7 +27,8 @@ import ro.fortsoft.wicket.dashboard.Widg
import ro.fortsoft.wicket.dashboard.web.WidgetView;
public class RssWidget extends AbstractWidget {
- private static final long serialVersionUID = 8866852061674736808L;
+ private static final long serialVersionUID = 1L;
+ public static final String WIDGET_ID_RSS = "RssWidget";
public RssWidget() {
super();
@@ -39,6 +40,7 @@ public class RssWidget extends AbstractW
public void init() {
super.init();
title = WebSession.getString(277L);
+ id = WIDGET_ID_RSS;
}
public WidgetView createView(String viewId) {
Modified:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
(original)
+++
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
Mon Aug 25 14:28:41 2014
@@ -27,7 +27,7 @@ import ro.fortsoft.wicket.dashboard.Widg
import ro.fortsoft.wicket.dashboard.web.WidgetView;
public class StartWidget extends AbstractWidget {
- private static final long serialVersionUID = 9060237325733825899L;
+ private static final long serialVersionUID = 1L;
public StartWidget() {
super();
@@ -39,6 +39,7 @@ public class StartWidget extends Abstrac
public void init() {
super.init();
title = WebSession.getString(774L);
+ id = "StartWidget";
}
public WidgetView createView(String viewId) {
Modified:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
(original)
+++
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
Mon Aug 25 14:28:41 2014
@@ -27,7 +27,7 @@ import ro.fortsoft.wicket.dashboard.Widg
import ro.fortsoft.wicket.dashboard.web.WidgetView;
public class WelcomeWidget extends AbstractWidget {
- private static final long serialVersionUID = 8866852061674736808L;
+ private static final long serialVersionUID = 1L;
public WelcomeWidget() {
super();
@@ -39,6 +39,7 @@ public class WelcomeWidget extends Abstr
public void init() {
super.init();
title = WebSession.getString(1546L);
+ id = "WelcomeWidget";
}
public WidgetView createView(String viewId) {
Modified:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
(original)
+++
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
Mon Aug 25 14:28:41 2014
@@ -35,12 +35,11 @@ import ro.fortsoft.wicket.dashboard.Widg
import ro.fortsoft.wicket.dashboard.web.DashboardContext;
public class WidgetsPanel extends Panel {
- private static final long serialVersionUID = -3959536582694664524L;
+ private static final long serialVersionUID = 1L;
private Widget isDisplayed(WidgetDescriptor wd) {
- //FIXME the only way to compare is By TITLE
for (Widget w : getDashboard().getWidgets()) {
- if (w.getTitle().equals(wd.getName())) {
+ if
(w.getClass().getName().equals(wd.getWidgetClassName())) {
return w;
}
}
@@ -59,7 +58,7 @@ public class WidgetsPanel extends Panel
item.add(new Label("name", wd.getName()));
item.add(new Label("description",
wd.getDescription()));
item.add(new AjaxCheckBox("display",
Model.of(isDisplayed(wd) != null)) {
- private static final long
serialVersionUID = -7079665921153653164L;
+ private static final long
serialVersionUID = 1L;
@Override
protected void
onUpdate(AjaxRequestTarget target) {
Modified:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/FormatHelper.java
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/FormatHelper.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/FormatHelper.java
(original)
+++
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/FormatHelper.java
Mon Aug 25 14:28:41 2014
@@ -30,8 +30,12 @@ public class FormatHelper {
// TODO check RIGHTS here (email might need to be hidden)
public static String formatUser(User u, boolean isHTMLEscape) {
- String email = u.getAdresses() == null ? "" :
u.getAdresses().getEmail();
- String user = u == null ? "" : String.format("\"%s %s\" <%s>",
u.getFirstname(), u.getLastname(), email);
- return isHTMLEscape ? escapeHtml4(user) : user;
+ String user = "";
+ if (u != null) {
+ String email = u.getAdresses() == null ? "" :
u.getAdresses().getEmail();
+ user = String.format("\"%s %s\" <%s>",
u.getFirstname(), u.getLastname(), email);
+ user = isHTMLEscape ? escapeHtml4(user) : user;
+ }
+ return user;
}
}
Added:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/UserDashboard.java
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/UserDashboard.java?rev=1620328&view=auto
==============================================================================
---
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/UserDashboard.java
(added)
+++
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/UserDashboard.java
Mon Aug 25 14:28:41 2014
@@ -0,0 +1,80 @@
+/*
+ * 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.user.dashboard.MyRoomsWidget.WIDGET_ID_MY_ROOMS;
+import static
org.apache.openmeetings.web.user.dashboard.RssWidget.WIDGET_ID_RSS;
+import ro.fortsoft.wicket.dashboard.DefaultDashboard;
+import ro.fortsoft.wicket.dashboard.Widget;
+
+public class UserDashboard extends DefaultDashboard {
+ private static final long serialVersionUID = 1L;
+ private boolean widgetRssDeleted = false;
+ private boolean widgetMyRoomsDeleted = false;
+
+ public UserDashboard(String id, String title) {
+ super(id, title);
+ }
+
+ public boolean isWidgetRssDeleted() {
+ return widgetRssDeleted;
+ }
+
+ public void setWidgetRssDeleted(boolean widgetRssDeleted) {
+ this.widgetRssDeleted = widgetRssDeleted;
+ }
+
+ public boolean isWidgetMyRoomsDeleted() {
+ return widgetMyRoomsDeleted;
+ }
+
+ public void setWidgetMyRoomsDeleted(boolean widgetMyRoomsDeleted) {
+ this.widgetMyRoomsDeleted = widgetMyRoomsDeleted;
+ }
+
+ @Override
+ public void deleteWidget(String widgetId) {
+ switch (widgetId) {
+ case WIDGET_ID_RSS:
+ widgetRssDeleted = true;
+ break;
+ case WIDGET_ID_MY_ROOMS:
+ widgetMyRoomsDeleted = true;
+ break;
+ default:
+ break;
+ }
+ super.deleteWidget(widgetId);
+ }
+
+ @Override
+ public void addWidget(Widget widget) {
+ switch (widget.getId()) {
+ case WIDGET_ID_RSS:
+ widgetRssDeleted = false;
+ break;
+ case WIDGET_ID_MY_ROOMS:
+ widgetMyRoomsDeleted = false;
+ break;
+ default:
+ break;
+ }
+ super.addWidget(widget);
+ }
+}
Modified:
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
URL:
http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/UserDashboardPersister.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
(original)
+++
openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
Mon Aug 25 14:28:41 2014
@@ -19,18 +19,71 @@
package org.apache.openmeetings.web.util;
import static org.apache.openmeetings.util.OmFileHelper.getUserDashboard;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.red5.logging.Red5LoggerFactory.getLogger;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.util.Collections;
+
+import org.slf4j.Logger;
+
import ro.fortsoft.wicket.dashboard.Dashboard;
import ro.fortsoft.wicket.dashboard.DashboardPersister;
-import ro.fortsoft.wicket.dashboard.XStreamDashboardPersister;
+import ro.fortsoft.wicket.dashboard.WidgetComparator;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
public class UserDashboardPersister implements DashboardPersister {
+ private static final Logger log =
getLogger(UserDashboardPersister.class, webAppRootKey);
+
public Dashboard load() {
- return new
XStreamDashboardPersister(getUserDashboard(getUserId())).load();
+ return new XStreamDashboardPersister().load();
}
public void save(Dashboard dashboard) {
- new
XStreamDashboardPersister(getUserDashboard(getUserId())).save(dashboard);
+ new XStreamDashboardPersister().save(dashboard);
}
+ public class XStreamDashboardPersister implements DashboardPersister {
+ private File file;
+ private XStream xstream;
+
+ public XStreamDashboardPersister() {
+ this.file = getUserDashboard(getUserId());
+
+ xstream = new XStream(new DomDriver("UTF-8"));
+ xstream.setMode(XStream.NO_REFERENCES);
+ xstream.alias("dashboard", UserDashboard.class);
+ }
+
+ @Override
+ public Dashboard load() {
+ if (!file.exists() || !file.isFile()) {
+ return null;
+ }
+
+ try {
+ return (Dashboard) xstream.fromXML(new
FileInputStream(file));
+ } catch (Exception e) {
+ log.error("Error while loading dashboard", e);
+ return null;
+ }
+ }
+
+ @Override
+ public void save(Dashboard dashboard) {
+ // sort widgets
+ Collections.sort(dashboard.getWidgets(), new
WidgetComparator());
+
+ try {
+ xstream.toXML(dashboard, new
FileOutputStream(file));
+ } catch (Exception e) {
+ log.error("Error while saving dashboard", e);
+ }
+ }
+ }
}
Modified:
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
Mon Aug 25 14:28:41 2014
@@ -49,7 +49,7 @@ import org.apache.openmeetings.web.pages
import org.apache.openmeetings.web.pages.SwfPage;
import org.apache.openmeetings.web.pages.auth.SignInPage;
import org.apache.openmeetings.web.pages.install.InstallWizardPage;
-import org.apache.openmeetings.web.user.dashboard.PrivateRoomsWidgetDescriptor;
+import org.apache.openmeetings.web.user.dashboard.MyRoomsWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.RssWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.StartWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.WelcomeWidgetDescriptor;
@@ -124,7 +124,7 @@ public class Application extends Authent
dashboardContext = new DashboardContext();
dashboardContext.setDashboardPersiter(new
UserDashboardPersister());
WidgetRegistry widgetRegistry =
dashboardContext.getWidgetRegistry();
- widgetRegistry.registerWidget(new
PrivateRoomsWidgetDescriptor());
+ widgetRegistry.registerWidget(new MyRoomsWidgetDescriptor());
widgetRegistry.registerWidget(new WelcomeWidgetDescriptor());
widgetRegistry.registerWidget(new StartWidgetDescriptor());
widgetRegistry.registerWidget(new RssWidgetDescriptor());
Modified:
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
Mon Aug 25 14:28:41 2014
@@ -33,6 +33,7 @@ import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
@@ -59,11 +60,14 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.util.TimezoneUtil;
import org.apache.openmeetings.util.OmException;
import org.apache.openmeetings.web.pages.SwfPage;
-import org.apache.openmeetings.web.user.dashboard.PrivateRoomsWidgetDescriptor;
+import org.apache.openmeetings.web.user.dashboard.MyRoomsWidget;
+import org.apache.openmeetings.web.user.dashboard.MyRoomsWidgetDescriptor;
+import org.apache.openmeetings.web.user.dashboard.RssWidget;
import org.apache.openmeetings.web.user.dashboard.RssWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.StartWidgetDescriptor;
import org.apache.openmeetings.web.user.dashboard.WelcomeWidgetDescriptor;
import org.apache.openmeetings.web.util.OmUrlFragment;
+import org.apache.openmeetings.web.util.UserDashboard;
import org.apache.wicket.RestartResponseAtInterceptPageException;
import org.apache.wicket.authentication.IAuthenticationStrategy;
import
org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession;
@@ -76,7 +80,6 @@ import org.apache.wicket.util.string.Str
import org.apache.wicket.util.string.Strings;
import ro.fortsoft.wicket.dashboard.Dashboard;
-import ro.fortsoft.wicket.dashboard.DefaultDashboard;
import ro.fortsoft.wicket.dashboard.Widget;
import ro.fortsoft.wicket.dashboard.WidgetFactory;
import ro.fortsoft.wicket.dashboard.web.DashboardContext;
@@ -95,7 +98,7 @@ public class WebSession extends Abstract
public final static String ISO8601_FORMAT_STRING =
"yyyy-MM-dd'T'HH:mm:ssZ";
private DateFormat ISO8601FORMAT = new
SimpleDateFormat(ISO8601_FORMAT_STRING); //FIXME not thread safe
private DateFormat sdf;
- private Dashboard dashboard;
+ private UserDashboard dashboard;
private Locale browserLocale = null;
private Long recordingId;
private Long loginError = null;
@@ -442,26 +445,60 @@ public class WebSession extends Abstract
private void initDashboard() {
DashboardContext dashboardContext = getDashboardContext();
- dashboard = dashboardContext.getDashboardPersiter().load();
+ dashboard =
(UserDashboard)dashboardContext.getDashboardPersiter().load();
+ boolean existMyRoomWidget = false, existRssWidget = false;
+ ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+ boolean showMyRoomConfValue = 1 ==
cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_MYROOMS_KEY, Integer.class, "0");
+ boolean showRssConfValue = 1 ==
cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_RSS_KEY, Integer.class, "0");
+ boolean save = false;
+
+ WidgetFactory widgetFactory =
dashboardContext.getWidgetFactory();
+
if (dashboard == null) {
- dashboard = new DefaultDashboard("default", "Default");
-
- WidgetFactory widgetFactory =
dashboardContext.getWidgetFactory();
+ dashboard = new UserDashboard("default", "Default");
+
dashboard.addWidget(widgetFactory.createWidget(new
WelcomeWidgetDescriptor()));
dashboard.addWidget(widgetFactory.createWidget(new
StartWidgetDescriptor()));
- ConfigurationDao cfgDao =
getBean(ConfigurationDao.class);
- if (1 ==
cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_MYROOMS_KEY, Integer.class, "0")) {
-
dashboard.addWidget(widgetFactory.createWidget(new
PrivateRoomsWidgetDescriptor()));
+ if (showMyRoomConfValue) {
+
dashboard.addWidget(widgetFactory.createWidget(new MyRoomsWidgetDescriptor()));
}
- if (1 ==
cfgDao.getConfValue(CONFIG_DASHBOARD_SHOW_RSS_KEY, Integer.class, "0")) {
+ if (showRssConfValue) {
dashboard.addWidget(widgetFactory.createWidget(new RssWidgetDescriptor()));
}
- dashboardContext.getDashboardPersiter().save(dashboard);
+ save = true;
} else {
- for (Widget w : dashboard.getWidgets()) {
- w.init();
+ for (Iterator<Widget> iter =
dashboard.getWidgets().iterator(); iter.hasNext();) {
+ Widget w = iter.next();
+ // PrivateRoomWidget is stored in the profile
of user. Now, Show_MyRooms_key is disable.
+ if (w.getClass().equals(MyRoomsWidget.class)) {
+ existMyRoomWidget = true;
+ if (!showMyRoomConfValue) {
+ iter.remove();
+ }
+ } else if
((w.getClass().equals(RssWidget.class))) {
+ // RssWidget is stored in the profile
of user. Now, Show_RSS_Key is disable.
+ existRssWidget = true;
+ if (!showRssConfValue) {
+ iter.remove();
+ }
+ } else {
+ w.init();
+ }
+ }
+ // PrivateRoomWidget was deleted from profile and now
it's enabled. It's added again to dashboard.
+ if (!existMyRoomWidget && showMyRoomConfValue &&
!dashboard.isWidgetMyRoomsDeleted()) {
+
dashboard.addWidget(widgetFactory.createWidget(new MyRoomsWidgetDescriptor()));
+ save = true;
+ }
+ // RssWidget was deleted from profile and now it's
enabled. It's added again to dashboard.
+ if (!existRssWidget && showRssConfValue &&
!dashboard.isWidgetRssDeleted()) {
+
dashboard.addWidget(widgetFactory.createWidget(new RssWidgetDescriptor()));
+ save = true;
}
}
+ if (save) {
+ dashboardContext.getDashboardPersiter().save(dashboard);
+ }
}
public String getOmString(long id) {
Copied:
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java
(from r1620327,
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidget.java)
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java?p2=openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java&p1=openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidget.java&r1=1620327&r2=1620328&rev=1620328&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidget.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidget.java
Mon Aug 25 14:28:41 2014
@@ -26,10 +26,11 @@ import ro.fortsoft.wicket.dashboard.Widg
import ro.fortsoft.wicket.dashboard.WidgetLocation;
import ro.fortsoft.wicket.dashboard.web.WidgetView;
-public class PrivateRoomsWidget extends AbstractWidget {
+public class MyRoomsWidget extends AbstractWidget {
private static final long serialVersionUID = 1L;
+ public static final String WIDGET_ID_MY_ROOMS = "MyRoomsWidget";
- public PrivateRoomsWidget() {
+ public MyRoomsWidget() {
super();
location = new WidgetLocation(0, 1);
init();
@@ -39,9 +40,10 @@ public class PrivateRoomsWidget extends
public void init() {
super.init();
title = WebSession.getString(781L);
+ id = WIDGET_ID_MY_ROOMS;
}
public WidgetView createView(String viewId) {
- return new PrivateRoomsWidgetView(viewId, new
Model<Widget>(this));
+ return new MyRoomsWidgetView(viewId, new Model<Widget>(this));
}
}
Copied:
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java
(from r1620300,
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetDescriptor.java)
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java?p2=openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java&p1=openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetDescriptor.java&r1=1620300&r2=1620328&rev=1620328&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetDescriptor.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetDescriptor.java
Mon Aug 25 14:28:41 2014
@@ -22,7 +22,7 @@ import org.apache.openmeetings.web.app.W
import ro.fortsoft.wicket.dashboard.WidgetDescriptor;
-public class PrivateRoomsWidgetDescriptor implements WidgetDescriptor {
+public class MyRoomsWidgetDescriptor implements WidgetDescriptor {
private static final long serialVersionUID = 1L;
public String getName() {
@@ -38,10 +38,10 @@ public class PrivateRoomsWidgetDescripto
}
public String getWidgetClassName() {
- return PrivateRoomsWidget.class.getName();
+ return MyRoomsWidget.class.getName();
}
public String getTypeName() {
- return "om.widget.privaterooms";
+ return "om.widget.myrooms";
}
}
Copied:
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
(from r1620300,
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.java)
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java?p2=openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java&p1=openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.java&r1=1620300&r2=1620328&rev=1620328&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/PrivateRoomsWidgetView.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/MyRoomsWidgetView.java
Mon Aug 25 14:28:41 2014
@@ -26,10 +26,10 @@ import org.apache.wicket.model.Model;
import ro.fortsoft.wicket.dashboard.Widget;
import ro.fortsoft.wicket.dashboard.web.WidgetView;
-public class PrivateRoomsWidgetView extends WidgetView {
+public class MyRoomsWidgetView extends WidgetView {
private static final long serialVersionUID = 1L;
- public PrivateRoomsWidgetView(String id, Model<Widget> model) {
+ public MyRoomsWidgetView(String id, Model<Widget> model) {
super(id, model);
add(new RoomsPanel("rooms", getMyRooms()));
Modified:
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/RssWidget.java
Mon Aug 25 14:28:41 2014
@@ -28,6 +28,7 @@ import ro.fortsoft.wicket.dashboard.web.
public class RssWidget extends AbstractWidget {
private static final long serialVersionUID = 1L;
+ public static final String WIDGET_ID_RSS = "RssWidget";
public RssWidget() {
super();
@@ -39,6 +40,7 @@ public class RssWidget extends AbstractW
public void init() {
super.init();
title = WebSession.getString(277L);
+ id = WIDGET_ID_RSS;
}
public WidgetView createView(String viewId) {
Modified:
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/StartWidget.java
Mon Aug 25 14:28:41 2014
@@ -39,6 +39,7 @@ public class StartWidget extends Abstrac
public void init() {
super.init();
title = WebSession.getString(774L);
+ id = "StartWidget";
}
public WidgetView createView(String viewId) {
Modified:
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/dashboard/WelcomeWidget.java
Mon Aug 25 14:28:41 2014
@@ -39,6 +39,7 @@ public class WelcomeWidget extends Abstr
public void init() {
super.init();
title = WebSession.getString(1546L);
+ id = "WelcomeWidget";
}
public WidgetView createView(String viewId) {
Modified:
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/WidgetsPanel.java
Mon Aug 25 14:28:41 2014
@@ -38,9 +38,8 @@ public class WidgetsPanel extends Panel
private static final long serialVersionUID = 1L;
private Widget isDisplayed(WidgetDescriptor wd) {
- //FIXME the only way to compare is By TITLE
for (Widget w : getDashboard().getWidgets()) {
- if (w.getTitle().equals(wd.getName())) {
+ if
(w.getClass().getName().equals(wd.getWidgetClassName())) {
return w;
}
}
Modified:
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FormatHelper.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FormatHelper.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FormatHelper.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FormatHelper.java
Mon Aug 25 14:28:41 2014
@@ -30,8 +30,12 @@ public class FormatHelper {
// TODO check RIGHTS here (email might need to be hidden)
public static String formatUser(User u, boolean isHTMLEscape) {
- String email = u.getAdresses() == null ? "" :
u.getAdresses().getEmail();
- String user = u == null ? "" : String.format("\"%s %s\" <%s>",
u.getFirstname(), u.getLastname(), email);
- return isHTMLEscape ? escapeHtml4(user) : user;
+ String user = "";
+ if (u != null) {
+ String email = u.getAdresses() == null ? "" :
u.getAdresses().getEmail();
+ user = String.format("\"%s %s\" <%s>",
u.getFirstname(), u.getLastname(), email);
+ user = isHTMLEscape ? escapeHtml4(user) : user;
+ }
+ return user;
}
}
Added:
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboard.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboard.java?rev=1620328&view=auto
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboard.java
(added)
+++
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboard.java
Mon Aug 25 14:28:41 2014
@@ -0,0 +1,80 @@
+/*
+ * 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.user.dashboard.MyRoomsWidget.WIDGET_ID_MY_ROOMS;
+import static
org.apache.openmeetings.web.user.dashboard.RssWidget.WIDGET_ID_RSS;
+import ro.fortsoft.wicket.dashboard.DefaultDashboard;
+import ro.fortsoft.wicket.dashboard.Widget;
+
+public class UserDashboard extends DefaultDashboard {
+ private static final long serialVersionUID = 1L;
+ private boolean widgetRssDeleted = false;
+ private boolean widgetMyRoomsDeleted = false;
+
+ public UserDashboard(String id, String title) {
+ super(id, title);
+ }
+
+ public boolean isWidgetRssDeleted() {
+ return widgetRssDeleted;
+ }
+
+ public void setWidgetRssDeleted(boolean widgetRssDeleted) {
+ this.widgetRssDeleted = widgetRssDeleted;
+ }
+
+ public boolean isWidgetMyRoomsDeleted() {
+ return widgetMyRoomsDeleted;
+ }
+
+ public void setWidgetMyRoomsDeleted(boolean widgetMyRoomsDeleted) {
+ this.widgetMyRoomsDeleted = widgetMyRoomsDeleted;
+ }
+
+ @Override
+ public void deleteWidget(String widgetId) {
+ switch (widgetId) {
+ case WIDGET_ID_RSS:
+ widgetRssDeleted = true;
+ break;
+ case WIDGET_ID_MY_ROOMS:
+ widgetMyRoomsDeleted = true;
+ break;
+ default:
+ break;
+ }
+ super.deleteWidget(widgetId);
+ }
+
+ @Override
+ public void addWidget(Widget widget) {
+ switch (widget.getId()) {
+ case WIDGET_ID_RSS:
+ widgetRssDeleted = false;
+ break;
+ case WIDGET_ID_MY_ROOMS:
+ widgetMyRoomsDeleted = false;
+ break;
+ default:
+ break;
+ }
+ super.addWidget(widget);
+ }
+}
Modified:
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java?rev=1620328&r1=1620327&r2=1620328&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
(original)
+++
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
Mon Aug 25 14:28:41 2014
@@ -19,18 +19,71 @@
package org.apache.openmeetings.web.util;
import static org.apache.openmeetings.util.OmFileHelper.getUserDashboard;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.red5.logging.Red5LoggerFactory.getLogger;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.util.Collections;
+
+import org.slf4j.Logger;
+
import ro.fortsoft.wicket.dashboard.Dashboard;
import ro.fortsoft.wicket.dashboard.DashboardPersister;
-import ro.fortsoft.wicket.dashboard.XStreamDashboardPersister;
+import ro.fortsoft.wicket.dashboard.WidgetComparator;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
public class UserDashboardPersister implements DashboardPersister {
+ private static final Logger log =
getLogger(UserDashboardPersister.class, webAppRootKey);
+
public Dashboard load() {
- return new
XStreamDashboardPersister(getUserDashboard(getUserId())).load();
+ return new XStreamDashboardPersister().load();
}
public void save(Dashboard dashboard) {
- new
XStreamDashboardPersister(getUserDashboard(getUserId())).save(dashboard);
+ new XStreamDashboardPersister().save(dashboard);
}
+ public class XStreamDashboardPersister implements DashboardPersister {
+ private File file;
+ private XStream xstream;
+
+ public XStreamDashboardPersister() {
+ this.file = getUserDashboard(getUserId());
+
+ xstream = new XStream(new DomDriver("UTF-8"));
+ xstream.setMode(XStream.NO_REFERENCES);
+ xstream.alias("dashboard", UserDashboard.class);
+ }
+
+ @Override
+ public Dashboard load() {
+ if (!file.exists() || !file.isFile()) {
+ return null;
+ }
+
+ try {
+ return (Dashboard) xstream.fromXML(new
FileInputStream(file));
+ } catch (Exception e) {
+ log.error("Error while loading dashboard", e);
+ return null;
+ }
+ }
+
+ @Override
+ public void save(Dashboard dashboard) {
+ // sort widgets
+ Collections.sort(dashboard.getWidgets(), new
WidgetComparator());
+
+ try {
+ xstream.toXML(dashboard, new
FileOutputStream(file));
+ } catch (Exception e) {
+ log.error("Error while saving dashboard", e);
+ }
+ }
+ }
}